html flex几个属性,CSS Flex布局属性整理

Flex布局

display: flex; 将对象作为弹性伸缩盒展示,用于块级元素

display: inline-flex; 将对象作为弹性伸缩盒展示,用于行内元素

注意兼容问题:

webkit内核浏览器应使用前缀-webkit

IE浏览器,可以很好的兼容IE11+版本,对于IE10只有部分可以兼容,且使用时需增加-ms,IE10浏览器中容器定义成弹性伸缩盒时,需使用display: -ms-flexbox

示例的dom结构:

1
2
3

基础样式设计:

.box {

width: 200px;

height: 200px;

background-color: #58a;

}

.item {

width: 50px;

height: 50px;

margin: 2px;

background-color: #fb3;

}

Flex 作用于Box容器上的6个属性介绍

1、flex-direction

用于指定Flex主轴的方向,继而决定 Flex子项在Flex容器中的位置

取值:row | row-reverse | column | column-reverse

row:默认值,表示水平方向从左到右排列,此时水平方向轴线为主轴

row-reverse:与row相反

column:表示垂直方向从上到下排列,此时垂直方向轴线为主轴

column-reverse:与column相反

flex-direction四种取值的效果图如下:

6f7354ce512a89035a74727964e01e35.pngrow.png

cceffac7e5725c9a8f70bb5e73f168a4.pngcolumn.png

2、flex-wrap

用于指定Flex子项是否换行

取值:nowrap | wrap | wrap-reverse

nowrap:默认值,表示不换行,Flex子项可能会溢出

wrap:表示换行,溢出的Flex子项会被放到下一行

wrap-reverse:表示反方向换行

flex-wrap三种取值的效果图如下:

5aa85488cb780fb92a4844f6fef4cad4.pngwrap.png

从示例图中不难发现,换行以后两行之间产生了很大的间距,这个问题,在后面介绍的 align-content 属性中可以得到很好的解决。

3、flex-flow

复合属性,是flex-direction 和 flex-wrap 的简写属性,是用于指定Flex子项的排列方式

4、justify-content

用于指定主轴(水平方向)上Flex子项的对齐方式

取值:flex-start | flex-end | center | space-between | space-around

flex-start:默认值,表示与行的起始位置对齐

flex-end:表示与行的结束位置对齐

center:表示与行中间对其

space-between:表示两端对齐,中间间距相等。要注意特殊情况,当剩余空间为负数或者只有一个项时,效果等同于flex-start

space-around:表示间距相等,中间间距是两端间距的2倍。要注意特殊情况,当剩余空间为负数或者只有一个项时,效果等同于center

justify-content 的前三种取值的效果图如下:

54e1b8e47658eee9018e1b4542fe3d66.pngjustify-content.png

justify-content 取值为 space-between 的效果图如下(注意特殊情况下效果等同于flex-start):

021c22ba46c1ccef4010505243da98ef.pngspace-between.png

justify-content 取值为 space-around 的效果图如下(注意特殊情况下效果等同于center):

ac5b04b686fe30d1d4fda892d08a30f6.pngspace-around.png

5、align-items

用于指定侧轴(垂直方向)上Flex子项的对齐方式

取值:stretch | flex-start | flex-end | center | baseline

stretch:默认值,当Flex子项未设置高度或者高度值为auto时,stretch起作用,将Flex子项高度设置为行高度。这里需要注意,在只有一行的情况下,行的高度为容器的高度,即Flex子项高度为容器的高度

flex-start:表示与侧轴开始位置对齐

flex-end:表示与侧轴的结束位置对齐

center:表示与侧轴中间对其

baseline:表示基线对齐,当行内轴与侧轴在同一线上,即所有Flex子项的基线在同一线上时,效果等同于flex-start

align-items 取值为 stretch 的效果图如下:

b0334ff2bb30c6fd8247720422d32d59.pngstretch.png

align-items 取值为 flex-start flex-end center 的效果图如下:

10d24aac35f2ff1da4279adbe6de7e0c.pngalign-items.png

align-items 取值为 baseline 的效果图如下:

c71f171b0d06a00305cb29a193a5e475.pngbaseline.png

6、align-content

该属性只作用于多行的情况下,用于多行的对齐方式

取值:stretch | flex-start | flex-end | center | space-between | space-around

stretch:默认值,当Flex子项未设置高度或者高度值为auto时,stretch起作用,将Flex子项高度设置为行高度。

flex-start:表示各行与侧轴开始位置对齐,第一行紧靠侧轴开始边界,之后的每一行都紧靠前面一行

flex-end:表示各行与侧轴的结束位置对齐,最后一行紧靠侧轴结束边界,之后的每一行都紧靠前面一行

center:表示各行与侧轴中间对其

space-between:表示两端对齐,中间间距相等。要注意特殊情况,当剩余空间为负数时,效果等同于flex-start

space-around:表示各行之间间距相等,中间间距是两端间距的2倍。要注意特殊情况,当剩余空间为负数时,效果等同于center

再次强调:该属性只作用于多行的情况,在只有一行的Flex容器上无效,另外该属性可以很好的处理,换行以后相邻行之间产生的间距。

align-content 各个取值的效果图如下:

5674bf9fc1d7730788c5fa9b40329d77.pngalign-content.png

Flex 作用于子项上的6个属性介绍

1、order

该属性用来指定Flex子项的排列顺序,数值越小,越靠前,可以为负数

取值:数值,默认值为0

2、flex-grow

用来指定Flex子项的扩展比例,不可以为负数,Flex容器会根据Flex子项设置的扩展比例作为比率来分配剩余空间

取值:数值,默认值为0,表示即使存在剩余空间,Flex子项也不会扩展

如下图中,按照1:3分配剩余空间:

4ed406a600384e68a8b6aae7c61b8a83.pnggrow.png

3、flex-shrink

用来指定Flex子项的收缩比例,不可以为负数,Flex容器会根据Flex子项设置的收缩比例作为比率来收缩各个Flex子项

取值:数值,默认值为1,表示所有子项在剩余空间为负数时,等比例收缩

注意:flex-shrink只能在不换行的情况下使用

如下图中,按照1:3收缩:

f501d115af4f1dda8878a0fc9c44103b.pngshrink.png

4、flex-basis

用来指定Flex子项的占据的空间,不可以为负数

取值:auto | length | percentage | content

auto:默认值,计算规则:检索Flex子项是否设置了width值(或者height值,取决于flex-direction),如果设置了非auto的值,则使用width值(或者height值),若没有则使用content

length:用长度值定义宽度,不可为负数

percentage:使用百分比定义宽度,不可为负数

如下图中,为Item设置 flex-basis: 50%; ,在按照1:3分配剩余空间:

49b74d6cdc06dc41091964a7a6c0c56d.pnggrow.png

容器宽度为200px,Item1原始宽度为50px,设置 flex-basis: 50%;后宽度变成100px,扩展后宽度为110.5px;而Item2原始宽度为50px,扩展后为81.5px,比例正好是1:3

注意:

设置flex-grow进行分配剩余空间,或者使用flex-shrink进行收缩都是在flex-basis的基础上进行的;

当flex-basis的值以及width(或者height)的值均为非auto时,

1)若content长度同时大于flex-basis的值以及width(或者height)的值,此时以flex-basis与width(或者height)中值大的为准 ,但是,如果子项设置了overflow: hidden;或者overflow: auto;,此时以flex-basis值为准;

2)若content长度同时小于flex-basis的值以及width(或者height)的值,此时以flex-basis值为准;

3)若content长度小于flex-basis的值,大于width(或者height)的值,此时以flex-basis值为准;

4)若content长度大于flex-basis的值,小于width(或者height)的值,此时以content自身长度值为准;

当width(或者height)的值为auto时,且内容的长度大于flex-basis设置的值,此时以content自身长度值为准,且不能进行flex-shrink收缩。相反如果内容的长度小于flex-basis设置的值,则会使用flex-basis设置的值;

当存在最小值 min-width(min-height)时,且 flex-basis的值小于最小值时,宽度以最小值为准,当 flex-basis的值大于最小值时,以 flex-basis的值为准

5、flex

复合属性,是flex-grow 、 flex-shrink 和 flex-basis 的简写属性,用来指定Flex子项如何分配空间

取值:none | 各拆分项属性

none:0 0 auto

auto:1 1 auto

1:1 1 0%

0 auto 或 initial:0 1 auto 即初始值

注意:

flex-grow:默认值为0,若省略则被默认为1

flex-shrink:默认值为1,省略时默认为1

flex-basis:默认值为auto,省略时默认为0%

6、align-self

用来单独指定某Flex子项的对齐方式

取值:auto | flex-start | flex-end | center | baseline | stretch

auto:默认值,查找父元素的align-items值,如果没有则取值为stretch

其他值同align-items

如果想了解更多关于Flex布局的内容,可以查看Flex布局应用

CSS常见布局问题整理

实现div的水平居中和垂直居中 多元素水平居中 实现栅格化布局 1. 实现div的水平居中和垂直居中 实现效果: 这大概是最经典的一个题目了,所以放在第一个. 方法有好多, 一一列来 主要思路其实就是 ...

flex布局笔记整理

flex布局笔记整理 了解-webkit-box 利用postcss进行css代码的向后兼容时,display:flex兼容后的代码常会带有display:-webkit-box. 部分移动端内核较低 ...

CSS flex 布局快速入门

以前已经学过flex了,一直没做笔记,现在做下笔记再回忆下. 首先,flex布局的迷之属性们,如果一知半解,机械记忆的话,那不到半个月基本忘光光.先感受一下这12个flex布局属性,是不是很“迷”人. ...

CSS Flex布局整理

Flex布局 display: flex; 将对象作为弹性伸缩盒展示,用于块级元素 display: inline-flex; 将对象作为弹性伸缩盒展示,用于行内元素 注意兼容问题: webkit内核 ...

弹性布局(Flex布局)整理

一.  弹性布局 一个好的网站都有让用户看上去很舒服的布局,一个网站的布局也会或多或少影响到它的浏览量,看完阮大神的博客,就想把弹性布局整理一下. 在平时的我们常用的布局类型有以下几种: 1.浮动+定 ...

轻轻松松学CSS:Flex布局

Flex布局就是"弹性布局",它可以简便.完整.响应式地实现各种页面布局.引入弹性布局的目的,当页面需要适应不同的屏幕大小确保元素拥有恰当的布局方式,对一个容器中的子元素进行排列 ...

css flex布局

关于flex布局的一些简单用法 效果(下图) 实现代码:

CSS网页布局垂直居中整理

一.使用CSS3处理垂直居中方式 1.使用Flex布局处理(推荐),简单好用 body,html{ width:100%; height:100%; } .out { width: 20%; heig ...

CSS样式常用属性整理

web工程师是最近5年刚刚兴起的一门高薪职业,人们的专注度越来越高. 那么前端除了学习html标签之外还需要掌握什么知识点呢? 为大家整理了一个和HTML标签密不可分的知识要点--

随机推荐

IOS VFL屏幕自适应

-(void)fun1{ //注意使用VFL,不用设置视图的frame UIView *view = [[UIView alloc] init]; view.backgroundColor = [UI ...

用Jekyll在github上写博客——《搭建一个免费的,无限流量的Blog》的注脚

本来打算买域名,买空间,用wordpress写博客的.后来问了一个师兄,他说他是用github的空间,用Jekyll写博客,说很多人都这么做.于是我就研究了一下. 比较有价值的文章有这么几篇: htt ...

sping获取bean方法 解决资源耗尽

// ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationCon ...

struts1与struts2的区别

Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...

从A页面跳转到B页面,从B页面按浏览器自带按钮返回到A页面并且刷新页面--手机操作浏览器自带返回并自带刷新

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值