热门IT资讯网

less vw 与 rem 实现自适应

发表于:2024-11-30 作者:热门IT资讯网编辑
编辑最后更新 2024年11月30日,vw视口宽度,由于本事就是跟随屏幕变化的,所以更具有灵活性,不用js获取窗口来动态设置窗口宽度,现在用的比较少,公司目前不让用,先记录,也许以后用得到。//配合less 不用自己换算,设计稿750 p

vw视口宽度,由于本事就是跟随屏幕变化的,所以更具有灵活性,不用js获取窗口来动态设置窗口宽度,现在用的比较少,公司目前不让用,先记录,也许以后用得到。
//配合less 不用自己换算,设计稿750 px
//定义变量 vw=7.5vw
//假设元素400px宽度,换算成vw即为400/@vw

@vw: 7.5vw;

.container {
padding: 51/@vw 43/@vw 23/@vw 45/@vw;

.fisttitle {    display    : flex;    align-items: center;}.title {    font-size  : 37/@vw;    padding    : 0 18/@vw 0 10/@vw;    font-weight: 600;}.lef_png {    margin-right: 17/@vw;}.lef_png,.rig_png {    width : 60/@vw;    height: 4/@vw;}.commens {    width : 36/@vw;    height: 34/@vw;}ul {    li {        h6 {            color       : #333;            font-size   : 32/@vw;            padding-left: 64/@vw;            margin-top  : 51/@vw;            font-weight : 600;            line-height : 45/@vw;        }        .q1 {            background     : url('./../images/q1.png') no-repeat left center;            background-size: 52/@vw 32/@vw;        }        p {            color      : #666;            font-weight: 400;            font-size  : 30/@vw;            line-height: 42/@vw;        }        a {            color      : #1E89FE;            font-size  : 30/@vw;            line-height: 42/@vw;        }        span {            margin : 0 10/@vw 0 10/@vw;            display: inline-block;        }    }}

}

下面用最熟悉的rem 实现一下,因为rem不能实时变化,所以需要通过js 或者媒体查询来辅助,本案例通过media 来实现

html {
@firstViewportWidth: 750px; //默认UI设计尺寸
@defaultFontSize : 100px; //默认初始fontsize大小

@media screen and (width: @firstViewportWidth) {    //绑定到没听查询    font-size: @defaultFontSize;    min-width: 100%;};//根据传入的屏幕尺寸@viewportWidth计算出与初始@firstViewportWidth的比例,然后将默认的fontsize> @defaultFontSize对应的放大缩小.media(@viewportWidth, @firstViewportWidth: 750px) {    @media screen and (min-width: @viewportWidth) {        font-size: @defaultFontSize / (@firstViewportWidth / @viewportWidth) !important;    }};.media(320px);.media(375px); //所要设配的屏幕尺寸.media(360px);.media(411px);.media(414px);.media(768px);

}

@media screen and (min-width: 768) {
html {
font-size: 100px !important;
}
}

@vw: 7.5vw;

.container {
padding: .51rem .43rem .23rem .45rem;

.fisttitle {    display        : flex;    align-items    : center;    justify-content: space-between;    .middleware {        text-align: center;    }}.title {    font-size  : .37rem;    padding    : 0 .18rem 0 .18rem;    font-weight: 600;}.lef_png {    margin-right: .17rem;}.lef_png,.rig_png {    width : .6rem;    height: .04rem;}.commens {    width : .36rem;    height: .34;}ul {    li {        h6 {            color       : #333;            font-size   : .32rem;            padding-left: .64rem;            margin-top  : .51rem;            font-weight : 600;            line-height : .45rem;        }        .q1 {            background     : url('./../images/q1.png') no-repeat left center;            background-size: .52rem .32rem;        }        p {            color      : #666;            font-weight: 400;            font-size  : .30rem;            line-height: .42rem;        }        a {            color      : #1E89FE;            font-size  : .30rem;            line-height: .42rem;        }        span {            margin : 0 .10rem 0 .10rem;            display: inline-block;        }    }}

}

对比来看,rem看上去简洁一些,不过需要手动去设置所有的需要自适应额屏幕宽度,vw虽然看上去不那么直观,但是适用性更强。

0