移动 WEB 开发布局方式 ---- rem 适配布局

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201107221650272.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

一、rem 基础

1. rem 单位

em :
相对于父元素的字体大小来说的

<div>
    <p></p>
</div>
div {
        font-size: 12px;
    }
    p {
        width: 10em;
        height: 10em;
        background-color: pink;
    }

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201107222550161.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

rem:
相对于 html 元素字体大小来说的

    html {
        font-size: 16px;
    }
    div {
        font-size: 12px;
    }
    p {
        /*width: 10em;*/
        /*height: 10em;*/
        width: 10rem;
        height: 10rem;
        background-color: pink;
    }

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201107222835258.PNG?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

总结:rem的优点就是可以通过修改html里面的文字大小来改变页面中元素的大小,页面中元素大小可以控制

二、媒体查询

2.1 什么是媒体查询

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108071219313.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

2.2 语法规范

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108071343560.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

1. mediatype 媒体类型

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108071509808.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

2. 关键字

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108071606526.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

3. 媒体特性

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108072613431.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)
栗子:

<style>
    /*这句话的意思就是:在我们屏幕上,并且 最大的宽度是 800像素 设置我们想要的样式*/
    /*max-width 小于等于800*/
    /*媒体查询可以根据不同的屏幕尺寸在改变不同的样式*/
    @media screen and (max-width: 900px){
      body{
          background-color: pink;
       }
    }
    @media  screen  and (max-width: 600px) {
        body{
            background-color: purple;
        }
    }
</style>

在这里插入图片描述
栗子2:根据页面宽度改变页面背景颜色
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108073133368.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108073251315.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

<style>
    /*1. 小于 540 px 页面的背景变为蓝色*/
    @media screen and (max-width: 539px){
        body{
            background-color: blue;
        }
    }
    /*2. 540~970 页面的背景变成绿色*/
    /*@media screen and (min-width: 540px) and (max-width: 969px) {*/
    /*    body {*/
    /*        background-color: green;*/
    /*    }*/
    /*}*/
    /*简写为:*/
    @media screen and (min-width: 540px){
        body{
            background-color: green;
        }
    }
    /*3.大于等于 970 页面背景变成红色  */
     @media screen and (min-width:970px){
        body{
            background-color: red;
        }
    }
</style>

在这里插入图片描述

2.3 媒体查询 + rem 实现元素动态变化

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108075844119.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)
栗子:

<style>
    *{
        margin: 0;
        padding: 0;
    }
    @media screen and (min-width: 320px) {
        html{
            font-size: 50px;
        }
    }

    @media screen and (min-width: 640px){
        html{
            font-size: 100px;
        }
    }
    .top {
        height: 1rem;
        font-size: 0.5rem;
        background-color: deeppink;
        color: #ffffff;
        text-align: center;
        line-height: 1rem;
    }
</style>
<body>
<div class="top">购物车</div>
</body>

在这里插入图片描述

2.4 引入资源

1 .语法规范

在这里插入图片描述

栗子:

需求:当我们屏幕大于等于 640px 以上的,我们让 div 一行显示 2 个
当我们屏幕小于 640 我们让div一行显示一个
建议媒体查询最好的方法是从小到大

<link rel="stylesheet" href="style320.css" media="screen and (min-width:320px)">
<link rel="stylesheet" href="style640.css" media="screen and (min-width:640px)">
<body>
<div>1</div>
<div>2</div>
</body>

style320.css

div {
    width: 100%;
    height: 100px;
}
div:nth-child(1){
    background-color: pink;
}
div:nth-child(2){
    background-color: purple;
}

style640.css

div {
    width: 50%;
    height: 100px;
    float: left;
}
div:nth-child(1){
    background-color: pink;
}
div:nth-child(2){
    background-color: purple;
}

在这里插入图片描述

总结:引入资源就是 针对不同的屏幕尺寸 调用不同的 CSS 文件

三、Less 基础

3.1 Less作用(维护 css 的弊端)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108085350446.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

3.2 Less介绍

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108085539255.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

3.3 Less 使用

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108085628912.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

3.4 Less 变量

![在这里插入图片描述]( https://img-blog.csdnimg.cn/2020110808581824.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)
栗子:

//定义一个颜色为粉色的变量
@color:pink;
//定义一个 字体为141像素的变量
@font14:14px;
body {
  background-color: @color;
}
div {
  background-color: @color;
  font-size: @font14;
}
a{
  font-size: @font14;
}

注意:
错误的变量名 @1color @color~#
变量名区分大小写 @color 和 @Color 是两个不同的变量

3.5 Less 编译

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108090650529.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)
vocode Less插件

Easy LESS 插件用来把 less 文件编译成 css 文件

  1. 安装完毕插件,重新下载下 vscode

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108091848988.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

  1. 只要保存一下 Less 文件,会自动生成CSS 文件

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108092021514.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108092114198.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

  1. 当修改 my.less 保存的时候 ,my.css 会自动的去修改

栗子:
my.less

//定义一个颜色为粉色的变量
@color:pink;
//定义一个 字体为24像素的变量
@font14:24px;
//错误的变量名 @1color @color~#
//变量名区分大小写 @color 和 @Color 是两个不同的变量
body {
  background-color: @color;
}
div {
  background-color: @color;
  font-size: @font14;
}

21.less的使用.html

<link rel="stylesheet" href="my.css">
<body>
<div>谁还不是一个小仙女呢!</div>
</body>

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108092904660.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

3.6 Less 嵌套

  1. 选择器的嵌套
    ![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108094202609.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

栗子:

less文件

.header {
    width: 200px;
    height: 200px;
    background-color:pink;
   // less嵌套 子元素的样式直接写到父元素里面即可
    a {
        color: red;
    }
}

被编译成css文件如下

.header {
  width: 200px;
  height: 200px;
  background-color: pink;
}
.header a {
  color: red;
}
  1. 交集、伪类、伪元素选择器的嵌套
    ![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108100147917.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

伪类栗子:
less文件

.header {
    width: 200px;
    height: 200px;
    background-color:pink;
    a {
        color: red;
        &:hover {
            color: blue
        }
    } 
}

被编译成css文件如下

.header {
  width: 200px;
  height: 200px;
  background-color: pink;
}
.header a {
  color: red;
}
.header a:hover {
  color: blue;
}

伪元素栗子:
less 文件

.nav {
   .logo{
       color: red;
   }
   &::before{
    content: "";
   }    
}

被编译成css 文件如下

.nav .logo {
  color: red;
}
.nav::before {
  content: "";
}

3.7 Less 运算

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108101014811.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108101041946.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

栗子1:
less文件

@border:5px + 5;
div {
   width: 200px - 50;
   height: 200px * 2;
   border:@border solid red
}
img {
   width:82 / 50rem;
   height: 82 / 50rem;
}

css 文件

div {
  width: 150px;
  height: 400px;
  border: 10px solid red;
}
img {
  width: 1.64rem;
  height: 1.64rem;
}

栗子2:
less文件

@baseFont:50px;
html{
    font-size: @baseFont;
}
img {
    width: 82rem / @baseFont;
    height: 82rem / @baseFont;
}

css 文件

html {
  font-size: 50px;
}
img {
  width: 1.64rem;
  height: 1.64rem;
}

总结:
1.运算符的左右两侧必须用空格隔开
2. 两个数参与运算,如果只有一个数有单位,则最后的结果就以这个单位为准
3. 两个数参与运算,如果两个数都有单位,并且单位不一致,则最后的结果以第一个数的单位为准

注意:
颜色也可以参与运算,比如
less文件
background-color:#666 - #222
css 文件:
background-color:#444

四、 rem 适配方案

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108104236511.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108104404289.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

4.1 rem 实际开发适配方案

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108104703424.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

4.2 rem 适配方案技术使用(市场主流)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108104829139.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

4.3 rem 实际开发适配方案一

rem + 媒体查询 + less

1. 设计稿常见尺寸宽度

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108105130737.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

2. 动态设置html 标签 font-size 大小

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108105608926.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

栗子:

<style>
    *{
        margin: 0;
        padding: 0;
    }
    @media screen and (min-width:320px){
        html{
            font-size: 22px;
        }
    }
    @media screen and (min-width:750px){
        html{
            font-size: 50px;
        }
    }
    div {
        width: 2rem;
        height: 2rem;
        background-color:pink;
    }
</style>
</head>
<body>
<div></div>
</body>

大屏下宽和高是 100px * 100px的
小屏下宽和高是 44px * 44px的
达到等比例缩放的效果

3. 元素大小取值的计算方法

在这里插入图片描述

总结:
原型大小的盒子 就是页面元素值: 100px * 100px
屏幕宽度:750px
划分的份数:15等份
屏幕宽度 / 划分的份数 就是 html font-size 的大小 = 750 / 15 = 50
页面元素的 rem值 : 100 / 50 = 2rem

五、苏宁首页案例制作

https://www.cnblogs.com/Chinatsu/p/14130701.html

六、rem 适配方案二

6.1 简洁高效的 rem 适配方案 flexible.js

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20201108152306459.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTAzNjEy,size_16,color_FFFFFF,t_70#pic_center)

6.2 使用 rem 适配方案二制作苏宁移动端首页

https://www.cnblogs.com/Chinatsu/p/14130714.html

posted @ 2020-12-13 22:19  杨芋可可  阅读(238)  评论(0)    收藏  举报