移动web前端页面开发自适应的问题

前言:入职公司不知不觉已经两个星期了,在这里我要吐槽一下,看过我的文章的人都知道我是Android,Java方向的,至于PHP也是以后配合Java方向发展而自学了点。在我现在这家公司面试的时候我面的是Android开发的,老板不懂技术,要求做微商城,我以为是做商城版的app结果不是,而是移动端web,可能这就是缘分吧,是这公司的人事小姐姐主动打电话叫我来面的试,结束了我正在找实习工作的痛苦。入职时,由于做后台开发的人太多了,我就被分配到了前端,我的实习生涯正式开始!前端对于我来说我就是个小白,在此遇到的一些问题对于小白来说是要注意的!

好了我们进入主题,其实做移动web最重要的是做什么呢?(这里不谈动态页面数据交互)那就是要做自适应,那要怎么做自适应呢?首先我们就要了解px、em、rem之间的区别!

px特点:

  1. IE无法调整那些使用px作为单位的字体大小。
  2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位。
  3. Firefox能够调整px和em,rem,但是96%以上的中国网民使用IE浏览器(或内核)。

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。(引自CSS2.0手册)

em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。(引自CSS2.0手册)

任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

em特点:

  1. em的值并不是固定的。

  2. em会继承父级元素的字体大小。

注意:任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。
所以我们在写CSS的时候,需要注意两点:

(1) body选择器中声明Font-size=62.5%

(2)将你的原来的px数值除以10,然后换上em作为单位

(3) 重新计算那些被放大的字体的em数值。避免字体大小的重复声明
也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。

rem特点:

rem是CSS3新增的一个相对单位(root em,根em),这个单位引起了广泛关注。这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。下面就是一个例子:
p {font-size:14px; font-size:.875rem;}

px 与 em与 rem 的选择?

介绍玩上面的特点了那么我们该如何选择呢?
我们总结一下:
px实际上就是像素,用PX设置字体大小时,比较稳定和精确。但是px不支持用户进行浏览器缩放或者不同移动端的兼容,因为像素是固定的,屏幕大小是变化的。由此引入了em和rem。

em是根据父元素来对应大小,是一种相对值,并不是绝对值,em值 = 1/父元素的font-size*需要转换的像素值。进行任何元素设置,都有可能需要知道他父元素的大小,这很不方便所以又有了rem。

rem是根据根元素html的font-size来对应大小,1rem = 100px,可以在根元素html中写固定像素也可以写百分比,然后在具体的标签上设置rem

回到我们的问题,我们现在是要做自适应当然首选em或rem,对于只需要适配少部分手机设备,且分辨率对页面影响不大的,使用px即可 。对于需要适配各种移动设备使用rem,例如只需要适配iPhone和iPad等分辨率差别比较挺大的设备。说到这里相信小伙伴们都知道该选神马了。

有兴趣可以看看em与 rem 的使用详解这篇文章:http://caibaojian.com/rem-vs-em.html

移动web前端布局问题

了解完上面的内容后接下来就是在布局中的问题了,上面都是为了这里的铺垫,这里我就不写了请看大神的文章https://blog.csdn.net/u010852544/article/details/53538362

最后在此,我要感谢一个人,一个陌生人,他是我在一个前端群里人认识的人,他q名叫胡汉三,我叫他三哥,感谢他总是很热心的帮我解决问题,就像我Android的师傅一样,不仅仅交我技术还交会了我很道理。

你可能感兴趣的:(前端)