rookie10000

导航

 

屏幕里的元素(图片文字 背景图片 精灵图)需要用rem表示,rem参考的是html中设置的font-size的大小,1rem=font-size的大小,所以当屏幕拉伸的时候,屏幕大小即html大小会变化,即设置的font-size会发生变化。

所以屏幕里的元素因为用rem表示,即会出现自适应的大小缩放,达到自适应的效果。

下面是手动的屏幕大小的变化,可以引入相应的js文件自动检测屏幕的大小,设置不同的font-size。

@media screen and (min-width: 320px) {

html {

font-size: 32px;

}

}

@media screen and (min-width: 360px) {

html {

font-size: 36px;

}

}

。。。。。。。。。。等等

拿到一个设计图时,会得到当前页面的宽度,eg:750px,

即此时设置的参考值font-size大小为75px,但其他的元素有自己的大小,也需要用rem表示,比如一个字体大小为20px,

需要换算,即20/75 rem 的大小 ,再进行屏幕的拉伸的时候,不同的屏幕大小会有不同的html里设置的font-size值,即可以换算成当前屏幕的大小,就达到了宽、高度随屏幕大小变化而自适应的效果。

假如

750/75 = w/? ,此时75px 为1rem, w为当前屏幕大小,?为屏幕改变的时候html的fontSize大小

媒体查询可以获取当前屏幕的范围,给html的fontSize设置不同的大小;

@media screen and (min-width: 360px) {

html {

font-size: 36px;

}

}

若用js来获取当前屏幕的大小var w = window.innerWidth;

给当前html的fontSize设置大小:

750/75 = w/? ? = w/10

document.documentElement.style.fontSize = w / 10 + "px";(documentElement是html)

注意:

精灵图自适应的时候,除了相应的换位rem外,还需设置background-size:

精灵图的宽/设计图的font-size rem

精灵 图的高/设计图的font-size rem

解释:

精灵图是事先设置一个盒子或者用伪元素,大小由精灵图里的所需图片的大小决定;背景图整个精灵图默认在这个盒子盒子左上角放置,精灵图通过向左和向上移动,所需的精灵图图片会移动到这个盒子或伪元素里, 这个盒子或者伪元素正好截取到这个所需图片的大小,向上向左移动的大小为所需图片在精灵图里的x、y坐标。所以当屏幕大小改变的时候,这个盒子或者伪类大小也改变,所以这个区域截取精灵图的区域变大/变小,也就截不全或截不到精灵图里所需的图片。但当把这个精灵图的大小也等比例随屏幕大小变化,那么可以一直截到相应的精灵图图片。

.things ul li:nth-child(1)::after{

content: '';

width: 1.28rem /* 96/75 */;

height: 1.28rem /* 96/75 */;

background: url(../images/icons.png)

no-repeat

0/* 120/75 */  

-0.8rem /* 60/75 / / 90/75 */;

background-size: 6.933333rem 6.933333rem /* 520/75 */; 

position: absolute;

left: 50%;

transform: translateX(-50%);

top: 0.533333rem /* 40/75 */;

}

用px2rem设置不同的设计图大小的font-size时,重启。

posted on 2020-11-23 16:12  FreeLoops  阅读(109)  评论(0编辑  收藏  举报