字体大小相对于用户的屏幕分辨率?

我有一个stream畅的网站,菜单是其宽度的20%。 我想要正确测量菜单的字体大小,所以它总是适合框的宽度,而不会换行到下一行。 我正在考虑使用“em”作为单位,但它是相对于浏览器的字体大小,所以当我改变分辨率的字体大小保持不变。

也尝试了百分比和百分比。 没有任何工作,因为我需要它…

请给我一个如何进行的暗示。

@media screen and (max-device-width : 320px) { body or yourdiv element { font:<size>px/em/cm; } } @media screen and (max-device-width : 1204px) { body or yourdiv element { font:<size>px/em/cm; } } 

你可以根据屏幕大小手动给它。只要看看不同的屏幕大小,手动添加字体大小。

你可以使用em%px 。 但结合media-queries 请参阅此链接了解媒体查询。 此外,相对于当前的视口尺寸,CSS3有一些新的尺寸大小的值: vwvhvmin 。 看到有关的链接 。

我开发了一个很好的JS解决scheme – 适用于完全响应的HTML(即用百分比构build的HTML)

  1. 我只使用“em”来定义字体大小。

  2. HTML字体大小设置为10像素:

     html { font-size: 100%; font-size: 62.5%; } 
  3. 我在调用文档时调用了字体大小调整function:

//这需要JQuery

 function doResize() { // FONT SIZE var ww = $('body').width(); var maxW = [your design max-width here]; ww = Math.min(ww, maxW); var fw = ww*(10/maxW); var fpc = fw*100/16; var fpc = Math.round(fpc*100)/100; $('html').css('font-size',fpc+'%'); } 

有几种方法来实现这一点

使用媒体查询,但需要几个断点的字体大小

  body { font-size: 22px; } h1 { font-size:44px; } @media (min-width: 768) { body { font-size: 17px; } h1 { font-size:24px; } } 

使用%或em的尺寸。 只要改变基础字体大小,一切都会改变。 与以前的不同,您可以每次更改正文字体而不是h1,或者将字体大小设置为设备的默认字体,并全部放在em

  1. “Ems”(em) :“em”是一个可扩展的单位。 em等于当前字体大小,例如,如果文档的font-size是12pt,则1em等于12pt。 Ems在本质上是可扩展的,所以2em等于24pt,.5em等于6pt等。
  2. 百分比(%) :百分比单位非常像“em”单位,除了一些基本的差异。 首先,当前字体大小等于100%(即12pt = 100%)。 在使用百分比单位的同时,您的文字仍可完全扩展至移动设备和辅助function。

见kyleschaeffer.com / ….

CSS3支持与视图端口相关的新维度。 但是这在android中不起作用

  1. 3.2vw =视口宽度的3.2%
  2. 3.2vh =视口高度的3.2%
  3. 3.2vmin = 3.2vw或3.2vh更小
  4. 3.2vmax = 3.2vw或3.2vh更大

     body { font-size: 3.2vw; } 

看到css-tricks.com / ….也看看caniuse.com / ….

你可以试试这个工具: http : //fittextjs.com/

我没有使用这个第二个工具,但它看起来类似: https : //github.com/zachleat/BigText

不知道为什么这很复杂。 我会做这个基本的JavaScript

 <body onresize='document.getElementsByTagName("body")[0].style[ "font-size" ] = document.body.clientWidth*(12/1280) + "px";'> 

12表示12像素1280分辨率。 你在这里决定你想要的价值

我已经创build了https://stackoverflow.com/a/17845473/189411的变体;

在那里你可以设置最小和最大文本大小的关系,你想要“检查”大小的框的最小和最大大小。 另外,您可以检查dom元素的大小,而不是您要应用文本大小的框。

基于#size-2元素的500px和960px宽度,在#size-2元素上调整19px和25px之间的文本

 resizeTextInRange(500,960,19,25,'#size-2'); 

您可以在#size-1元素上根据主体元素的500px和960px宽度调整13px和20px之间的文本大小

 resizeTextInRange(500,960,13,20,'#size-1','body'); 

完整的代码在那里https://github.com/kiuz/sandbox-html-js-css/tree/gh-pages/text-resize-in-range-of-text-and-screen/src

 function inRange (x,min,max) { return Math.min(Math.max(x, min), max); } function resizeTextInRange(minW,maxW,textMinS,textMaxS, elementApply, elementCheck=0) { if(elementCheck==0){elementCheck=elementApply;} var ww = $(elementCheck).width(); var difW = maxW-minW; var difT = textMaxS- textMinS; var rapW = (ww-minW); var out=(difT/100)*(rapW/(difW/100))+textMinS; var normalizedOut = inRange(out, textMinS, textMaxS); $(elementApply).css('font-size',normalizedOut+'px'); console.log(normalizedOut); } $(function () { resizeTextInRange(500,960,19,25,'#size-2'); resizeTextInRange(500,960,13,20,'#size-1','body'); $(window).resize(function () { resizeTextInRange(500,960,19,25,'#size-2'); resizeTextInRange(500,960,13,20,'#size-1','body'); }); });