一、今日学习内容:
- 移动端的调试方法
- Chrome DevTools 谷歌模拟手机调试(常用)
- 视口
- 什么是视口(viewport)
- 视口就是浏览器显示页面内容的屏幕区域,视口可以分为布局视口,视觉视口和理想视口
- 布局视口(Layout viewport)
- 一般移动端的浏览器都默认设置了一个布局视口,用于解决pc端页面在手机上的显示问题,基本这个视口的分辨率是980px,所以PC端大多都能在手机上展现,但是元素看上去非常小,可以手动进行缩放
- 视觉视口(Visual vieaport)
- 用户正在看到的得网站区域,操作视觉视口时,不会影响布局视口
- 理想视口(Ideal viewport)
- 为了使网站在移动端有最理想的浏览和阅读宽度而设定的
- 物理像素和物理像素比
- 物理像素值得是屏幕显示的最小颗粒,是物理上真是存在的,在设备出厂时就设置好的,比如:iPhone6: 750x1334
- 开发的时候用的单位1px,1px不一定等于一个物理像素
- 如果把一张100x100的图片放到手机里面,会按照物理像素比进行缩放
- 物理像素比的计算方式
- 比如iPhone6的屏幕尺寸 750x1334 ,开发尺寸为375x667 ,所以物理像素比就是2
- 多倍图
- 对于一张50px*50px的图片,在手机上打开,按照2倍的物理像素比,会将图片进行放大从而变模糊
- 处理方式
- 1、将一个在PC端是100px*100px的图片先缩小为50px*50px
- 背景缩放
- 属性:
- background-size:背景图片的宽度 背景图片的高度;
- 移动端开发选择及技术方案
- 移动端的主流方案
- 1、单独制作移动端页面(主流)
- 打开设备时,自动进行判断,如果是PC端就显示PC端的网站,如果是移动端设备,就跳转到移动端页面
- 2、响应式网站
- PC端和移动端共用一套网站,在不同屏幕下,网页的样式会自动进行适配
- 移动端的技术解决方案
- 1、移动端的浏览器兼容性问题
- 国内浏览器基本都是一webkit内核为主,因此只考虑webkit的兼容性即可
- 3、可以大量使用C3的盒子模型
- 如果PC端需要更多浏览器完全兼容,就用传统模式,如果不考虑兼容,或者在移动端使用,就可以直接使用C3盒子模型,也就是box-sizing:border-box;
- 流式布局
- 概念
- 通过对盒子的宽度进行百分比设置来达到根据屏幕的宽度进行响应伸缩的目的,不受规定像素限制
- flex布局
- 传统布局和flex布局的对比
- 传统布局:
- 兼容性好、布局繁琐、局限性(不能再移动端进行很好的布局)
- flex布局
- PC端有一定的兼容问题,但是大部分PC端浏览器也是支持flex布局
- 建议
- 如果是移动端或者不考虑PC端兼容性的,都可以采用flex进行布局
- flex的布局原理
- flex-->弹性布局,任何一个盒子都可以指定为flex
- 当我们给父级盒子指定了flex布局后,子元素里面的float、clear和vertical-align属性都将失效
- 采用flex布局的元素,成为flex容器(flex container),简称“容器”,它的所有子元素自动成为容器成员,叫做flex项目(flex item),简称“项目”
- flex布局里面的父项常见属性
- flex-direction:设置主轴的方向
- 在flex布局中分为x轴和y轴,默认的主轴是x轴,也就是水平向右,也可以将主轴设置为y轴,也就是垂直向下
- justify-content:设置主轴上子元素的排列方式
- align-items:设置侧轴上的子元素的排列方式(单行)
- align-content:设置侧轴上的子元素的排列方式(多行)
- 设置子项在侧轴上的排列方式,只能用于多行子项的情况(子项换行时),单行没有效果
- 属性
- space-between:子项在侧轴先两侧贴边,然后再平分剩余空间
- align-items和align-content区别
- align-items适用于单行情况下,只有上对齐、下对齐、居中和拉伸
- align-content适用于多行情况下(单行无效),上对齐、下对齐、居中和拉伸以及平分剩余等属性
- flex-flow复合属性
- 是flex-direction和flex-wrap的复合属性
- flex布局子项常见属性
- align-self 控制子项自己在侧轴上的排列方式
- 默认值auto,表示继承父元素的align-items属性,如果自己有align-self,就用自己的属性
- order(排列前后顺序)属性定义项目的排列顺序
- 注意:不要和z-index(排列盒子上下顺序)混淆
- flex来控制子项占的份数
- 注意:
- 如果一个子项有自己的宽度高度,那么其他子项有flex:1; 就代表将剩余的部分进行平分。
|