css怎样运用Rem布局实现自顺应结果
为什么要自顺应?
比方,关于一个移动端页面,设计师给的视觉稿画布宽 750,视觉稿中的一个黄色区块的尺寸是 702 x 300,并在画板中居中。我们但愿在任何一个设备中的显现比例都与视觉稿中一样,按照规划视口宽度等比缩放。
在移动端我们一样会设定规划视口宽度=设备宽度,即内容显现的区域在设备屏幕内。
<meta name="viewport" content="width=device-width, initial-scale=1.0">
但不一样设备的宽度不一样,因此让规划视口的宽度也不一样。比方 iPhone 6 的规划视口宽度为 375, iPhone6 Plus 规划视口的宽度为 414。
(相关视频教程引荐:css视频教程)
关于给定的画布宽 750 的视觉稿,假如在规划视口宽度为 375 的 iPhone 6 设备上显现,我们可以将视觉稿中元素的像素值除以 2,代码如下:
.box{ width: 351px; height: 150px; margin-top: 40px; background: #F5A623; }
那么在 iPhone 6 中的显现如右图,与左图视觉稿规划一致。
但一样的代码,在 iPhone 6 Plus 中显现的就不一样了,两侧间距变大。由于 iPhone 6 Plus 的规划视口比 iPhone 6 要宽,而矩形框的尺寸没有变, 仍然是 315 x 150。
关于给定的画布宽 750 的视觉稿,假如在规划视口宽度为 414 的 iPhone 6 Plus 设备上显现,我们可以将视觉稿中元素的像素值按比例除以 (750 / 414),即:
.box{ width: 387.5px; height: 165.6px; margin-top: 44.2px; background: #F5A623; }
页面显现结果也可以跟视觉稿一样了。
为了在不一样设备宽度(不一样视口宽度)的页面中显现结果跟视觉稿一样,需要写不一样的 CSS 像素值。 我们的诉求是但愿能用一样的 CSS 代码在不一样宽度的设备上展示结果与视觉稿雷同,通俗的说就是依照视觉稿中元素与画布的尺寸比例在不一样设备上等比缩放,从而到达在不一样设备上自顺应的结果。
使用 Rem 规划解决自顺应问题
怎样用统一份 CSS 代码,使元素尺寸随着规划视口宽度的转变按视觉稿中的比例等比缩放?
我们结合 CSS 中相对单位 rem 的特性,rem 单位的像素值是相关于根元素(HTML 元素) 的 font-size 的。例如:HTML 的 font-size 为 100px, 在 CSS 样式中设定某一元素的宽度为 2rem, 那么此元素在页面中的宽度为 200px。
按照元素在视觉稿中的比例等比缩放寻到这样一层关系:
视觉稿元素尺寸 / 视觉稿画布宽度 = (rem 值 * HTML 元素的 font-size) / 规划视口宽度 = rem 值 * (HTML 元素的 font-size / 规划视口宽度) = rem 值 / (规划视口宽度 / HTML 元素的 font-size)
假如:
规划视口宽度 / HTML 元素的 font-size = 定值 N
就可以用统一份 CSS 代码实此刻任何设备中自顺应。
rem 值 = N * (视觉稿元素尺寸 / 视觉稿画布宽度 )
所以,我们只要肯定一个 N 值,再完成两步,即可实现自顺应:
第 1 步:动态设定 HTML 元素的 font-size = 规划视口宽度 / N
第 2 步:将视觉稿中输出的元素 CSS 像素值转成 rem 单位: rem 值 = N * (视觉稿元素尺寸 / 视觉稿画布宽度 )
假设您的视觉稿画布宽度是 750,为了便于 rem 值的运算, 您可以选中设定 N = 7.5, 这样只需要将视觉稿中的尺寸值除以 100 就可以得到 rem 单位的 CSS 像素值。
引荐教程:CSS入门教程
以上就是css怎样使用Rem规划实现自顺应结果的具体内容,更多请关注百分百源码网其它相关文章!