flex弹性布局

流式布局

1.移动端浏览器兼容性较高 是webkit内核

移动端调试方法

1.谷歌浏览器模拟手机(当前主要)

2.搭建本地web服务器

3.使用外网ip

视口 (viewport)

浏览器显示页面内容的屏幕区域分为布局视口(不合适,980px等放在手机上展示效果不好),视觉视口(用户正在看到的区域,但是可能显示不全),理想视口(设备有多宽,页面有多大。meta视口标签)

meta视口标签

image-20200912142043601

移动端的页面都要写这样一句话。

二倍图

物理像素/物理像素比

像素是真实存在的,电脑端的像素和我们布局的像素是一一对应的,但是手机端不是。

有一个像素比的关系。比如iphone8,页面的1px,对应手机2px。物理像素比dpr。

物理像素比

由于视网膜屏,这里一个像素由四个(2*2)更小的像素替代

所以图片等被放大了,会出现模糊,所以我们放一个100x100的图片,然后我们手动的把他缩小到50x50

两倍图

要把100x100手动缩小

设置样式 image-20200912145112709

还有三倍,四倍等

背景图片缩放

规定背景图片的尺寸

1.background-size:图片的宽度 图片的高度 background-size:200px 300px

2.根据百分比,按照父盒子的宽高的百分比 background-size:50% 50%

3.cover,contain.

​ cover要求把盒子完全盖住(等比例放大),可能图片会显示不全、

​ contain 把图片拉伸,宽度和高度谁先铺满到父盒子边缘,就停止

使用cutterman可以切出多倍图

image-20200912151508581

移动端的主流开发方案

1.单独开发移动端的页面(主流方案)

​ 基于webkit内核,对h5c3的兼容性特别高

​ 移动端的时候使用normalize.css来初始化页面 npm install normalize.css

2.响应式的页面开发(调试兼容性问题,比较麻烦)

CSS3的新的盒子模型

1.传统盒子模型 box-sizing:content-box

​ 实际上盒子的大小是width+padding+margin+border的大小

2.css3的盒子模型 box-sizing:border-box

​ 不计算padding/border,他们不会再撑大盒子,从边框开始算盒子大小

移动端的特殊样式

image-20200912162324478

移动端布局选择的原则

image-20200912163141263

采取什么形式的开发,由项目经理决定的。

流式布局(百分比布局)

按照百分比布局,同时建议

设置最大和最小宽度,max-width:980px,min-width:320

Flex布局

1.传统布局和flex布局

传统布局很繁琐,但是兼容性比较好,可以做到很多浏览器兼容

flex布局兼容较差,但是很开发更加简单

2.flex初体验

可以自适应屏幕改变,无需清除浮动 display:flex,设置号flex之后,行内元素也可以设置宽高了

3.flex的布局原理

flex也叫弹性布局,任何一个容器都可以使用flex布局,容器的子元素叫做项目

image-20200912165520804

总结:通过给父盒子设置flex属性,来控制子盒子的排列方式

4.flex布局父项常见的属性

image-20200912165806730

1.主轴和侧轴flex-direction ,默认从左向右

flex-direction:row 这是默认

flex-directin:row-reverse 从右向左

flex-direction:colomn 把y轴设为主轴

2.设置主轴上的排列方式justify-content(首先要确定谁是主轴,别弄错了)

justify-content:flex-start :默认,贴着左边对其

justify-content:flex-end:贴着右边对其,center是居中对齐,space-around平分剩余空间(左右的margin都相等,1000-800=200,200/4=50 ,然后他们每个元素左右各25)

space-between:两边元素先贴边,然后其他元素再平分剩余空间

flex会让子元素再一行显示

3.flex-wrap (一行满了会不会换行)

flex默认的子元素是不换行的,如果撑不开,会缩小子元素,让他们在一行显示

默认值是no-wrap, wrap在装不开会换行

4.align-items 设置侧轴的排列方式,不是主轴的那个轴式侧轴

align-items: stretch 如果主轴式row,不设置高度的情况,该项目会拉伸到底部

flex-start,flex-end,center,scretch等

5,align-content 设置多行侧轴的排列方式

出现换行(多行)的时候,设置align-content来实现侧轴的排列方式

6.flex-flow 设置主轴方向和是否换行的合写

flex-flow: row wrap .设置行为主轴,设置换行

5.flex布局子项常见的属性

1.flex属性(flex的值表示占几份)

定义子项目分配剩余空间,用flex来表示占多少份数

image-20200912194117269

左右占据一份的时候,在中间的样式设置flex:1,他一个则分了中间的剩余元素

如果3个元素平分剩余空间,flex:1则是给每个元素都分配一分,但是可以通过单独给一个元素设置flex:2让中间的占据两份。

2.align-self 控制某一个子项在侧轴上的排列方式

center,flex-start,flex-end,strentch等属性

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

数值越小排列越靠前

三个span的值依次1,2,3.他们的order式0,-2,-1 则它们的显示效果是2 ,3,1

posted @ 2020-09-12 19:55  li33的博客  阅读(628)  评论(0编辑  收藏  举报