您现在的位置是:网站首页> 编程资料编程资料
深入浅析CSS3中的Flex布局整理CSS实现动态图片的九宫格布局的实例代码css之display属性之inline-block布局实现详解详解CSS中的flex布局css用Flex布局制作简易柱状图的实现使用CSS和Java来构建管理仪表盘布局的实例代码
                     2021-09-03
                1013人已围观
                
                2021-09-03
                1013人已围观
            
简介 Flexbox布局模块旨在提供一个更有效的方式,在一个容器里面去布局分配空间。这篇文章给大家介绍CSS3中的Flex布局,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
Flexbox布局模块旨在提供一个更有效的方式,在一个容器里面去布局分配空间。即使容器的大小是未知的,或者动态变化的。
Flex 布局背后的主要思想是让容器能够改变其项目的宽度 / 高度(和顺序) ,以最佳地填充可用空间(主要是适应各种显示设备和屏幕大小)。 Flex 容器扩展项以填充可用的空闲空间或缩小它们以防止溢出。
最重要的是,flexbox 布局与常规布局(基于垂直方向的块布局和基于水平方向的内联布局)相比,具有方向不可知性。 虽然这些对于页面来说工作得很好,但是它们缺乏灵活性来支持大型或复杂的应用程序(特别是在方向改变、调整大小、拉伸、缩小等方面)。
原理
由于 flexbox 是一个完整的模块,而不是一个单独的属性,它涉及到很多东西,包括它的整个属性集。 其中一些被设置在容器上(父元素,称为“ flex container”) ,而另一些被设置在子元素上(称为“ flex item”)。如果“常规”布局基于块流方向和内联流方向,那么 flex 布局基于“ flex-flow 方向”。 请看一下规范中的这个图,解释一下 flex 布局背后的主要思想。

项目将按照主轴(main-axis,从main start到main end)或交叉轴(从cross start到cross end)进行布局。
main-axis:主轴线,伸缩容器的主轴线是伸缩项目布局的主轴线。 注意,它不一定是水平的; 它取决于 flex-direction 属性
main-start, main-end:从 main-start 开始,到 main-end,flex 项目被放置在容器中
main-size:主尺寸,一个伸缩项目的宽度或高度,以主尺寸为准,是该项目的主尺寸。 Flex 项的主尺寸属性是“ width”或“ height”,以主尺寸中的值为准
cross axis:交叉轴,与主轴垂直的轴称为交叉轴。它的方向取决于主轴的方向
cross-start | cross-end:弹性线充满了项目,并放置到容器从cross-start延续到cross-end。
cross-size:flex item的宽度或高度,以交叉尺寸中的哪一个为准,就是项目的cross size。 cross size属性是交叉尺寸中的“width”或“height”中的任何一个。
父级属性(flex container)
 
1. flex-direction
flex-direction决定了主轴方向即flex item排列方向,除了默认的row方向之外,还可以纵向、反向(row-reverse/column-reverse)排列flex item
 .container { flex-direction: row | row-reverse | column | column-reverse; }css:
 .flex-container { display: flex; flex-direction: row; }效果:
 
 
2. flex-wrap
如果我们不想在窗口变窄的情况下压缩flex item,而是让超出边界的flex item换行显示那我们可以设置flex container的flex-wrap
 .container{ flex-wrap: nowrap | wrap | wrap-reverse; }css:
 .flex-container { display: flex; flex-wrap: wrap; }效果:在页面不断变小的时候,就会换行
 
 
3. flex-flow
flex-direction和flex-wrap可以合并为一个属性flex-flow,比如: flex-flow: row-reverse wrap
4. justify content
这定义了沿主轴的对齐方式。 当一行中的所有 flex项都不灵活,或者灵活但已经达到其最大大小时,它有助于分配额外的剩余可用空间。 当项目溢出线的时候,它也对项目的排列有一定的控制作用。
 .container { justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly | start | end | left | right }
css:
 .flex-container { display: flex; justify-content: center; }效果:
 
 
5. align-items
实现了flex方向的居中后,垂直于主轴方向的居中可以用align-items实现。
 .container { align-items: stretch | flex-start | flex-end | center | baseline | first baseline | last baseline | start | end }
css:
 .flex-container { display: flex; align-items: center; }效果:
 
 
6. align-content
多行的情况下,将在内部对齐一个 flex 容器的线,类似于调整内容对齐主轴中单个项的方式。 如果flex只有一行,就不会起作用。
 .container { align-content: flex-start | flex-end | center | space-between | space-around | space-evenly | stretch | start | end | baseline | first baseline | last baseline } 
 
子类属性(flex item)
1. order
默认情况下,flex 项按源顺序排列。 但是,order 属性控制它们在 flex 容器中出现的顺序。
css:
 .one { order: 3 } .two { order: 1 } .three { order: 2 }效果:
 
 
2. flex-grow
在上面所有的例子中,三个flex item只占据了flex container小部分空间,如果想让flex item占满flex container我们需要给flex item设置flex-grow属性。顾名思义,grow意味着增长,用于控制flex item的尺寸的伸展。
css:
 .one { flex-grow: 2; } .two { flex-grow: 8; } .three { flex-grow: 2; }效果:
 
 
划重点
- flex-grow如果是负数则无效
- 每个item划分多余的空间并不是按flex-grow的比例来划分,是每个item自身的width * 自身的flex-grow的结果的比例来划分!亲测!!!
3. flex-shrink
与flex-grow相对的是flex-shrink, flex-shrink用于控制子元素尺寸超过flex container后,对子元素的压缩。 划重点:
flex-shrink如果是负数则无效 4. flex-basis
这定义了在分配剩余空间之前元素的默认大小。
 .flex-item { flex-basis:  | auto; /* default auto */ } auto 关键字的意思是“查看自身的width 或 height 属性”。
5. flex
这是 flex-grow、 flex-shrink 和 flex-basis 组合的简称。 第二个和第三个参数(伸缩和伸缩基础)是可选的。建议使用此简写属性,而不是设置单个属性。
 .flex-item { flex: none | [ <'flex-grow'><'flex-shrink'>? || <'flex-basis'> ] }6. align-self
这允许重写单个 flex 项的默认对齐方式(或 align-items 指定的对齐方式)。
 .item { align-self: auto | flex-start | flex-end | center | baseline | stretch; }css:
 .flex-container { display: flex; align-items: center; } .one { align-self: flex-end; }效果:

到此这篇关于深入浅析CSS3中的Flex布局整理的文章就介绍到这了,更多相关css flex 布局内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
相关内容
- CSS中层叠上下文的具体使用css3+svg实现创意图片层叠音乐播放样式代码css 层叠与z-index的示例代码css样式层叠规则详解CSS 中重要的层叠概念详解详解CSS中的特指度和层叠问题
- 纯CSS3实现移动端展开和收起效果的示例代码HTML5给汉字加拼音收起展开组件的实现代码纯CSS3实现炫酷圆形主菜单动画展开收起特效源码CSS3 实现侧边栏展开收起动画
- CSS实现聊天气泡效果CSS3 仿微信聊天小气泡实例代码纯CSS实现聊天框小尖角、气泡效果
- css3 实现元素弧线运动的示例代码css3实现画半圆弧线的示例代码
- css3中less实现文字长阴影(long shadow)
- 解决css中的匹配问题CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- CSS实现底部tapbar栏功能css实现网页栏目左侧固定当滚动到底部时自动调整位置
- 用CSS播放声音的几种技巧方法CSS3动画之利用requestAnimationFrame触发重新播放功能巧用CSS滤镜制作绚丽图片播放效果-CSS教程-网页制作-网页教学网
- 利用CSS中的 outline-offset 属性实现加号css中filter属性和backdrop-filter的应用与区别详解详解HTML5中CSS外观属性CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)CSS字体、文本、列表属性详细介绍奇妙的 CSS 属性 MASK详解CSS 继承 inherit属性的方法css一些不常见但很有用的属性操作大全
- 用CSS Grid布局制作一个响应式柱状图的实现使用CSS实现三栏自适应布局(两边宽度固定,中间自适应)CSS实现三栏布局中间一栏自适应且随文字大小变化宽度的示例代码CSS columns实现两端对齐布局的示例代码解决CCS中的margin:top塌陷问题css如何利用负margin技术实现平均布局CSS 外边距(margin)重叠及防止方法解决margin 外边距合并问题 css 布局 之 两端布局的实例代码 (利用父级负的margin)
 
                                
                                                         
                                
                                                         
                                
                                                         
 
    