视频链接:https://www.bilibili.com/video/BV14J4114768?p=441
为什么出现rem布局,因为传统的布局面临这这样几个问题:
- 页面布局文字能否随着屏幕大小的变化而变化?
- 流式布局和flex布局主要针对与宽度布局,那高度如何设置?
- 怎么样让屏幕发生变化的时候元素高度和宽度等比例缩放?
rem基础
rem是一种单位,和em一样,是一种相对单位。
em是子元素相对与父元素字体的大小,而rem是元素相对于html元素的字体大小。这里的r就是root,即根的意思,“根”即html元素。媒体查询
基本使用
媒体查询(Media Query)是CSS3的新语法。
@media 可以针对不同的屏幕尺寸设置不同的样式。
@media meidatype and|not|only (media feature){CSS-Code;}
- 用@media 开头
- mediatype:媒体类型
- all:所有设备
- print: 用于打印机和打印预览
- screen: 用于电脑屏幕,平板电脑,手机等
- 关键字 and not only
- and 且
- not 非
- only 指定某个特定的媒体类型,可以省略
- media feature 媒体特性必须有小括号包含
- width:宽度
- min-width:最小可见区域宽度
- max-width:最大可见区域宽度
/* 在屏幕上 并且 宽度小于等于500时 body为粉红色 */@media screen and (max-width: 500px) {body {background-color: purple;}}/* 在屏幕上 并且 宽度小于等于800时 body为粉红色 */@media screen and (max-width: 800px){body {background-color: pink;}}
习惯上使用从小到大的顺序写,当发生冲突时,后面的代码会把前面的覆盖。
温馨提示:媒体查询和rem更配哦~
引入资源
如果大屏和小屏的布局差异过大,那就别瞎搞了,直接整几套不同的CSS样式,不同的屏幕尺寸选择不同的样式文件,这里的样式文件就是所谓的“资源”。
一句话:针对不同的屏幕大小,调用不同的CSS文件。
<!DOCTYPE html><html lang="en"><head><title>媒体查询——引入资源</title><!-- 依然按照从小到大的方式 --><link rel="stylesheet" href="小.css" media="screen and (min-width: 300px)"><link rel="stylesheet" href="中.css" media="screen and (min-width: 600px)"><link rel="stylesheet" href="大.css" media="screen and (min-width: 900px)"></style></head></html>
less基础
why less?
CSS的弊端:
- 没有变量、函数、作用域等概念
- 冗余度高,没有逻辑,不易扩展
- 没有计算能力
- 非专业前端,没有丰富经验,难以写出高质量CSS代码
what less?
Less(Leaner Style Sheets的缩写)是一门CSS扩展语言,也成为CSS预处理器。它在CSS现有语法上,加入了程序语言的特性。
How Less?
1、变量
要求:
- 必须以
@作为前缀 - 不能包含特殊字符
- 不能以数字开头
- 大小写敏感
// 『定义方式』@变量名:值;@footer-color: pink;// 『使用方式』@变量名footer{color: @footer-color;}
2、编译
VSCode插件:Easy Less
每次保存xxx.less文件时,自动生成xxx.css文件。
3、嵌套
见名思义。
.header {width: 200px;height: 100px;div {background-color: pink;a {&:hover { //使用$表示“父”元素color: blue;}}}}
4、运算
在Less中,任何数字、颜色、变量都可以参与运算。Less提供了基本的四则运算。
注意:
- 确定1个rem有多大:按照设计稿与设备宽度的比例,动态计算并设置html根标签的font-size大小(媒体查询)
- 看每个元素有几个rem:CSS中,设计稿元素的宽、高、相对位置等取值,按照同等比例换算为rem为单位的值。
技术方案一:Less + 媒体查询 + rem

<!DOCTYPE html><html lang="en"><head><title>rem适配方案</title><style>@media screen and (min-width: 320px) {html {font-size: 21.33px;}}@media screen and (min-width: 750px) {html {font-size: 50px;}}div {width: 2rem;height: 2rem;background-color: pink;}/* 1. 首先我们选一套标准尺寸 750为准2. 我们用屏幕尺寸 除以 我们划分的份数 得到了 html 里面的文字大小 但是我们知道不同屏幕下得到的文字大小是不一样的 *//* 3. 页面元素的rem值 = 页面元素在 750像素的下px值 / html 里面的文字大小 */</style></head><body><div></div></body></html>
