我创建了一个响应式网格并使用 em 作为字体大小来调整文本大小,但我不能完全理解 em 的工作原理,因为没有调整文本大小。
现场直播: http ://www.rubytuesdaycreative.co.uk/testsite/shop.html
在 Ethan Marcottes 的书之后,我将正文字体设置为font-size:100%
,然后由上面链接页面上的 cpation 中的文本制作为 2ems - 所以基本尺寸加倍......我做错了吗?它似乎根本没有改变。
我创建了一个响应式网格并使用 em 作为字体大小来调整文本大小,但我不能完全理解 em 的工作原理,因为没有调整文本大小。
现场直播: http ://www.rubytuesdaycreative.co.uk/testsite/shop.html
在 Ethan Marcottes 的书之后,我将正文字体设置为font-size:100%
,然后由上面链接页面上的 cpation 中的文本制作为 2ems - 所以基本尺寸加倍......我做错了吗?它似乎根本没有改变。
我认为您正在寻找的是@media
查询。Em
不是一个会根据浏览器宽度调整大小的魔法子弹单元。它是一个相对单位。
如果您希望根据浏览器宽度更改任何 CSS,请使用@media
queries。
em
s 在这种情况下很有用,因为您只需更改一个值 ( body{font-size}
) 即可缩放页面的所有其余部分。因为它们是相对的,而不是因为浏览器改变了。您可以一起使用这些技术。
这是一个简单的例子。调整窗口大小。
body{font-size:100%;}
i{font-size: 2em;}
@media screen and (min-width: 500px) {
body{font-size: 150%;}
}
@media screen and (min-width: 700px) {
body{font-size: 200%;}
}
</p>
单位是指字体的em
大小。它根本不依赖于浏览器窗口的宽度。
vw
单位与窗口宽度有关:即视口宽度的 1/100 。但它在浏览器中的支持有限且有缺陷。
虽然这是一个老问题,但我最近想出了一个解决方案。
如果将正文中的所有文本定义为百分比,然后在 document.ready 和 window.resize 上调整正文中的文本大小,则文本保持 100% 响应。
例如
CSS
font-size: 100%;
JavaScript
function fontResize(){
var perc = parseInt($(window).width())/125;
$('body').css('font-size',perc);
}
JQuery
$(document).ready(function (){
fontResize();
});
$(window).resize(function () {
fontResize();
});
我认为该表非常清楚,并且很好地说明了字体无法随窗口调整大小而缩放的原因。原因是 ems、percentage 甚至 rems 都是相对于浏览器默认字体(通常是 16px)而不是浏览器窗口的度量。所以如果你写“font-size: 100%;” 就像写“字体大小:16px;” 而不是“字体大小:窗口大小的 100%”。如果你写“字体大小:200%;” 就像“字体大小:32px;” ETC...
要创建一个带有随窗口大小调整而不断缩放的字体的布局,我认为您可以使用 jquery。也许“$(window).resize”和“.css('font-size','value')”的混合可以工作......
在最近自己研究这个问题以进行响应式设计时......我遇到了这张很棒的桌子:http ://www.hubbers.com/index.php/converting-px-into-percentage-and-em-for-relative-css -字体大小/
它分解了表格中的像素、em 和百分比之间的转换,但更好的是,它提供了将这些从一个转换为另一个的简单公式,这对我来说非常有用,因为我正在动态确定字体大小
我同样认为,当窗口调整大小时,使字体大小百分比会迫使它们像其他元素一样重新调整大小......但这不起作用(尽管我认为应该这样做)。最后,我最终使用了 Bookcasey 所述的媒体查询以及上述公式将百分比转换回 em。