手机上端用rem+scss做兼容的详解

日期:2021-02-23 类型:科技新闻 

关键词:微擎小程序开发,微信小程序下载,如何在微信上做小程序,调查问卷微信小程序,微信抽签小程序

rem详细介绍

rem(font size of the root element)是指相对根元素(即html元素)的字体样式尺寸的企业。

假定根元素的字体样式尺寸是10px, 则5rem的尺寸为 5*10=50px,比如

html{
    font-size: 10px;
}
p{
    width: 2rem; /* 2*10 = 20px;*/
    margin: 1rem;
}

rem来做兼容

之前大家常常这样做网页页面:viewport width 设定为 device-width,随后选大家必须适配机器设备的最少宽度(1般是320px)。依据这最少宽度来做网页页面。企业应用px和百分比。在宽度不一样的机器设备上,网页页面的字体样式尺寸,內容规格全是1样的,不一样的是,大屏的內容间的间隙比小屏的大。因此这样做的缺陷便是,网页页面在一些规格的机器设备上显示信息的实际效果不太好。

假如用rem来网页页面,大家会依据不一样的机器设备宽度在根元素上设定不一样的字体样式尺寸。宽度越宽,字体样式越大。随后对本来应用px的地区应用rem来更换。这样,字体样式尺寸,內容规格,对伴随着显示屏宽度的增大而增大。

最先js设定html的默认设置字体样式尺寸(写在html头顶部)

<script type="text/javascript">
    var bodyElement = document.documentElement || document.body,
        RC = {
            w: 750,
            h: 1206
        }, //默认设置设计方案稿宽高
        GC = {
            w: document.documentElement.clientWidth || window.innerWidth || screen.width,
            h: document.documentElement.clientHeight || window.innerHeight || screen.height
        };
    function setFontSize(){
        var rightSize = parseFloat((RC.w / RC.h).toFixed(1)),
            currentSize = parseFloat((GC.w / GC.h).toFixed(1)),
            lastHTMLSize = 16, // 默认设置16是由于html默认设置字号是16px
            html = document.getElementsByTagName("html")[0];
       
            if(rightSize > currentSize){  // 长屏
                lastHTMLSize = 16;
            }else if(rightSize < currentSize){  //宽屏
                lastHTMLSize = (RC.h / GC.h * GC.w) / RC.w * 16;
            }
            html.style.fontSize = GC.w / lastHTMLSize + 'px';
       
    }

    setFontSize();
</script>

设定scss文档px转rem

// 默认设置16是html默认设置字号
// 默认设置750是设计方案稿默认设置宽度
// $n是量取设计方案稿的间距

@charset "UTF⑻";
@function rem($n) {
    @return $n / (750 / 16)+rem;
}

编写便捷启用的涵数:

@function getTop($n) {
    @return ($n - 1206 / 2) / (750 / 16)+rem;
}

@function getLeft($n) {
    @return ($n - 750 / 2) / (750 / 16)+rem;
}

@function getRight($n) {
    @return (($n - 750) / 2) / (750 / 16)+rem;
}

@mixin center($left, $top) { //上下垂直居中 上变
    position: absolute;
    left: 50%;
    top: rem($top);
    margin: 0 0 0 getLeft($left);
}

@mixin centerlt($left, $top) { //左右,上下垂直居中 
    position: absolute;
    left: 50%;
    top: 50%;
    margin: getTop($top) 0 0 getLeft($left);
}
@mixin centerrt($right, $top) { //左右,上下垂直居中 
    position: absolute;
    right: 50%;
    top: 50%;
    margin: getTop($top) getRight($right) 0 0;
}
@mixin middlert($right, $top) { //左右垂直居中 右变
    position: absolute;
    right: rem($right);
    top: 50%;
    margin: getTop($top) 0 0 0;
}

@mixin centerb($left, $bottom) { //上下垂直居中 下变
    position: absolute;
    left: 50%;
    bottom: rem($bottom);
    margin: 0 0 0 getLeft($left);
}

@mixin leftTop($left, $top) { //左变 上变
    position: absolute;
    left: rem($left);
    top: rem($top);
}
@mixin rightTop($right, $top) { //右变 上变
    position: absolute;
    right: rem($right);
    top: rem($top);
}
@mixin leftBottom($left, $bottom) { //右变 上变
    position: absolute;
    left: rem($left);
    bottom: rem($bottom);
}

启用上面的涵数(宽高间距用ps量具体间距便可,默认设置设计方案稿宽750):

.page1-img1{
    width: rem(473);
    height: rem(173);
    @include centerlt(139, 767);
}

以上便是本文的所有內容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多适用脚本制作之家。

上一篇:Canvas制做的下雨动漫的示例 返回下一篇:没有了