跨屏响应式网页不仅仅是响应不同类型的设备,而且需要响应不同尺寸大小的屏幕。跨屏响应式的初衷是为了让信息更好的传递交流,让所有人无障碍的获取信息,网站体验好了,转化率自然就高。跨屏网站能够适应不同屏幕终端,提高网站转化率也是它如此流行的根本原因。
序言中同样提到,跨屏响应式的设计应该秉承「内容优先,移动优先」的设计原则,那么我们知道网页中的内容主要是由文字图片等元素组成的,那么文字该如何实现跨屏响应式呢?
当我们每天面对缤纷的互联网世界的时候,文字不仅仅传递给我们众多的信息资讯,而且在设计师的手里,文字在网页中的排版承载着一种艺术的直觉。
网页中常用的文字大小单位是px(Pixels),em,现在《CSSValuesandUnitsModuleLevel3》中新增了rem这个单位。
一、那到底什么是rem呢?
规范中明确写道:
「rem」是指根元素(rootelement,html)的字体大小,好开心的是,从遥远的IE6到版本帝Chrome他们都约好了,根元素默认的font-size都是16px。这样一个新的单位兼容性如何呢?请出Caniuse看看吧:
太好了,IE9,Firefox、Chrome、Safari、Opera的主流版本都支持了,我可以放肆的使用rem了。
可是,W3C那些家伙为什么要闲着下面疼的新增这样一个单位呢?它和em有啥区别呢?
我们知道em的计算是基于父级元素的,在实际使用中给我们的计算带来了很大的不便。所以rem的出现解救了我这样不会算术的人,再也不用担心父级元素的font-size了,因为它始终是基于根元素(html)的。
比如默认的htmlfont-size=16px,那么我想设置12px的文字就是:12÷16=0.75(rem)
当然,你可以引入CSS预处理工具(Sass、LESS、Stylus等)自动计算rem值,这里就不一一举例了。
但是像我这样的懒人或者团队开发中还没有引入CSS预处理工具的该肿么办呢?只能搬个计算器啪啪啪了吗?别急,你还可以变通一下。我们改变一下html的默认font-size=10px不就好计算了嘛!Likethis:
html{font-size:62.5%;/*10÷16=62.5%*/}
body{font-size:12px;font-size:1.2rem;/*12÷10=1.2*/}
p{font-size:14px;font-size:1.4rem;}
需要注意的是,为了兼容不支持rem的浏览器,我们需要在rem前面写上对应的px值,这样不支持的浏览器可以优雅降级。其实不用太纠结是默认的font-size:%,还是设置为font-size:62.5%,如果你引入了CSS预处理工具那么自然可以使用默认值,如果由于其他原因使用font-size:62.5%也无可厚非,完全可以在body中重置回你需要的默认font-size。
二、为啥要用rem呢?
黑夜给了我黑色的眼睛,我将用它寻找关怀。
浏览器中用户都是可以自定义默认的文字大小的,如果使用px,用户自行在浏览器设置中改变了文字大小后,网页上是不会变化的。我们不能排除视障用户(如近视)、老年用户不会这么做,作为一个具有「人文关怀」的前端,我们完全可以考虑这些情况。由其是在引入了CSS预处理工具之后,这几乎不会增加什么成本。
也再次印证前面提到的:跨屏响应式网页不仅仅是响应不同类型的设备,而且需要响应不同尺寸大小的屏幕。
各个浏览器的设置方法如下:
IE浏览器:按下Alt键,打开菜单栏→查看→字体大小Chrome浏览器:设置→显示高级设置→网页内容Firefox浏览器:按下Alt键,打开菜单栏→工具→选项→内容选项卡其他浏览器就不一一举例了……三、什么时候用rem?
既然rem的可用性更好,是不是在所有地方都去使用呢?别捉急,通常在标题,正文等大面积文字的位置可以使用rem。但是在一些特殊的设计场景,rem可能会导致布局错位,比如这样一个回顶部的按钮:
所以,什么时候用rem,如何用好rem?这也需要你拿出18K的黑色乌金睛来照亮整个页面。让我们一起:
抛开布局,响应文字;抛开成见,响应内心。
在面对跨屏响应式开发的时候,什么才是合适的,什么是不合适的,你真的想好了吗?