标签:
背景:
方案:使用rem作为单位解决一套设计图适应不同分辨率,不同尺寸的手机。
概念:
window.innerWidth/window.innerHeight
大小.vw单位巧妙实现滚动条出现页面不跳动思路:a,相同的rem,只需要更改页面根元素的font-size;
@media screen and (max-width: 320px) {
html{font-size: 14px;}
}
@media screen and (min-width: 321px) and (max-width: 413px) {
html{font-size: 16px;}
}
@media screen and (min-width: 414px) and (max-width: 639px) {
html{font-size: 17px;}
}
@media screen and (min-width: 640px) {
html{font-size: 18px;}
}
常见问题:
@mixin img-dpr(){
background-image: url(image.jpg);//默认
[data-dpr="2"] & {
background-image: url(image@2x.jpg);//两倍高清
}
[data-dpr="3"] & {
background-image: url(image@3x.jpg);//三倍高清
}
}
.content{
@include img-dpr();
}
@mixin font-dpr($font-size){
font-size: $font-size;
[data-dpr="2"] & {
font-size: $font-size * 2;
}
[data-dpr="3"] & {
font-size: $font-size * 3;
}
}
.content{
@include font-dpr(12px);
}
.icon-fix {
background: none;
position: relative;
overflow: hidden;
}
.icon-fix:after {
content: ‘‘;
display: block;
width: 10000%;
height: 10000%;
position: absolute;
left: 0;
top: 0;
background-image: url(sprite.png);
background-repeat: no-repeat;
background-size: 140rem;
-webkit-transform-origin: 0 0;
-webkit-transform: scale(.01);
transform-origin: 0 0;
transform: scale(.01);
}
.icon3:after {
background-position: 0 -280rem;
}
@function pxToRem($px, $base: 40) {
@return ($px / $base) * 1rem;
}
#demo{with:pxToRem(30)}
<html>
元素上增加一个data-dpr
属性,以及一个font-size
样式。JS会根据不同的设备添加不同的data-dpr
值,比如说2
或者3
,同时会给html
加上对应的font-size
的值,比如说75px;
function refreshRem(){
var width = docEl.getBoundingClientRect().width;
if (width / dpr > 540) {//目前主流手机最大的css像素尺寸,是540(比如devicePixelRatio为2,分辨率是1080x1920的手机),所以用了这个经验值。这样可以让在ipad横屏这种情况下浏览无线页面,不至于因为拉伸适配后体验太差。
width = 540 * dpr;
}
var rem = width / 16;
docEl.style.fontSize = rem + ‘px‘;
flexible.rem = win.rem = rem;
}
rem
单位来设置。他们会根据html
元素的font-size
值做相应的计算,从而实现屏幕的适配效果initial-dpr
会把dpr
强制设置为给定的值。如果手动设置了dpr
之后,不管设备是多少的dpr
,都会强制认为其dpr
是你设置的值。Android系列,始终认为其dpr
为1
。<meta>
标签<html>
元素添加data-dpr
属性,并且动态改写data-dpr
的值<html>
元素添加font-size
属性,并且动态改写font-size
的值讨论:
H5适配终端数据
参考文档:http://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html
标签:
原文地址:http://www.cnblogs.com/StephenJiang/p/5852772.html