前端布局-rem布局
em
- em是一个单位
- em是相对于父元素字体大小来定义子元素的宽和高
rem(root em)
- rem是一个单位
- 是一个相对单位,类似于em
- 不同的是rem是基于 html字体大小来定义元素的宽和高
- 优点
可以通过修改html的font-size大小来改变页面的元素大小,达到整体控制
媒体查询(media)
- 媒体查询可以根据不同屏幕尺寸改变不同的样式
- 格式
@media
可以针对不同的媒体类型定义不同的样式
当重置浏览器大小过程中,页面也会根据浏览器的宽度和高度重新渲染页面
目前针对很多苹果和安卓的设备,大多都用到媒体查询语法概览
@media mediatype and | not | only (media feature){ csss-code; } # mediatype 媒体类型 # all 用于所有设备 # print 用于打印机设备和打印预览 # screen 用于电脑屏幕,平板,手机等 # 关键字 # and 可以将多个媒体特性连接到一起作为媒体查询的条件 # not 排除某个特定的类型,相当于非 # only 指的是某个特定的媒体类型 # media feature 媒体特性(必须有小括号包含) # 例如 # width 定义输出设备中页面可见区域的宽度 # min-width 定义输出设备中页面最小可见区域宽度 # max-width 定义输出设备中页面最大可见区域宽度 # 和高度等
适配布局
- 因为rem单位是跟着html字体大小来走的,所以,可以通过 媒体查询和rem来做适配布局
- 媒体查询+rem就可以实现不同设备宽度,实现页面元素大小的动态变化
媒体查询-引入资源
- 当样式比较繁多的时候,我们可以针对不同的媒体使用不同的css样式表
- 原理
直接在link中判断设备的尺寸,然后引用不同的css文件
- 语法规范
<link rel="stylesheet" meida="mediatype and | not | noly (media feature) href="mystylesheet.css" # 举例 <link rel="stylesheet" href="要引入的css的样式地址" media="screen and (min-width:320px) and (max-width: 639px)"> # 意思是 当 页面的宽度大于320px 小于 639px时,就引入这个样式,
less基础
css的弊端
css是非程序语言,没有变量,函数,和作用域等概念
css需要书写大量的看似没有逻辑的代码,冗余度高
非前端工程师来讲,往往缺少css编写经验,很难写出组织良好,而且易于维护的css代码
less介绍
less是一门css扩展语言,也称为css预处理区
作为css的一种形式的扩展,它没有减少css的功能,而是在css的语法上,为css加入程序语言的特性
在css语法基础上,引入了变量,mixin(混入) 运算以及函数等功能,大大的简化了css的编写
降低了css的维护成本,less可以让我们用更少的代码做更多的事情
less安装
npm install -g less
lessc -v 查看版本号
less的使用
新建一个后缀名为.less为文件在less文件中书写less语句
变量的定义
没有固定的值,可以开边的
语法:
@变量名:值
命名规范
>1.必须以@为前缀
>2.不能包含特殊字符
>3.不能以数字开头
>4.大小写敏感less编译
可以通过vscod less插件(easyless)安装后,只要保存less文件就会自动生成css文件
less嵌套
如果遇到(交集|伪类|伪元素选择器)
内层选择器的前面没有&符号,则它就会被分析为父选择器的后代
内层选择器的前面有&符号,则它就会被分析为父元素自身或者父元素的伪类
如果遇到特殊的选择器就在前面添加&符号 (交集|伪类|伪元素选择器)
例子 # 这是一个less的样式 .nav{ // 在nav父元素中写.logo子元素 .logo{ color: green; } // 给nav添加before伪元素 &::before{ content: 'kml'; } } # 父元素 .nav 子元素 .logo # 这里.logo直接在.nav里面写就可以了而before元素需要加&才可以
less运算
运算就是运算,1+1这种
在less中,然和数字,颜色或者变量都可以参与运算
例子 # 这是一个less文件样式 # 先定义变量 @border:5px + 5; @baseFont:50px; # 写css样式 div{ # 计算 宽度 width: 200px - 50; height: (200px + 50) * 2; # 这里边框是 给的变量 border: @border solid red; background-color: pink; }
rem适配方案
让一些不能等比例适应的元素,达到当设备储存发生改变时,等比例适配当前设备
可以使用媒体查询,根据补鞥呢设备按比例设置html字体大小,然后页面元素,使用rem做尺寸单位,当html字体发生变化,元素尺寸也会发生变化,从而达到等比例缩放适配
实际开发适配方案
按照设计稿与设备宽度的比例,用媒体查询动态计算并设置html跟标签的font-size大小
然后将 css样式中盒子的宽和高等值转换成rem值即可
rem = px / html_font-size
可以采用 less + 媒体查询 + rem 或者 淘宝的flexible.js + rem
- 设计稿常见的尺寸宽度(手机)
苹果 4 5 640px
苹果 6 7 8 750px
安卓 320px 360px 375px 384px 400px 414px 500px 720px
大部分都是720px的 - 一般情况下用一套或者两套效果图适应大部分屏幕,放弃极端屏,对其优雅降级,牺牲一些效果,现在已750px为准
元素的取值方法
- 公式
页面元素的rem值 = 页面元素值(px) / (屏幕的宽度 / 划分的份数)划分的分数就是html的font-size大小
本博客所有文章是以学习为目的,如果有不对的地方可以一起交流沟通共同学习 邮箱:1248287831@qq.com!