从前慢-移动WEB开发之rem适配布局

Posted Java大世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从前慢-移动WEB开发之rem适配布局相关的知识,希望对你有一定的参考价值。

前言

想要获取该该课程markdown笔记(脑图+笔记)。
搜索微信公众号-Java大世界。回复rem,即可
获取笔记获取方式。

移动WEB开发之rem适配布局

1.1 rem 基础

rem (root em)是一个相对单位,类似于em,em是父元素字体大小。

不同的是rem的基准是相对于html元素的字体大
<!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>
html {
font-size: 12px;
}

div {
font-size: 12px;
width: 15rem;
height: 15rem;
background-color: purple;
}

p {
/* 1. em相对于父元素 的字体大小来说的 */
/* width: 10em;
height: 10em; */

/* 2. rem 相对于 html元素 字体大小来说的 */
width: 10rem;
height: 10rem;
background-color: pink;
/* 3.rem的优点就是可以通过修改html里面的文字大小来改变页面中元素的大小可以整体控制 */
}
</style>
</head>

<body>
<div>
<p></p>
</div>

</body>

</html>

1.2 媒体查询

媒体查询(Media Query)是CSS3新语法。
使用 @media查询,可以针对不同的媒体类型定义不同的样式
@media 可以针对不同的屏幕尺寸设置不同的样式
当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和
高度重新渲染页面
目前针对很多苹果手机、android手机,平板等设备都用得到
多媒体查询
@media mediatype and|not|only (media feature) {
CSS-Code;
}
<!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>
/* 这句话的意思就是:在我们屏幕上 并且 最大的宽度是 800像素 设置我们想要的样式 */
/* max-width 小于等于800 */
/* 媒体查询可以根据不同的屏幕尺寸在改变不同的样式 */

@media screen and (max-width: 800px) {
body {
background-color: pink;
}
}

@media screen and (max-width: 500px) {
body {
background-color: purple;
}
}
</style>
</head>

<body>

</body>

</html>

1.3 mediatype 查询类型

1.4 关键字

关键字将媒体类型或多个媒体特性连接到一起做为媒体查询的条件。

and:可以将多个媒体特性连接到一起,相当于“且”的意思。
not:排除某个媒体类型,相当于“非”的意思,可以省略。
only:指定某个特定的媒体类型,可以省略.

1.5 媒体特性

1.6 媒体查询案例修改背景颜色

<!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>
/* 1. 媒体查询一般按照从大到小或者 从小到大的顺序来 */
/* 2. 小于540px 页面的背景颜色变为蓝色 */

@media screen and (max-width: 539px) {
body {
background-color: blue;
}
}
/* 3. 540 ~ 970 我们的页面颜色改为 绿色 */
/* @media screen and (min-width: 540px) and (max-width: 969px) {
body {
background-color: green;
}
} */


@media screen and (min-width: 540px) {
body {
background-color: green;
}
}
/* 4. 大于等于970 我们页面的颜色改为 红色 */

@media screen and (min-width: 970px) {
body {
background-color: red;
}
}
/* 5. screen 还有 and 必须带上不能省略的 */
/* 6. 我们的数字后面必须跟单位 970px 这个 px 不能省略的 */
</style>
</head>

<body>

</body>

</html>

1.7 媒体查询+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>

1.8 引入资源

<!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>
/* 当我们屏幕大于等于 640px以上的,我们让div 一行显示2个 */
/* 当我们屏幕小于640 我们让div一行显示一个 */
/* 一个建议:我们媒体查询最好的方法是从小到大 */
/* 引入资源就是 针对于不同的屏幕尺寸 调用不同的css文件 */
</style>
<link rel="stylesheet" href="style320.css" media="screen and (min-width: 320px)">
<link rel="stylesheet" href="style640.css" media="screen and (min-width: 640px)">
</head>

<body>
<div>1</div>
<div>2</div>
</body>

</html>

1.9 less 基础

Less中文网址:http://lesscss.cn/
需要安装node.js再安装less
npm install -g less

1.9.1 变量

必须有@为前缀
不能包含特殊字符
不能以数字开头
大小写敏感
// 定义一个粉色的变量
@color: pink;
// 错误的变量名 @1color @color~@#
// 变量名区分大小写 @color 和 @Color 是两个不同的变量
// 定义了一个 字体为14像素的变量
@font14: 14px;
body {
background-color: @color;
}
div {
color: @color;
font-size: @font14;
}
a {
font-size: @font14;
}

1.9.2 Less 嵌套

.header {
width: 200px;
height: 200px;
background-color: pink;
// 1. less嵌套 子元素的样式直接写到父元素里面就好了
a {
color: red;
// 2. 如果有伪类、交集选择器、 伪元素选择器 我们内层选择器的前面需要加&
&:hover {
color: blue;
}
}
}
.nav {
.logo {
color: green;
}
&::before {
content: "";
}
}

1.9.3 Less 运算

任何数字、颜色或者变量都可以参与运算。就是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;
}
// 1. 我们运算符的左右两侧必须敲一个空格隔开
// 2. 两个数参与运算 如果只有一个数有单位,则最后的结果就以这个单位为准
// 3. 两个数参与运算,如果2个数都有单位,而且不一样的单位 最后的结果以第一个单位为准
该文章篇幅太大,想了解更多,点击阅读原文即可!
可能会出现微信没有相应,点击等待即可。


以上是关于从前慢-移动WEB开发之rem适配布局的主要内容,如果未能解决你的问题,请参考以下文章

移动WEB开发之rem适配布局

移动WEB开发之rem适配布局

从前慢-移动WEB开发之百分比布局及flex布局

移动Web开发之rem实际开发适配方案

移动web开发之rem的使用

使用Flexible & swiper进行移动Web开发