使用百分比字体大小?

使用百分比字体大小?

问题描述:

我最近阅读了一些关于调整字体大小的公正信息,其中大部分都是用px作为不可饶恕的犯罪(好吧,也许不是那么糟糕,你明白了),因为它在旧版浏览器中没有正确调整大小。使用百分比字体大小?

我真的很想拥有一个我自己使用的标准,过去一直是px,只是因为它很简单,易于理解,并且很容易实现设计中指定的确切字体大小 - 但是,现在怀疑使用px。

我最近在项目中使用了em,因为它需要我使用jQuery进行文本大小调整的功能。但我发现它非常令人沮丧,因为如果你有两个元素内的两个元素指定的EM大小(希望是有道理的),他们放大的方式

所以我想知道如何使用%进行字体大小调整,我已经看到一些大型网站使用这种技术(即雅虎),从我的理解来看,它似乎具有所有的优点,而没有令人难以置信的烦人放大的事情。

所以简而言之,我只是想知道在CSS中使用%来设置字体大小是否有问题?在字体大小调整方面,它会比使用PX更好吗?有没有明显的缺点?

道歉,如果这个问题之前Blurb的是一个有点多:/我还是那种习惯了整个QA事情

+1

我可能是错的,但我认为使用'%'很容易产生与'em'相同的缺陷。如果你有两个'div'元素,一个在另一个里面,每个都有一个'font-size:110%',那么它的计算方法和'font-size:1.1em'完全一样。除非我真的*错了。 – 2012-04-25 21:11:47

+0

我会尽快尝试HTML格式的检查,我以前没有听说过,但如果它是真的,那么它会是一个真正的失望者。 。 。我想使用%的主要原因是它没有这样做! – Sean 2012-04-25 21:13:36

+0

不,你错了,只有他的多重缺陷:http://jsfiddle.net/gHe5S/ – Sean 2012-04-25 21:16:46

也许这将让更多的制作字体调整剧本的感觉。 我制作了一个完全符合你想要的剧本,但我无法再找到它了。

伪代码:

var fontSize = 15; // (em) input 
var fontResize = -1;// (em)input 
fontSize = fontSize+fontResize; //current div 

for(every inherent parent classname == 'classname-em') 
document.classnameParentSize[numberofclass] = classnameChildSize[numberOfClass]/100*90; 

在口头上如此解释。该脚本需要调整一些字体的大小,当完成后,它还会寻找一些父级div来调整这些字体的大小,除非它们的大小会比其固有的小10%。有些令人费解,你会有正确的转换。也尽量避免填充和边框宽度。

有一个名为FitText的jQuery插件。它基于百分比调整文本大小。如果访问者出于某种原因禁用了JavaScript,则只会正常显示,因此请设置合理的PX或EM备份。

它取决于jQuery,所以你需要将它包含在你的页面中(如果你还没有的话)。


jquery.fittext.js供参考:

/*global jQuery */ 
/*! 
* FitText.js 1.0 
* 
* Copyright 2011, Dave Rupert http://daverupert.com 
* Released under the WTFPL license 
* http://sam.zoy.org/wtfpl/ 
* 
* Date: Thu May 05 14:23:00 2011 -0600 
*/ 

(function($){ 

    $.fn.fitText = function(kompressor, options) { 

     var settings = { 
     'minFontSize' : Number.NEGATIVE_INFINITY, 
     'maxFontSize' : Number.POSITIVE_INFINITY 
     }; 

      return this.each(function(){ 
       var $this = $(this);    // store the object 
       var compressor = kompressor || 1; // set the compressor 

     if (options) { 
      $.extend(settings, options); 
     } 

     // Resizer() resizes items based on the object width divided by the compressor * 10 
       var resizer = function() { 
        $this.css('font-size', Math.max(Math.min($this.width()/(compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize))); 
       }; 

       // Call once to set. 
       resizer(); 

       // Call on resize. Opera debounces their resize by default. 
     $(window).resize(resizer); 

      }); 

    }; 

})(jQuery); 
+0

问题是关于在CSS中使用不同的尺寸测量字体,而不是关于拟合文本。 – Cobby 2014-03-04 04:00:27

尝试使用此

body { 
    margin: 0px; 
    padding: 0px; 
    font-size: 62.5%; 
} 

body>#wrapper { 
    font-size:1em; 
} 

所以,当你这样说的 “包装” 中1EM你就会有一个大小非常相似, 10px的。这里有一个示例表:

3em == 30px 
.5em == 5px 
8.5em == 85px 

这将帮助你在过渡

P.d:当然,你需要一个包装标签后身体

在网页设计中的标准,据我所知,它是使用百分比来设置正文中的字体大小,然后使用EMS来改变之后的字体大小。您可以使用身体标签以外的百分比而不会产生不良副作用,但我认为许多开发人员发现易于使用ems(任何人都可以*地检查我)。

如果您使用ems设置机身字体大小,则会出现危险;旧的浏览器窒息并错误地显示文本,尤其是在缩放时。

在CSS3中,使用rem(root em)。大小不会受到父元素的em大小的影响。

+1

这是我真正想要做的!有些人似乎表示他们更喜欢'em'而不是'rem',但我从来不明白为什么... ems似乎总是让我过于复杂。 – Sean 2014-07-07 18:06:06