• 前端实训DAY-5——移动适配:rem


    移动适配——方案一:rem和less

    rem的基本使用

    rem:目前多数企业再用的解决方案(如小米官网)

    vw/vh:未来的解决方案(如bilibili)

    长度单位

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6SLlwEyU-1656084314999)(E:%5Ctypora%5CTypora%5Cimages%5Cimage-20220624091839764.png)]
    在这里插入图片描述

    代码:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    	<meta charset="UTF-8">
    	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>rem基本使用</title>
    	<style>
    		* {
    			margin: 0;
    			padding: 0;
    		}
    		/* 1.确定HTML标签的字号(根字号) 
    		表示 1rem == 20px*/
    		html {
    			font-size: 20px;
    		}
    
    		/* 2.使用rem作为单位设置尺寸 */
    .box {
    	width: 5rem;
    	height: 3rem;
    	background-color: pink;
    }
    
    	</style>
    </head>
    
    <body>
    	<div class="box"></div>
    </body>
    
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    rem适配——媒体查询

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    代码:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    	<meta charset="UTF-8">
    	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>rem适配</title>
    	<style>
    		* {
    			margin: 0;
    			padding: 0;
    		}
    
    		/* 1.根据视口的宽度,确定HTML标签的根字号: 取视口宽度的 1/10  */
    		@media (width: 320px) {
    			html {
    				font-size: 32px;
    			}
    
    		}
    
    		@media (width: 375px) {
    			html {
    				font-size: 37.5px;
    			}
    
    		}
    
    		@media (width: 414px) {
    			html {
    				font-size: 41.4px;
    			}
    
    		}
    
    		/* 2.根据根字号使用rem作为单位设置盒子大小 */
    		.box {
    			width: 5rem;
    			height: 3rem;
    			background-color: pink;
    		}
    	</style>
    </head>
    
    <body>
    	<div class="box"></div>
    </body>
    
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    px单位换算成rem单位

    在这里插入图片描述

    html代码:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    	<meta charset="UTF-8">
    	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>rem开发流程</title>
    	<link rel="stylesheet" href="./demo.css">
    </head>
    
    <body>
    	<!-- 需求:设置盒子大小,完成移动适配,375px的设计稿,宽度68px,高度 29px  -->
    	<div class="box"></div>
    
    </body>
    
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    css代码:

    /* 1.使用媒体查询,确定HTML的根字号 */
    @media (width: 320px) {
        html {
            font-size: 32px;
        }
    }
    
    @media (width: 375px) {
        html {
            font-size: 37.5px;
        }
    }
    
    @media (width: 414px) {
        html {
            font-size: 41.4px;
        }
    }
    
    /* 2. 确定rem的值:68px * 29px */
    .box {
        /*  68px/37.5 css不支持运算表达式的,所以不能这么写,得提前算出来*/
        width: 1.81333rem;
        /* 29/37.5 */
        height: 0.77333rem;
        background-color: pink;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    flexible.js基本使用

    在这里插入图片描述
    在这里插入图片描述

    html代码:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    	<meta charset="UTF-8">
    	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>rem开发流程</title>
    	<link rel="stylesheet" href="./demo.css">
    </head>
    
    <body>
    	<!-- 需求:设置盒子大小,完成移动适配,375px的设计稿,宽度68px,高度 29px  -->
    	<div class="box"></div>
    
    	<!-- 引入flexible.js -->
    	<script src="../js/flexible.js"></script>
    </body>
    
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    css代码:

    /* 2. 确定rem的值:68px * 29px */
    .box {
        /*  68px/37.5 */
        width: 1.81333rem;
        /* 29/37.5 */
        height: 0.77333rem;
        background-color: pink;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    js代码:将其命名为flexible.js

    (function flexible (window, document) {
      var docEl = document.documentElement
      var dpr = window.devicePixelRatio || 1
    
      // adjust body font size
      function setBodyFontSize () {
        if (document.body) {
          document.body.style.fontSize = (12 * dpr) + 'px'
        }
        else {
          document.addEventListener('DOMContentLoaded', setBodyFontSize)
        }
      }
      setBodyFontSize();
    
      // set 1rem = viewWidth / 10
      function setRemUnit () {
        var rem = docEl.clientWidth / 10
        docEl.style.fontSize = rem + 'px'
      }
    
      setRemUnit()
    
      // reset rem unit on page resize
      window.addEventListener('resize', setRemUnit)
      window.addEventListener('pageshow', function (e) {
        if (e.persisted) {
          setRemUnit()
        }
      })
    
      // detect 0.5px supports
      if (dpr >= 2) {
        var fakeBody = document.createElement('body')
        var testElement = document.createElement('div')
        testElement.style.border = '.5px solid transparent'
        fakeBody.appendChild(testElement)
        docEl.appendChild(fakeBody)
        if (testElement.offsetHeight === 1) {
          docEl.classList.add('hairlines')
        }
        docEl.removeChild(fakeBody)
      }
    }(window, document))```
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
  • 相关阅读:
    交叉编译嵌入式linux平台的gdb工具
    机器学习 | 降维:PCA主成分分析
    23、wpf之布局(一)
    8.CF446C DZY Loves Fibonacci Numbers 线段树Lazy标记
    67-94-hive-函数-开窗函数-常用函数-udf自定义函数
    基于协同过滤算法的电影推荐系统
    ViewModel的共享(上)
    C++继承详细解析+代码演示
    再次学习高精度
    详细实操分享,下班刷了两小时的搞笑视频,一个月收益7000多
  • 原文地址:https://blog.csdn.net/asacmxjc/article/details/125453819