移动端
- 逻辑分辨率 屏幕的宽高 px
- 设备分辨率 屏幕中一共拥有的物理像素点的个数
- 物理像素点指的是屏幕显示的最小颗粒,是物理真实存在的。
- PPI 单位英寸内的物理像素点个数,值越大,屏幕越清晰
- 设备像素比 设备分辨率和逻辑分辨率的比例,可以理解为屏幕的清晰度的倍数
- 好的影像质量搭配好的设备才是最清晰的
多倍图
-
前端需要解决的问题
- 一套代码:可以自动识别当前设备屏幕的清晰度,自动加载对应清晰度的图片
-
美工给三张图片 1倍 2倍 3倍 3. srcset属性可以自动识别并加载对应清晰度图片
<img srcset="./images/1.jpg 1x, ./images/2.jpg 2x, ./images/3.png 3x" />
- 布局视口:版心980px
- 理想视口:
- meta标签(对网页设置语言,设置seo关键字)
- name 告诉 meta标签 设置viewport
- content 设置视口内容
- width = device-width 视口的宽度等于屏幕的宽度
- initial-scale=1.0 设置网页打开的时候 缩放的倍数 1.0 没有缩放(通常情况下没有需要缩放网页)
- maximum-scale=1 允许缩放,最大缩放的倍数1.0
- minimum-scale=1 允许缩放,最小缩放的倍数1.0
- user-scalable=no 控制是否允许用户双击手指或者捏合手势缩放网页
- no 不允许,不同厂商的浏览器缩放倍数不一样,从而脱离了开发者的控制
- 开发者可通过js代码控制缩放动作
移动端布局
移动端 PC端 布局区别
-
pc端
-
定版心
-
页面中元素宽高几乎都是用px单位,定死大小
-
-
移动端
- 不用定版心
- 元素大小常用相对长度单位,百分比单位 rem vw vh, 屏幕越大,元素越大
移动端布局方式
- 流式布局:有弊端,不方便
- flex布局(弹性):好用方便,前端必学
flex布局(2w)!important
-
display: flex;——设置div编程flex盒子,弹性flex(df)
-
flex盒子
- flex盒子称之为父项
- 子元素称之为子项
-
具体变化
- 不再区分块级,行内块;全部都可以设置宽高
- 子项
- 宽度由内容撑开
- 高度等于父项的高度
- 使用浮动无效
- 使用定位、margin、transform有效
- 默认状态下:子项总宽度大于父项的宽度也不会换行!
-
flex不会换行,只会压缩自身的宽度
-
以下情况很重要,需要注意,英文,数字会被认为是整体,中文一个字就是整体,所以加了flex会被换行,需要在li标签加上另外的属性
white-wrap:space-nowrap;
<style> *{ margin: 0; padding: 0; box-sizing: border-box; } div { width: 200px; overflow-x: auto; margin: 100px auto; } ul { list-style: none; background-color: red; display: flex; } li { padding: 0 10px; border: 1px solid #000; display: flex; justify-content: center; align-items: center; white-space: nowrap; } </style> </head> <body> <div> <ul> <li>你好</li> <li>你好</li> <li>你好</li> <li>你好</li> </ul> </div> </body>
主轴对齐方式
justify-content(justify:两端对齐)
- 左对齐——flex-start
- 右对齐——flex-end
- 居中对齐——center
- 先两侧对齐,再平均分配空间——space-between(sb)
- 平均分配空间,不过两边的空间会比中间的空间小——space-around(sd)
- 绝对平均——space-evenly(sv)
侧轴-单行对齐
align-items
- flex-start——上对齐
- flex-end——下对齐
- center——垂直居中 aic
侧轴-多行对齐
align-content
- 上对齐——flex-start
- 下对齐——flex-end
- 垂直居中对齐——center
- space-between——两侧对齐
- space-around——两侧空间比中间空间小
- space-evenly(常用)——平均空间
换行属性
flex-wrap
- wrap——换行
- nowrap——不换行
修改主轴方向
flex-direction
- row——默认值,方向没有改变,排列方式从左到右(了解)
- row-reverse——方向没有改变,排列从右到左(了解)
- column——方向改变,XY轴调换,排列从上到下(常用)——高度由内容撑开,宽度继承父元素
- column-reverse——方向改变,排列从下到上(了解)
子项占父项宽高的比例
flex:;
- 值为纯数字,1值,(每个子项都占一份)
- 主轴方向改变时,则flex属性修改的是子项占父项高度
设置子项自己在侧轴的对齐方式
align-self
- flex-start——上对齐
- flex-end——下对齐
- center——居中对齐
单位
vw, vh
- vw, vh, 是相对长度单位,相对于屏幕宽高
- 100vw = 屏幕宽度
- 100vh = 屏幕高度
- 作用
- 移动端的屏幕适配(屏幕越大,元素越大,常用)
- 算法
css运算
calc
- 用在css中
- 写法
- width: calc(50vh * 100(设计稿盒子宽度)/ 375(设计稿宽度))
- 运算符两边一定要加空格
运算插件
px2vw
- 设计稿宽度不同,要在扩展设置修改设计稿宽度
rem
- rem是相对长度单位,参照的是跟标签 的font-size
- 默认 1rem = 16px (谷歌浏览器默认的字体大小是16px)
- 如果设置了 font-size: 1px;,会导致各大浏览器展示效果不一,所以通常不需要考虑小于12px的情况
- 使用前要先引入flexible.js