移动web一 屏幕适配

代码下载

相对单位

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

rem:相对于html元素字体大小(优点是通过修改html字体大小使页面元素大小得到整体控制)


    

媒体查询

媒体查询(Media Query)是CSS3新语法。

使用 @media 查询,可以针对不同的媒体类型定义不同的样式,可以针对不同的屏幕尺寸设置不同的样式

当重置浏览器大小的过程中,页面也会根据浏览器的克度和高度重新渲染页面,目前针对很多苹果手机、Android手机,平板等设备都用得到多媒体查询。

语法

  • 用 @media 开头 注意@符号
  • mediatype 媒体类型(all 用于所有设备,print 用于打印机或打印预览,screen 用于电脑、平板、手机等设备)
  • 关键字 and not only(and 可以将多个媒体特性连接到一起,相当于“且”的意思,not 排除某个媒体类型,相当于“非”。的意思,可以省路,only 指定某个特定的媒体类型,可以省路。)
  • media feature 媒体特性,必须由小括号包含(width 输出设备页面可贝区域的竞度,min-width 翰出设备页面最小可见区域宽度,max-width 定义输出设备中页面最大可见区域竞度)
@media mediatype and|not|only (media feature) (
    CSS-Code;
}

注意点:

  • 为了防止混乱 ,媒体查询我们要按照从小到大或者从大到小的顺序来写
  • 有最大值 max-width和最小值min-width都是包含等于的
  • 后面的档位会覆盖与前面的档位冲突的部分

    
  • 屏幕宽度小于600为红色
  • 屏幕宽度600到700为蓝色
  • 屏幕宽度大于800为绿色

使用 媒体查询 和 rem 可以实现元素动态变化:

    

    
购物车

引入资源

当样式比较繁多的时候,可以针对不同的媒体使用不同 stylesheets(样式表)。原理,就是直接在link中判断设备的尺寸,然后引用不同的 css 文件。

语法规范:

针对小于640的屏幕引入不同的 css 文件:

    
    

Less

CSS 是一门非程序式语言,没有变量、函数、SCOPE(作用域)等概念。

  • CSS 需要书写大量看似没有逻辑的代码,CSS冗余度是比较高的。
  • 不方便维护及扩展,不利于复用。
  • CSS 没有很好的计算能力
  • 非前端开发工程师来讲,往往会因为缺少CSS编写经验而很难写出组织良好且易于维护的CSS代码项目。

Less (Leaner Style Sheets 的缩写)是一门CSS扩展语言,也成为CSS预处理器。做为 CSS 的一种形式的扩展,它并没有减少 CSS的功能,而是在现有的CSS语法上,为CSS加入程序式语言的特性。

它在CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了CSS 的编写,并且降低了CSS 的维护成本,就像它的名称所说的那样,Less可以让我们用更少的代码做更多的事情。详情参考 less中文网。

基于nodejs在线安装Less:

  • 使用cmd命令 “npm install-g less"
  • 检查是否安装成功,使用cmd命令 “lessc-v" 查看版本即可

Less 编译

本质上,Less包含一套自定义的语法及一个解析器,用户根据这些语法定义自己的样式规则,这些规则最終会通过解析器,编译生成对应的CSS 文件。所以,需要把less文件,编泽生成为css文件,这样html页面才能使用。

Easy LESS 插件用来把less文件编译为css文件,安装完毕插件,重新加载 vscode。只要保存一下Less文件,会自动生成CSS文件。

基本使用

@变量名: 值;

变量命名规范:1、必须有@为前缀,2、不能包含特殊字符,3、不能以数字开头,4、大小写敏感。

less 可以嵌套书写,如果遇见(交集、伪类、伪元素选择器)。内层选择器的前面没有 &符号,则它被解析为父选择器的后代;如果有 & 符号,它就被解析为父元素自身或父元素的伪类。

任何数字、颜色或者变量都可以参与运算。就是Less提供了加(+)、减(-)、乘(*)、除(/) 算术运算。

  • 运算符左右用空格隔开 1px + 5,除法运算一定要加括号
  • 对于两个不同的单位的值之间的运算,运算结果的值取第一个值的单位
  • 如果两个值之间只有一个值有单位,则运算结果就取该单位
@mainColor: #666666 + #333333;
@textColor: red;
div.main {
    background-color: @mainColor;
    width: 100px * 2;
    height: (100px / 2) + 100;
    .text {
        color: @textColor;
    }
    > .text {
        font-size: 40px - 1rem;
    }
}


div.main {
  background-color: #999999;
  width: 200px;
  height: 150px;
}
div.main .text {
  color: red;
}
div.main > .text {
  font-size: 39px;
}

rem 屏幕适配

屏幕适配的目的是:

  • 让一些不能等比自适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备。
  • 使用媒体查询根据不同设备按比例设置htmnl的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化元素尺寸也会发生变化,从而达到等比缩放的适配。

具体做法:

  • 屏幕宽度度/划分的份数(份数不一定,一般根据设计稿定一个易于计算的数) 就是html font-size 的大小
  • 最后的公式:页面元素的rem值 = 页面元素值(px)/(屏幕宽度 /划分的份数)
  • 或者:页面元素的rem值 = 页面元素值( px)/ html font-size 字体大小