弹性布局


主题列表:juejin, github, smartblue, cyanosis, channing-cyan, fancy, hydrogen, condensed-night-purple, greenwillow

贡献主题:https://github.com/xitu/juejin-markdown-themes

theme: cyanosis

highlight: monokai-sublime

一、分栏布局

1.设置栏数(最大栏数)

语法:column-count:数值;

2、设置每栏的宽度(最小宽度)

语法:column-width:数值+单位;

注:设置每栏的最小宽度,当屏幕缩小的时候,当每栏宽度小于最小栏数的时候,就不允许再小,所以这个 时候,它就会减少栏数。 但是 当屏幕足够大的时候,他会增加栏数;当设置最大栏数的时候,他会给每栏增加宽度,而不会增加栏数。

3、设置栏间距

语法:column-gap:数值+单位;

注:当给多的时候,他会改变栏数。

4、设置栏分隔线 css 语法:column-rule: 3px solid|dashed|dotted|double red; 实线|虚线|双线 5.设置是否跨栏显示

语法:column-span:none(默认值)|all(跨栏显示);

注:该属性给需要跨栏显示的元素设置。

注:瀑布流的实现(纯css)

二、弹性布局

注:也可以叫flex布局。 css 语法:display: flex; 注:给父元素设置display: flex;,子元素 就变成块元素了。 说明:

I.给元素设置了display:flex;就成为了弹性盒

II.父元素设置flex后,子元素的float(浮动),clear(清除浮动),vertical-align将会失效

III.我们把设置了flex的父元素称之为Flex容器,把子元素称之为 Flex项目

IV.当设置了flex布局后,会产生两根轴线:主轴和交叉轴(侧轴)

1、Flex容器属性

1)设置主轴的方向(flex项目排列的方向)

css 语法:flex-direction: row|row-reverse|column|column-reverse; row                     默认值,主轴在水平方向,起点在左端

row-reverse        主轴在水平方向,起点在右端

column               主轴在垂直方向,起点在上沿

column-reverse  主轴在垂直方向,起点在下沿

注:设置了display:flex; 之后就算内容超出容器也不会换行显示,之后超出容器 继续展示。

设置了那个属性,那个属性所对应的 就是主轴。

2)设置flex项目单行或多行显示

css 语法:flex-wrap: nowrap|wrap|wrap-reverse; nowrap 不换行,flex项目在一行显示(默认值)

wrap flex项目多行显示

wrap-reverse flex项目多行显示,的顺序是倒过来的

3)flex-direction和flex-wrap的简写方式

css 语法:flex-flow:row nowrap; (默认值)

4)设置主轴对齐方式

css 语法:justify-content: flex-start|flex-end|center|space-between|space-around;

flex-start 对齐主轴的起点

flex-end 对齐主轴的终点

center 居中对齐

space-between flex项目两端对齐,中间间隔相等

space-around flex项目两侧间隔相等

5)设置交叉轴对齐方式

css 语法:align-items: flex-start|flex-end|center|baseline|stretch; flex-start 对齐交叉轴的起点

flex-end 对齐交叉轴的终点

center 以交叉轴为参考,居中对齐

baseline flex项目第一行文字基线对齐

stretch flex项目没有设置高度或者为auto,将占满整个父元素的高度


使用flex布局的方式实现未知大小的元素在屏幕窗口水平垂直都居中: ```css html,body{ /让html和body的高度为屏幕窗口的高度(窗口高度自适应)/ height:100%; }

body{ display:flex; justify-content:center; align-items:center; } *使用flex布局的方式实现未知大小的子元素在父元素中水平垂直都居中* css 父元素 { display: flex; justify-content: center; align-items: center; } ```


6)设置多根轴线对齐方式

注:只有在多行的时候,才会生效。 css 语法:align-content: flex-start|flex-end|center|space-between|space-around|stretch; flex-start             对齐交叉轴的起点

flex-end              对齐交叉轴的终点

center                 以交叉轴为参考居中对齐

space-between   交叉轴两端对齐,轴线之间的间隔平均分布(第一行 对齐起点,最后 一行对其终点,中间间隔相等)

space-around      Flex项目(沿交叉轴方向)之间的间隔相等

stretch                 flex项目没有设置高度或为auto,占满整个父元素的高度(这个是在多行的时候,并且没有设置高度,他会根据多行 去占满元素)

2、Flex项目属性

注:Flex项目属性 是给子元素加的。

1)设置flex项目排列顺序

css 语法:order: 整数值; 注:值越小越靠前(用它可以改变Flex的项目顺序)。

2)设置flex项目单独的交叉轴对齐方式

css 语法:align-self: flex-start|flex-end|center|baseline|stretch; html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title></title> <style> * { margin: 0; padding: 0; } div { width: 800px; height: 600px; background: pink; /* 给父元素设置display:flex;,子元素 就变成块元素了 */ display: flex; justify-content: space-around; align-items: center; } p { display: block; height: 30px; width: 60px; text-align: center; line-height: 30px; border: 1px solid black; } div p:nth-child(1){ /* 希望它对其交叉轴的起点 */ align-self: flex-start; } div p:nth-child(2){ /* 这个 其实不用写 */ align-self: center; } div p:nth-child(3){ align-self:flex-end; } </style> </head> <body> <div> <p>一</p> <p>二</p> <p>三</p> </div> </body> </html>

3)设置flex项目的放大比例

css 语法:flex-grow: 0|1|数值; 0 默认值,不放大

1 放大(1以上的 就是放大,写多少 他就是放大的比例)。

注:它可以等比例 放大(最后都会根据比例 去占满夫元素的 剩余空间)。

flex-grow默认值为0,即使父元素存在剩余空间也不放大

flex-grow值为1时,flex项目等比例放大

4)设置flex项目的缩小比例

css 语法:flex-shrink: 0|1|数值; 注:flex-shrink默认值为1,当父元素空间不足时,flex项目等比例缩小

       flex-shrink值为0时,flex项目不缩小,并且仍然在一行显示

5)设置flex项目占据主轴的空间

css 语法:flex-basis: auto | 数值 | 百分比;

6)flex-grow(放大),flex-shrink(缩小),flex-basis(主轴占据空间)的简写方式

语法:flex:0 1 auto; (默认值)

注:flex:1; <=> flex:1 1 0%;

应用一:实现了flex项目等比例分配空间 html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>应用一:实现了flex项目等比例分配空间</title> <style> * { margin: 0; padding: 0; } div { width:100%; height: 200px; background:black; display: flex; } .box{ /* 下面是等比例空间 */ /* flex-basis:0%; flex-grow: 1; flex-shrink: 1; */ /* 这个 也是简写 */ /* flex:1 1 0%; */ flex:1; } .box:nth-child(1){ background: cornflowerblue; } .box:nth-child(2){ background: cyan; } .box:nth-child(3){ background: darksalmon; } </style> </head> <body> <div> <!-- 他们三 均分父 --> <div class="box"></div> <div class="box"></div> <div class="box"></div> </div> </body> </html>

应用二:实现了分配剩余空间给某个flex项目(这个也叫双飞翼布局) ```html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值