2019-01-14移动端、rem

2019.01.14移动端概念

一、移动端的写法(百分比写法)

    兼容性较强:initial-scale=1(初始值1),minimum-scale=1(用户的最小缩放值),maximum-scale=1(用户的最大缩放值)
    <meta name="viewport" content = "width=device-width,initial-scale=1,minimum-scale=1,maxmum-scale=1,user-scalable=no"/>
    屏幕自适应(百分比写法):device-width
    <meta name="viewport" content = "width=device-width,initial-scale=1,user-scalable=no"/>
定宽的写法:
    viewport width=设计稿宽(固定宽度),不设置缩放相关属性,移动端浏览器会自动缩放页面以适配屏幕
    (initial-scale=1(初始值1),minimum-scale=1(用户的最小缩放值),maximum-scale=1(用户的最大缩放值))

二、长度单位(css像素与物理像素不一样)

绝对单位(无论在哪里测,表示长度固定不变):m/cm/mm/inch(英寸)/尺    
                              1inch=2.54cm
相对单位:px
屏幕尺寸:对角线长度(单位inch)
            ppi(屏幕像素密度):是px per inch 的缩写
            屏幕分辨率,理解了分辨率就能知道px为什么是相对单位
            css像素:逻辑像素,就是你在写css样式时用的像素
            物理像素:设备像素,屏幕这个硬件本身能够显示出色彩的最小单位
                        拿retina(2k)屏做案例,它将css中1*1px大小的一个div用了四个像素来显示,这样使得屏幕显示的图片更加细腻
            dpr:设备像素比(device pixel ratio)
viewport概念首先提出的是苹果公司,应用在Safari浏览器,解决的问题:在移动端页面能够正常显示pc页面
        viewport:视窗/视口,浏览器能够用来显示页面的尺寸大小
                    大部分移动端默认的视窗宽度是980px,也有一千多的
<script type="text/javascript">
            console.log(window.devicePixelRatio);
            //设备比与css像素比
            console.log(document.querySelector(".baba").clientWidth);
            //选择器:querySelector
</script>

三、rem布局原理

1.rem与em(对比)
    rem是什么?单位
        rem: 1rem = 一倍html的fontsize大小
        em:1em = 一倍的爸爸或者自己的fontsize大小
2.rem如何实现
    0)设置meta标签。
    1)基准:fontsize(一般设为40px,自己定的)
    2)按基准fontsize和设计图的宽高计算出以rem为单位的宽高。比如div在设计图的宽是180px,转化成rem就是180/fontsize(40)
    3)根据设计图和基准fontsize算出目标手机下应有的fontsize。比如目标手机为640,那么要改变的fontsize就是:var fontSize = viewPotWidth*40/640; 
3.使用js动态改变fontsize的值
    使用js动态改变fontsize的值:
    <script type="text/javascript">
            console.log("手机viewportwidth",document.documentElement.clientWidth);
            //获取viewport宽
            var viewPotWidth = document.documentElement.clientWidth;
            //动态计算出html应该设置的fontsize大小
            //3. 根据设计图和基本fontsize算出目标手机下应有的fontsize
            //640:基准:设计图总宽
            var fontSize = viewPotWidth*40/640; 
            console.log(fontSize);
            //把计算出来的fontsize真正地赋值给html
            document.documentElement.style.fontSize = fontSize + 'px';
        </script>

以后用这个js版本!直接拷贝即可

    <script>
        /*动态改变根元素字体大小*/
                function recalc() {
                    var clientWidth = document.documentElement.clientWidth;
                    if(!clientWidth) return;
                    document.documentElement.style.fontSize = 100 * (clientWidth / 640) + 'px';
                }
                
                function initRecalc() {
                    recalc();
                    var resizeEvt = 'osrientationchange' in window ? 'orientationchange' : 'resize';
                    if(!document.addEventListener) return;
                    window.addEventListener(resizeEvt, recalc, false);//添加监听事件
                    document.addEventListener('DOMContentLoaded', recalc, false);
                }
                initRecalc();
    </script>

注意:一般情况下不要给正文的字体大小使用rem为单位,因为动态计算rem不能保证最后转化px单位时是一个整数,所以在pc端下查看时有可能会有模糊边缘

直接用px,因为相差不大

四、使用scss让布局更简便(结合js获取用户手机宽度,动态改变fontsize实现)

    @charset 'utf-8';
    $fontSize:40;
    @function r($p){
        @return $p/$fontSize*1rem;
    }
    //计算vm 百分比
    //@function v($p){
    //   @return $p/设计图总宽*100vm;
    //}
    
    html{
        font-size: $fontSize*1px;
    }
    body{
        font-size: 16px;
    }
    .test{
        width: r(180);
        height: r(100);
        background-color: skyblue;
}

五、保证宽高比的两种方法

    <style type="text/css">
            .test{
                width: 30%;
                height: 0;
                padding-top: 30%;
                background-color: #0A6F98;
                position: relative;
                overflow: hidden;
            }
            .test img{
                position: absolute;
                width: 100%;
                left: 50%;
                top: 50%;
                transform: translate(-50%,-50%);
            }
            .test2{
                width: 300px;
                height: 300px;
                background-color: #0000FF;
                overflow: hidden;
                position: relative;
                
            }
            .test2 img{
                /*width: 100%;*/
                position: absolute;
                left: -9999px;
                top: -9999px;
                right: -9999px;
                bottom:  -9999px;
                margin: auto;
                overflow: hidden;
            }
        </style>
        <div class="test">
            <img src="../2018.12.27 HTML第一节课/img/map.jpg"/>
        </div>
        <div class="test2">
            <img src="../2018.12.27 HTML第一节课/img/map.jpg"/>
        </div>

六、vh vw单位的使用(兼容性较差,类似百分比,不能精细调像素)

vw:viewport宽度上的百分比,不是屏幕。
vh:viewport高度上的百分比,不是屏幕。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容