移动web开发布局模式(单独制作移动端界面二)之媒体响应与rem布局
单独制作移动端界面布局方式(媒体响应与rem布局)
1. rem基础
概念:不同的是rem的基准是相对于html元素的字体大小。
/* 根html 为 12px */
html {
font-size: 12px;
}
/* 此时 div 的字体大小就是 24px */
div {
font-size: 2rem;
}
优势:rem的优点就是可以通过修改html里面的文字大小来改变页面中元素的大小可以整体控制。
2. 媒体响应
2.1 媒体响应基本使用
- @media 可以针对不同的屏幕尺寸设置不同的样式
- 当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面
语法:
@media mediatype and|not|only (media feature) {
CSS-Code;
}
1.mediatype 媒体类型
2.关键字 and not only
- and:可以将多个媒体特性连接到一起,相当于“且”的意思。
- not:排除某个媒体类型,相当于“非”的意思,可以省略。
- only:指定某个特定的媒体类型,可以省略。
3.媒体特性(根据不同媒体类型的媒体特性设置不同的展示风格)
2.2 媒体响应使用案例(媒体查询与rem配合使用)
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
/* html {
font-size: 100px;
} */
/* 从小到大的顺序 */
@media screen and (min-width: 320px) {
html {
font-size: 50px;
}
}
@media screen and (min-width: 640px) {
html {
font-size: 100px;
}
}
.top {
height: 1rem;
font-size: .5rem;
background-color: green;
color: #fff;
text-align: center;
line-height: 1rem;
}
</style>
</head>
<body>
<div class="top">购物车</div>
</body>
</html>
3. Less
3.1 Less安装与使用
1.Less介绍:
Less(LeanerStyle Sheets 的缩写)是一门 CSS扩展语言,也成为CSS预处理器。它在CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能。
常见的CSS预处理器:Sass、Less、Stylus
2.Less安装:
①安装nodejs,可选择版本(8.0),网址:http://nodejs.cn/download/
②检查是否安装成功,使用cmd命令(win10是window+r 打开运行输入cmd) —输入“node –v”查看版本即可
③基于nodejs在线安装Less,使用cmd命令“npm install -g less”即可
④检查是否安装成功,使用cmd命令“ lessc -v ”查看版本即可
3.Less 编译 vocode Less 插件
Easy LESS 插件用来把less文件编译为css文件;只要保存一下Less文件,会自动生成CSS文件。
4. Less运算
- 变量必须有@为前缀
- 运算符中间左右有个空格隔开 1px + 5
- 对于两个不同的单位的值之间的运算,运算结果的值取第一个值的单位
- 如果两个值之间只有一个值有单位,则运算结果就取该单位
3.2 Less案例
代码如下:
@baseFont: 50px;//变量
html {
font-size: @baseFont;
}
@border: 5px + 5;//运算
div {
width: 200px - 50;
height: (200px + 50px ) * 2;
border: @border solid red;
background-color: #666 - #222;
}
img {
width: 82rem / @baseFont;
height: 82rem / @baseFont;
}
.header {
width: 200px;
height: 200px;
background-color: pink;
// 1. less嵌套 子元素的样式直接写到父元素里面就好了
a {
color: red;
// 2. 如果有伪类、交集选择器、 伪元素选择器 我们内层选择器的前面需要加&
&:hover {
color: blue;
}
}
}
4. rem布局(两种方案)
1.让一些不能等比自适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备。
2.使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化元素尺寸也会发生变化,从而达到等比缩放的适配。
4.1 Less+rem+媒体查询
总结:
①最后的公式:页面元素的rem值 = 页面元素值(px) / (屏幕宽度 / 划分的份数)
②屏幕宽度/划分的份数就是 htmlfont-size 的大小
③或者:页面元素的rem值 = 页面元素值(px) / html font-size 字体大小
案例:
1.设置公共common.less文件(然后由主css文件引入)
- 新建common.less 设置好最常见的屏幕尺寸,利用媒体查询设置不同的html字体大小。
// 设置常见的屏幕尺寸 修改里面的html文字大小
a {
text-decoration: none;
}
// 一定要写到最上面
html {
font-size: 50px;
}
// 我们此次定义的划分的份数 为 15
@no: 15;
// 320
@media screen and (min-width: 320px) {
html {
font-size: 320px / @no;
}
}
// 360
@media screen and (min-width: 360px) {
html {
font-size: 360px / @no;
}
}
// 375 iphone 678
@media screen and (min-width: 375px) {
html {
font-size: 375px / @no;
}
}
// 384
@media screen and (min-width: 384px) {
html {
font-size: 384px / @no;
}
}
// 400
@media screen and (min-width: 400px) {
html {
font-size: 400px / @no;
}
}
// 414
@media screen and (min-width: 414px) {
html {
font-size: 414px / @no;
}
}
// 424
@media screen and (min-width: 424px) {
html {
font-size: 424px / @no;
}
}
// 480
@media screen and (min-width: 480px) {
html {
font-size: 480px / @no;
}
}
// 540
@media screen and (min-width: 540px) {
html {
font-size: 540px / @no;
}
}
// 720
@media screen and (min-width: 720px) {
html {
font-size: 720px / @no;
}
}
// 750
@media screen and (min-width: 750px) {
html {
font-size: 750px / @no;
}
}
index.less引入common.less
// 首页的样式less文件
@import "common";
// @import 导入的意思 可以把一个样式文件导入到另外一个样式文件里面
4.2 Iflexible.js+rem
1.手机淘宝团队出的简洁高效 移动端适配库;我们再也不需要在写不同屏幕的媒体查询,因为里面js做了处理。
2.它的原理是把当前设备划分为10等份,但是不同设备下,比例还是一致的。我们只需要确定好我们当前设备的html 文字大小就可以了;剩余的,让flexible.js来去算。
总结:
- flexible是默认将屏幕分为10等分。
- 当屏幕大于750的时候希望不要再去重置html字体了;所以要自己通过媒体查询设置一下,并且要把权重提到最高。
第一种需要自行设置不同设备的阈值,与第一种方式不同的是,第二种方式可以自己适配屏幕的大小,自动做出变化,所以更加的简洁高效。