移动端-1(视口+二倍图+流式布局+flex布局)

目录

1.移动端基础

2.视口

布局视口layout viewport

视觉视口visual viewport

理想视口ideal viewport

总结

meta视口标签

3.二倍图

物理像素&物理像素比

多倍图

背景缩放background-size

多倍图切图

4.移动端开发选择

单独制作移动端页面

响应式兼容PC移动端

移动端浏览器

CSS初始化normalize.css

CSS3盒子模型box-sizing

特殊样式

移动端技术选型

5.流式布局(百分比布局)

京东案例

6.flex布局

布局原理

flex布局父项常见属性

flex-direction设置主轴方向

justify-content设置主轴元素排列方式

flex-wrap换行

align-items设置子元素在侧轴方向的排列方式(单行)

align-content设置元素在侧轴上的排列顺序(换行)

align-content 和 align-items的区别

flex-flow复合属性

flex布局子项常见属性

align-self设置子项在侧轴上的排列顺序

order属性定义项目的排列顺序

携程案例


1.移动端基础

2.视口

视口就是浏览器显示页面内容的屏幕区域。视口可以分为布局视口、视觉视口和理想视口

布局视口layout viewport

缺点:呈现在手机上的元素很小,要手动缩放页面

视觉视口visual viewport

可以通过缩放去操作视觉视口,但不会影响布局视口,布局视口仍保持原来的宽度;我觉得就是手机屏幕的大小

理想视口ideal viewport

需要手动添加meta视口标签通知浏览器操作

meta视口标签的主要目的:布局视口的宽度应该与理想视口的宽度一致,简单理解就是设备有多宽,布局视口就有多宽

总结

meta视口标签

<meta name="viewport"  content="width=device-width, user-scalable=no, initial-scale=1.0,  maximum-scale=1.0, minimum-scale=1.0">

initial-scale           初始缩放比,一般设置为1.0;若设置为2就是写好程序的2倍

maximum-scale    最大缩放比,大于0的数字

minimum-scale    最小缩放比,大于0的数字

user-scalable       用户是否可以缩放,yes或no(1或0)

3.二倍图

物理像素&物理像素比

物理像素点指的是屏幕显示的最小颗粒,是物理真实存在的

开发的时候1px不是一定等于1个物理像素的;如在iPhone8中,1px等于2个物理像素

1个px能显示的物理像素点的个数,称为物理像素比或屏幕像素比

Retina视网膜屏幕是一种显示技术,可以将更多的物理像素点压缩至一块屏幕里,从而达到更高的分辨率,并提高屏幕显示的细腻程度

多倍图

想要在手机中呈现出50px*50px的图片,可以用二倍图来提高图片质量,先插入100px*100px的图片,再在样式中将图片设置为50px*50px,这样在手机中打开的效果比直接插入50px*50px的图片好(在iPhone8中,因为1px=2个物理像素,就是会放大两倍)

在不同的设备中,因为物理像素比不同,所以会出现多倍图的使用

背景缩放background-size

background-size:背景图片宽度  背景图片高度;

可以只写一个参数,会进行等比例缩放

background-size:500px  500px;

background-size:50%;   图片宽度只占盒子的一半,高度随比例改变

background-size:cover;    图片等比例覆盖盒子,可能会使图片显示不完全

background-size:contain;   图片等比例扩大,知道宽或高中的一方达到盒子的边界停止,可能会·出现空白

多倍图切图

可以用background-size来改变插入图片的大小,切图时选择iOS来获得多倍图

4.移动端开发选择

单独制作移动端页面

响应式兼容PC移动端

移动端浏览器

CSS初始化normalize.css

CSS3盒子模型box-sizing

box-sizing-border-box

传统盒子模型:盒子宽度=CSS中设置的width+border+padding

CSS3盒子模型:盒子宽度width中包含了border和padding

也就是说CSS3中的盒子模型不会被padding和border撑大了

特殊样式

移动端技术选型

5.流式布局(百分比布局)

流式布局,就是百分比布局,也称非固定像素布局

将盒子的宽度设置成百分比来让盒子根据屏幕的宽度进行伸缩,不受固定像素的限制,内容向两侧填充

设置max-width最大宽度和min-width最小宽度,来限制伸缩的范围;因为伸缩过小可能会挤掉盒子

京东案例

二倍精灵图制作:先在ps中把整张图片缩小一半,再去测量所需要小图标的位置,在样式中用background-size也要把图片缩小一半

图片中间有空隙,给所有的图片添加vertical-align:top来清除空白空隙

DPG图片压缩技术和webp图片格式

选择子盒子,可以用公式,如n+2就是选择从第二个盒子开始往后面的全部盒子;设置左边框会挤掉盒子,这就需要css3盒子模型box-sizing:border-box;来解决边框挤掉盒子的问题

6.flex布局

布局原理

当父盒子设置为flex布局后,子元素的float、clear和vertical-align属性将会失效

给父容器添加flex属性,子元素的排列可以为横向也可以为竖向

在设置div中装有span时,必须在父盒子中添加display:flex效果才能呈现

flex布局父项常见属性

flex-direction:设置主轴的方向

justify-content:设置主轴上子元素的排列方式

flex-wrap:设置子元素是否换行

align-content:设置侧轴上的子元素的排列方式(多行)

align-items:设置侧轴上的子元素排列方式(单行)

flex-flow:复合属性,相当于同时设置了flex-direction和flex-wrap

flex-direction设置主轴方向

flex布局中,分为主轴和侧轴,行和列,x轴和y轴;确定一方为主轴后另一方即为侧轴

属性值:row默认是从左到右

                row-reverse从右到左

                column从上到下

                column-reverse从下到上

justify-content设置主轴元素排列方式

该属性只设置主轴子元素,所以在使用时一定要先确定好主轴是哪个

属性值:flex-start:默认是从头部开始,如果主轴是x轴,则从左到右

               flex-end:从尾部开始排列

                center:在主轴上居中对齐(x轴是水平居中,y轴是垂直居中)

                space-around:平分空间

                space-between:先将两侧的盒子贴边,中间的盒子再平分剩余空间

flex-wrap换行

给父盒子添加flex后,就算给子盒子设置了margin,在放置多个父盒子时(明显一行放不下),还是会在一行内显示,但是子盒子的宽度会被减小(为了一行内放下更多的子盒子)

可以选择nowrap属性

align-items设置子元素在侧轴方向的排列方式(单行)

该属性是控制子项在侧轴上的排列方式,子盒子只在一行上显示没有换行

属性值:flex-start:

               flex-end:

               center:在侧轴方向上居中

               stretch:拉伸(通常是不给子元素设置高度,子元素的高度会和父元素的高度保持一样)

将子元素设置成在整个父盒子中处于中间位置:先设置justify-content:center,再设置align-items:center

左侧是以x轴为主轴,右侧是以y轴为主轴

align-content设置元素在侧轴上的排列顺序(换行)

该属性用在子元素出现换行的情况中,不要和以y轴为主轴的元素成多行显示搞混,该属性出现时是子盒子换行了,添加space-around在侧轴平分空间 、space-between在侧轴贴两侧中间平分和center在侧轴中间显示

align-content 和 align-items的区别

flex-flow复合属性

flex-flow 是 flex-direction 和 flex-wrap属性的复合属性

flex-flow: row wrap;

flex布局子项常见属性

flex属性定义子项目分配剩余空间,用flex来表示占多少份数,份数可以为1、2、3等

该图中就是定义一个div,在里面放置几个span,不给小盒子宽度,给小盒子设置flex:1来决定小盒子在大盒子中的占比是多少;下图就是第一个和最后一个盒子占比相同,中间的盒子占比更大

align-self设置子项在侧轴上的排列顺序

align-self可设置单个子项在侧轴上的排列顺序,可覆盖align-items属性

该图即为将第三个子盒子添加align-self属性,让它下到父盒子底部

order属性定义项目的排列顺序

数值越小,排列越靠前,默认为0(一般是将同一层次上的子盒子调换顺序),可以为负值


携程案例

利用flex布局来设置“上图下字”的样式:将y轴设置为主轴,利用align-items:center来将推按居中对齐

共同类名前缀[class^=.....]

给大盒子设置圆角时,发现没有显示出来,就给父盒子添加overflow:hidden

将图片设置为背景且添加background-size后图片不在指定位置,可在background中加上bottom center即可做到靠低端下面居中对齐

颜色渐变

必须添加浏览器私有前缀

起始方向可以是方位名词(默认是从上往下,可以是从左往右left,也可以是沿对角线top left)或者度数

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值