《部分案例代码下载》
学习目标
- 了解less的作用
- 能够了解less的基本语法
- 能够理解rem和em的区别
- 掌握媒体查询+rem适配
- 能够完成苏宁rem布局首页
。。。。。。
理解上课的知识点……
LESS的学习
在写css的时候,可以直接写一个.css文件,但是实际开发中也会使用less的方法写css。
less的写法比css的写法功能更加强大。
维护css的弊端
css是一门非编程式语言,没有变量、函数、作用域等概念
css需要书写大量没有逻辑的代码,冗余度较高
比如:相同的样式往往css中需要写很多次,而你却无可奈何
不方便维护和拓展,不利于复用
比如:更改网页的主题色css需要一个一个的修改,而你却无可奈何
css没有很好的计算能力
比如:css中的大小不能直接填写计算式子,一般要手动计算后填写结果
使用less就能解决以上css中的弊端
Less的介绍
Less 是一门 CSS 预处理语言,也叫做css的预处理器。它扩展了 CSS 的写法,增加了变量、函数等特性。
1 | less作为css的拓展,并没有减少css的功能,而是在现有的css语法中,加入了程序式语言的特性 |
注意点:
- 在less中,完全兼容css的语法,所以可以直接在less文件中写css没问题
- 浏览器不认识less文件,需要需要使用less中的样式,需要先把less文件编译成.css文件,再使用!!
less的编译插件及配置
less写完之后需要编译.css文件才能使用,此时可以使用VScode中的插件完成。
插件的安装步骤:
选择左侧第五个拓展按钮,下载插件
easy less
,点击安装,再点击重新加载安装好之后,重新加载或者关闭vscode重新打开
实际开发中需要对插件进行配置
让编译好的css文件在css文件夹中
在设置代码中添加一下配置即可
使用的时候直接复制粘贴,注意在上一行的最后加一个逗号
设置完之后需要重新打开vscode即可
1
2
3"less.compile": {
"out": "../css/"
}
注意点:
以后项目中如果有less文件之后,样式都在less文件中写即可,不用去修改css文件
因为css文件都是less编译之后的结果,只需要关注less的修改即可
但是页面中引入的必须是编译之后的css文件,因为less文件浏览器不认识。
Less语法
less的注释
在less文件中可以写两种注释
- 一种是css的注释:
/* 注释的内容 */
,最后会编译展示在css文件中 - 一种是less的注释:
// 注释的内容
,只在less中使用,不会编译展示在css文件中
一般在less文件中,推荐使用less的注释方法
less的变量
一般在网站中会有主题色(当前网页中用的较多的颜色),如果此时需要改换网页的主题色,一个个去改非常麻烦,此时可以使用less中的变量完成效果
语法:
1 | 变量:可以变化的量 |
例子:
1 | @mainColor:#e92322; |
less的嵌套
在less中,选择器的关系可以通过嵌套来表示
1 | // less中的嵌套:less中选择器可以嵌套 |
————————
less的运算
在less代码中可以直接写加减乘除进行计算
1 | .box { |
less的函数(了解)
针对于css中重复的样式,除了可以使用定义公共类的方式,还可以使用less中的函数来处理(函数在之后的js会详细说到,先简单了解下)
需求:
每一个选择器中的width和height代码都重复了,节省代码的方式
1 | .red { |
- 可以提取出一个公共类出来,然后给对应的标签上加公共类
- 也可以使用less中的函数,给选择器上使用函数也可以
- 语法:
.函数名(){重复的样式}
1 | // 在less中也一种处理重复样式的方法:函数。直接在选择器里面使用 |
拓展:
函数里面可以传参,让函数中样式的取值变化(变化的量→变量)
比如让红盒子
100*100
, 蓝盒子200*200
,绿盒子300*300
1 | .common(@value) { |
ヾ(๑╹◡╹)ノ” 使用less实现京东头部
带同学们熟悉less写项目的操作
视口:
1
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
全局容器
————————
rem布局
em和rem的认识
在布局中,除了px之外,还有两个常见的单位,em和rem
em: 相对于当前元素的字体大小→ 1em = 当前标签的font-size
rem: 相对于根元素(html)的字体大小→ 1rem = html标签的font-size
浏览器默认的font-size的大小为16px
之后会使用rem单位完成rem布局(等比例缩放)的效果
rem布局的效果:
- 屏幕越大,标签就越大
- 屏幕越小,标签就越小
rem布局的原理:
- 当屏幕越大,让html标签的font-size变大即可
- 当屏幕越小,让html标签的font-size变小即可
怎么检测屏幕大小变化呢?通过媒体查询的方式动态改变html标签的font-size的大小
为什么要用rem布局
之前的流式布局或者响应式布局并不能完美的显示设计图的效果,并不能解决所有屏幕适配的问题。而rem能做到:等比例的适配所有的屏幕。
现状:
由于市面上手机种类繁多,导致移动端的屏幕种类非常的混乱,比如有常见的320px 360px 375px 384px 480px 640px
等。在开发中,UI一般只会提供 750px
或者是 640px
的设计稿,这就要求我们通过一张设计稿能够适配所有的屏幕。常见的方案有以下:
流式布局:
但是目前使用流式布局的网页还是较多的,比如 亚马逊
- 优点:各种屏幕都适配,都能看
- 缺点:只有当屏幕大小和设计图相同时才能完美还原设计图,其他屏幕下都会拉伸
响应式布局:
一般多用于简单的网页和从零开始的站点。
- 优点:一套页面可以适配多个客户端。
- 缺点:对于复杂的网页来说工作量太大,维护性太难。
rem布局:
- 优点:rem布局盒子适配所有的屏幕,并且可以在多个屏幕大小中完美还原设计图(等比例缩放)
————————
rem布局适配多个屏幕
rem布局适配的原理说白了,就是根据屏幕的大小,动态的改变html标签的font-size的大小,此时就可以配合媒体查询做到不同屏幕的适配
需求:
当320设计图中div的宽高为200*200,此时要求使用rem适配 375
、 414
、640
的屏幕
先把px的单位转换成rem单位——》需要除以html标签的font-size的大小
针对于设计图的尺寸自定义一个好算的font-size的大小
配合媒体查询适配不同的屏幕——》需要根据比例等比例缩放
每一个屏幕的宽度与font-size的比例是相等的!!!
所以求出设计图尺寸的比例之后,之后的屏幕的font-size的值就是——》屏幕宽度/比例
注意点:
因为要求页面是等比例缩放的,所以:
屏幕1宽度/屏幕1html标签font-size
= 屏幕2宽度/屏幕2html标签font-size
保证屏幕宽度与html标签font-size的比例相同,就可以轻松适配多个屏幕
1 | /* |
苏宁易购
项目搭建
images文件夹
less文件夹(之后使用less写项目)
- 有index.less
- 有base.less
新建html页面
引入css文件
移动端项目设置视口
1
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
- 设置全局容器
rem布局首先进行适配工作
适配的步骤:
- 先适配设计图的屏幕大小(比如:750px),并且根据设计图屏幕大小定义一个html标签的font-size的大小(比如:50px),此时屏幕大小与font-size的比例为15
- 因为是等比例缩放的,所以每一个适配的屏幕大小与font-size的比例都是相同的,所以各个屏幕大小除以比例就能得出font-size的大小
1 | // 苏宁官网中适配了:750 720 540 480 424 414 400 384 375 360 320 |
————————–
px2rem插件的使用
在写项目中,每一次都需要手动写式子把px转换成rem比较麻烦,此时可以使用vscode的插件,完成对应的效果
安装插件 px2rem
每次写数字px之后,会有提示转换成rem,按下键回车即可
插件中默认html的font-size的大小为16px,所以默认是除以16的如果需要更改,需要进行配置(如:设计如是750,html标签的font-size的大小为50px,此时应该除以50)
在设置中搜索px2rem,然后直接修改设置即可,注意设置完了之后需要重启才能生效!!