rem(root em)是一个相对单位,类似于em,em是父元素字体大小;
不同的是rem的基准相对于html元素的字体大小;
比如,根元素(html)设置 font-size: 12px; 非根元素设置 width: 2rem; 此时换算成px表示 24px;
rem优点:就是可以通过修改html里面文字大小来改变页面中元素的大小可以整体控制;
媒体查询(Media Query)是 CSS3 新语法;
@media mediatype and|not|only (media feature) {
css-code;
}
/*
@media:关键字;
mediatype:媒体类型;
and|not|only:关键字;
media feature:媒体特性 必须有小括号包含
*/
将不同的终端设备划分为不同的类型,称为媒体类型
值 | 解释说明 |
---|---|
all | 用于所有设备 |
用于打印机和打印预览 | |
scree | 用于电脑屏幕,平板电脑,只能手机等 |
关键字将媒体类型或多个媒体特性链接到一起作为媒体查询的条件
每种媒体类型都具有各自不同的属性,根据不同媒体类型的媒体特性设置不同的展示风格,注意要加小括号
值 | 解释说明 |
---|---|
width | 定义输出设备页面可见区域宽度 |
min-width | 定义输出设备页面最小可见区域宽度 |
max-width | 定义输出设备页面最大可见区域宽度 |
示例
/* 建议从小往大开始写 */
@media screen and (max-width: 539px) {
body {
background-color: pink;
}
}
/* 这里最后一个条件可以去掉,为了演示多个写法故而加上 */
@media screen and (min-width: 540px) and (max-width: 7990px) {
body {
background-color: hotpink;
}
}
@media screen and (min-width: 800px) {
body {
background-color: plum;
}
}
当样式比较繁多的时候,我们可以针对不同的媒体使用不同的stylesheets(样式表);
原理:就是直接在link标签中判断设备尺寸,然后引入不同的css文件;建议从小到大书写;
<link rel="stylesheet" href="./width320.css" media="screen and (min-width: 320px)" />
<link rel="stylesheet" href="./width640.css" media="screeb and (min0-width: 640px)" />
Less (Leaner Style Sheets 的缩写) 是一门css扩展语言,也称为 css预处理器;
作为css一种形式的拓展,它并没有减少css的功能,而是在现有的语法上,为css加入程序式的语言特性;
它在css的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了css的编写,并且降低了css的维护成本;
Less中文网:http://lesscss.cn/
常见的css预处理器:Less, Sass, Stylus
.less 文件是无法被html识别的,这里推荐一个 vscode 插件 easy Less,此插件可以把less文件编译成css文件
// @变量名: 值;
// 上面引用,下面调用,开头必须是@
@color: pink;
body {
background-color: @color;
}
子元素的样式直接写到父元素里面
.nav {
.logo {
color: pink;
}
}
伪类,交集选择器,伪元素选择器,内层选择器前加 &
a {
&:hover {
content: "";
}
}
@border: 5px + 1;
body {
width: 200px - 50;
height: 200px * 0.5;
// 如果前后运算的值都存在单位,那么以第一个为准
border: (@border + 1) / 7 + 1rem;
}
1,让一些不能等比例自适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备
2,使用媒体查询根据不同设备按照比例设置html字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化,元素尺寸也会跟着变化,从而达到等比缩放的效果;
1,按照设计稿与设备宽度的比例,动态计算并设置html根标签的font-size大小;(媒体查询)
2,css中,设计稿元素的宽,高,相对位置等取值,按照同等比例换算为 rem 为单位的值;
动态设置html标签 font-size 大小
1, 假设设计稿是750px
2, 假设我们把整个屏幕划分为15等份(可以是20也可以是10)
3, 每一份作为html字体的大小,这里就是50px
4, 那么320px设置的时候,字体大小为 320 / 15 就是 21.33px
5, 用我们元素的大小除以不同的html字体大小会发现他们的比例还是相同的
6, 比如以750为标准的设计稿,一个100 * 100的盒子 就是100/50转换为rem就是 2rem * 2rem;320的屏幕下,html的字体大小为21.33 则 2rem = 42.66px 此时宽和高还是等比例缩放;但是已经实现了不同屏幕下,元素盒子等比例缩放
元素大小的取值方法
1, 最后的公式:页面的rem值 = 页面元素(px) / (屏幕宽度 / 划分的份数)
2, 屏幕宽度 / 划分的份数就是 html font-size 的大小
3, 或者页面元素的 rem = 页面元素值 / html font-size大小
原文:https://www.cnblogs.com/article-record/p/12514924.html