`
suqing
  • 浏览: 186718 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

关于字体大小适配:根文档使用px,组件使用rem,文本元素使用em

 
阅读更多

rem是一个非常酷的CSS3属性,它相对于根元素<html>的字体大小适配。举一个非常简单的场景,要根据3种屏幕大小适配字体:

通常这么实现:

/* Document level adjustments */
html {
  font-size: 17px;
}
@media (max-width: 900px) {
  html { font-size: 15px; }
}
@media (max-width: 400px) {
  html { font-size: 13px; }
}

/* Type will scale with document */
h1 {
  font-size: 3rem;
}
h2 {
  font-size: 2.5rem;
}
h3 {
  font-size: 2rem;
}

 这样做很简单,但是有点儿想当然。最主要的问题是:你不能指望一个页面上设置的类型,能够满足所有模块的比例要求:大屏幕可能界面元素会显示的非常大,小的又太小。或者甚至相反,大屏幕可能无法显示足够小。遇到这种情况,可以继续用@media query调整大小,但是这样做效率不高,而且会非常混乱。

 

因此,我的想法是:

1、文档级别依然使用px像素,能够直接有效地检测出分辨率的变化。

2、页面每个模块用rem设置字体大小。因为rem是相对于根元素<html>的字体大小适配。

3、文本元素(H1、H2、p、li等等),如果你调整他们的大小,并用em作为单位,就能和模块大小形成相对比例。“em”作单位时,是一个相对于父元素的值。

下面是一个示例图:

 

jsfiddler演示地址

 

实现如下

/* Document level adjustments */
html {
  font-size: 17px;
}
@media (max-width: 900px) {
  html { font-size: 15px; {
}
@media (max-width: 400px) {
  html { font-size: 13px; }
}

/* Modules will scale with document */
.header {
  font-size: 1.5rem;
}
.footer {
  font-size: 0.75rem;
}
.sidebar {
  font-size: 0.85rem;
}

/* Type will scale with modules */
h1 {
  font-size: 3em;
}
h2 {
  font-size: 2.5em;
}
h3 {
  font-size: 2em;
}

 

这样你可以设置一个模块级别的字体大小,这是非常容易的。

当然IE6-8是不支持CSS3的rem属性的。移动端的话也不需要考虑这个问题。

分享到:
评论

相关推荐

    使用postcss-px2rem插件把px转变为rem,并配合给html根元素设置fontsize,来实现页面的自适应效果

    相反,`rem`(root em)单位则相对灵活,它表示相对于根元素(通常是`html`元素)字体大小的单位。通过将所有尺寸转换为`rem`,我们可以更容易地调整整个页面的比例,以适应不同屏幕大小。 `postcss-px2rem`是一个...

    rem适配js文件flexible.js和echartPxToRem.js

    `rem`(root em)单位是一种基于根元素(通常是html元素)字体大小的相对单位,它可以帮助我们实现响应式布局,使得设计能够自适应不同分辨率和屏幕尺寸的设备。本主题将详细讲解如何利用`flexible.js`和`...

    sublime插件一键px转rem,一键rem转px

    为了实现这种响应式设计,开发者们常常使用相对单位,如`rem`(root em)来替代绝对单位,如`px`(像素)。`rem`单位使得我们可以根据根元素(通常是`html`元素)的字体大小来调整整个页面的布局,从而实现自适应。...

    了解真实的REM手机屏幕适配

    与传统的`em`单位不同,`em`是相对于父元素的字体大小,而`rem`始终基于根元素(通常是`&lt;html&gt;`)的字体大小。这意味着,通过改变`&lt;html&gt;`的字体大小,我们可以统一调整整个页面上的所有基于`rem`的元素尺寸,从而...

    rem布局实现不同分辨率移动终端的自适应、整体缩放

    REM(Root Em)是以根元素(通常是html元素)的字体大小为基准的单位,通过调整根元素的字体大小,可以实现整个页面元素尺寸的统一缩放。 在CSS中,我们可以设置html元素的`font-size`属性来定义REM单位的基础值。...

    flexible rem适配

    这样,当根元素的字体大小改变时,所有使用rem的元素都会自动调整。 ```css body { font-size: 16px; /* 默认字体大小,可以视需求而定 */ } .some-element { width: 2rem; /* 宽度会根据根元素的字体大小自动...

    移动端适配rem文件js代码.zip

    3. **元素大小转换**:为了让所有子元素使用rem单位时也能正确适配,js文件可能会遍历DOM树,将所有使用px、em等单位的样式转换为rem。这通过读取元素的原始样式,计算新的rem值,并使用CSS的style属性进行设置来...

    03-px-em-rem-vw-vh-区别.md

    - **特点**:当元素的字体大小使用em单位时,1em等于当前字体大小。如果后代元素使用em单位,则会相对于其父元素的字体大小进行计算。 #### rem - **相对单位**:相对于根元素(html)的`font-size`的值。 - **用途...

    09.code rem适配.zip

    在前端开发领域,"code rem适配"是一个重要的概念,主要涉及到网页的响应式设计和字体大小的适配。在现代网页设计中,为了确保页面在不同设备和屏幕尺寸上都能有良好的显示效果,开发者通常会采用相对单位来定义元素...

    移动端使用rem布局那些事

    在移动端Web开发中,rem(root em)布局是一种常见的响应式设计方法,它允许开发者以相对于根元素(通常是html元素)的字体大小来设置元素尺寸,从而实现不同屏幕尺寸下的自适应布局。本文将深入探讨rem布局的工作...

    rem.zip_REM_painbt3_rem单位换算_whisperedzvw

    压缩包中的“rem”文件可能是CSS样式表,其中包含了使用"rem"单位的样式规则,或者是JavaScript文件,用于动态计算和设置根元素的字体大小,或者包含有关如何在实际项目中应用"rem"单位的文档或示例。 总的来说,...

    仿手淘的h5适配方案采用rem适配页面设计稿分10等分

    在实际代码中,我们可以设置一个基础字体大小(比如10px),然后将所有元素的宽度或高度设置为相应的`rem`值,如0.75rem(对于75px的设计稿等分)。 接下来,我们需要处理不同设备的屏幕宽度差异。通常,我们会使用...

    移动Web开发之 rem适配布局----苏宁首页案例制作

    按钮、链接等元素的大小也要使用rem,这样当根元素字体大小变化时,它们会相应地缩放。 2. **轮播图**:图片通常使用百分比宽度填充容器,高度可以自动保持比例。控制按钮的大小和间距也应使用rem,确保在小屏幕...

    关于rem的一切,这里全都有_能“等比例”适配所有屏幕尺寸教程.zip屏幕自适应

    rem(root em)单位是指相对于根元素(通常是`&lt;html&gt;`标签)字体大小的单位。这意味着,当我们在CSS中设置一个元素的宽度、高度或其他属性为rem时,它的值会基于`&lt;html&gt;`标签的`font-size`属性来计算。这与em单位...

    rem适配两种方案-实战篇

    `rem`(root em)单位是解决这个问题的一种有效方式,它可以基于根元素(通常是`html`元素)的字体大小进行调整,从而实现页面元素的相对缩放。本文将深入探讨两种基于`rem`的适配方案,并通过实战案例来解析它们的...

    移动端rem布局项目源码.zip

    与传统的像素(px)单位相比,REM允许开发者更容易地调整整个页面的比例,特别是在响应式设计中,可以统一改变根元素的字体大小,进而影响所有使用REM单位的子元素尺寸,从而适应不同分辨率和屏幕尺寸的设备。...

    手机端用rem+scss做适配的详解

    例如,如果根元素字体大小为10px,那么1rem就等于10px,2rem就等于20px。这种单位的优势在于,当根元素字体大小改变时,所有使用REM单位的元素都会相应地进行缩放。这就提供了一种简单而有效的方法来实现适配不同...

    04-rem布局.zip

    REM(root em)代表的是根元素(通常是html元素)的字体大小,而不是当前元素的字体大小,如EM单位那样。这意味着,通过改变html元素的font-size属性,我们可以影响整个文档中所有使用REM单位的元素大小。这种特性...

    CSS中px em rem区别与使用

    在开发过程中,可以结合使用这三种单位,例如在HTML文档的根元素上设置一个基础的rem字体大小,再用em单位来设计局部组件的字体大小,保持整体的一致性,同时给单个元素提供足够的灵活性。总之,理解px、em、rem的...

    移动端适配 rem & vw 计算工具

    `rem`(root em)是相对于根元素(通常是html元素)的字体大小的单位。通过设置html元素的font-size属性,我们可以用`rem`来控制整个页面元素的相对大小。例如,如果html的font-size为20px,那么1rem就等于20px。...

Global site tag (gtag.js) - Google Analytics