移动web--rem&less

71 阅读4分钟

一、什么是rem?

rem是现在主流的移动端自适应布局方案,rem是根元素字体的单位,rem单位是相对于HTML标签的字号计算结果,1rem = 1HTML字号大小,比如 html{font-size:16px;} ,1rem相当于16px。 不仅仅可以给字体用,其他px单位的都可以用,比如设padding:2rem ,相当于32px。

1、rem移动适配-媒体查询

目前rem布局方案中,将网页等分成10份, HTML标签的字号为视口宽度的 1/10

  • 写法
 /* 1,以视口宽度为375px为例  我们使用媒体查询 */
      @media (width: 375px) {
        /* 设置html标签的字体大小 */
        html {
          font-size: 37.5px;
        }
      }

      /* 2.适配414宽度 的手机 */
      @media (width: 414px) {
        html {
          font-size: 41.4px;
        }
      }

      /* 1rem=1html字号大小 */
      .box {
        width: 5.33rem;
        height: 5.33rem;
        background-color: purple;
      }
2、flexible

使用flexible js配合rem实现在不同宽度的设备中,网页元素尺寸等比缩放效果

  • flexible.js是手淘开发出的一个用来适配移动端的js框架。
  • 核心原理就是根据不同的视口宽度给网页中html根节点设置不同的font-size。
3.pc端媒体查询
/* 
      pc端的媒体一般条件为范围
      max-width  规定最大宽度
      min-width  规定最小宽度
       */
      @media (max-width: 1366px) {
        .box {
          width: 400px;
          height: 400px;
          background-color: skyblue;
        }
      }

      @media (min-width: 1366px) and (max-width: 1580px) {
        .box {
          width: 500px;
          height: 300px;
          background-color: orange;
        }
      }

      @media (min-width: 1580px) {
        .box {
          width: 600px;
          height: 400px;
          background-color: purple;
        }
      }

二、less语法

  • Less是一个CSS预处理器, Less文件后缀是.less
  • 扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力。
  • 注意:浏览器不识别Less代码,目前阶段,网页要引入对应的CSS文件。
1.注释
  • 单行注释
    • 语法:// 注释内容
    • 快捷键:ctrl + /
  • 多行注释
    • 语法:/* 注释内容 */
    • 快捷键: shift + alt + A
2.less语法的运算
/*
less计算:
  + - * 除法./或者()

注意点:
 1.单位在表达式之中不分顺序,表达式中如果有多个单位以第一个单位为准;

 2.写法规范:运算符前后要么都用空格隔开,要么前后都不要空格
*/
.box {
  width: 100 + 200px;
  height: 500px - 300;
  font-size: 10 * 10px;
  // line-height: 200px ./ 10;
  width: (500 / 100px);
  height: 300px + 200deg + 10rem;

  line-height: 100px+10px;

  width: 200 +10px;
}
3.less嵌套
// 1.生成后代选择器
.box {
  background-color: red;

  .title {
    width: 200px;
  }

  .footer {
    height: 200px;
  }
}

// 2.生成子代选择器 >
.father {
  > .son {
    color: #333;

    > .sun {
      font-size: 20px;
    }
  }
}

// 3.交集选择器 &符号指代的是直接上级
p.red {
  background-color: red;
}

p {
  &.red {
    background-color: skyblue;
  }
}

// 4.并集选择器
.box1,
.box2 {
  color: #333;
}

.box {
  .son1,
  .son2 {
    color: #000;
  }
}

// 5.伪类选择器  :hover
.box li:hover a {
  color: #666;
}
.box {
  li:hover {
    a {
      color: #333;
    }
  }
}

// &符号不生成后代选择器,表示直接上级
.box {
  li {
    span {
      &:hover {
        a {
          color: #999;
        }
      }
    }
  }
}

// 6.添加伪元素
.box {
  a::before {
    content: '';
  }

  a {
    &::after {
      content: '';
    }
  }
}

// 7.结构伪类选择器 直接写在选择器的后面是没有提示的
.header {
  li:last-child {
    margin-right: 0;
  }

  li {
    &:first-child {
      margin-left: 0;
    }
  }
}
4.less变量
  • 作用:存储数据,方便修改和使用---用法----1. 定义变量-->@变量名: 值; 2.使用变量-->CSS属性: @变量;
// 变量  @变量名: 值;
/* 大大节约维护代码成本 */
@themeColor: gold;
@fontSize: 18px;
body {
  background-color: @themeColor;
}

.box1 {
  background-color: @themeColor;
  font-size: @fontSize;

  .son {
    background-color: @themeColor;
  }
}

.footer {
  background-color: @themeColor;
  font-size: @fontSize;
}
5.less导入与导出
  • 导入---1.作用:引入其他less文件 2.写法:@import: ‘文件及路径’;
// @import "你要导入的文件路径";
@import url(./03-计算.less);
@import './04-嵌套.less';
  • 导出
    • 导出css文件:1.控制所有less导出路径---修改EasyLess插件-----a.设置-->搜索easy-->在settings.json中编辑 b.添加代码:"out": "目标存储路径"(文件夹以/结束)
    • 2.单独控制某个Less文件导出路径---less文件第一行添加 // out:路径
// out: ../css/
/*
注意点:
 1.css导出路径,后面一定要写/,如果不写只是普通的文件名,不要分号结尾;
 2.less配置信息,一般要写在第一行
*/
  • 禁止导出---less文件第一行添加: // out: false
//out: false
  • 压缩导出
    • 语法:// compress:true

三、vm/vh

  1vw = 1/100 视口宽度

  不需要引入任何的js文件,也不需要像rem一样去vscode配置文字大小

  例子:375px设备 1vw=3.75px

  (了解,用不到的)1vh = 1/100 视口高度