CSS3 Flexbox该怎么使用?

文章来源:

一、前言

Flexbox 是一个 CSS3 的盒子模型 ( box model ),顾名思义它就是一个灵活的盒子 ( Flexible Box ),为什麽最近这个属性才红起来呢?最主要也是因为 CSS3 的规范终于普及 ( 或 IE 终于败亡 ),加上行动装置的发展促成了响应式布局兴起,自适应长宽弹性相当大的 Flexbox 就趁势而起了。

第一步要来看 Flexbox 的盒子模型,根据 W3C 文章所描述,flex 的盒子模型如下图所呈现,与一般的盒子模型不同的地方,在于 Flexbox 的盒子模型具有水平的起点与终点 ( main start、main end ),垂直的起点与终点 ( cross start、cross end ),水平轴与垂直轴 ( main axis、cross axis ),然后元素具有水平尺寸与垂直尺寸 ( main size、cross size ),这些都是相当重要的布局规画。

CSS3 Flexbox该怎么使用?

再来我们先看看 Flexbox 有哪些属性,也可参考MDN的使用 CSS 弹性盒子

立即学习“前端免费学习笔记(深入)”;

display

flex-direction

justify-content

align-items

align-self

align-content

flex-wrap

order

flex

二、属性介绍

A、display

display 是我们熟知的 CSS 属性,对于 Flexbox 来说,多了有两种方式可以设定,预设为「flex」,其布局方式与 block 几乎类似,都会强迫换行,但设定display:flex的子元素却具备了更多弹性的设定。

此外另外一种方式则是「inline-flex」,和 inline-block 也是几乎雷同,意义上都是一个display:flex的元素外面包覆display:inline的属性,在后方的元素不会换行。

这样做将元素定义为弹性容器,其子元素则成为弹性项目。值 flex 使弹性容器成为块级元素。值 inline-flex 使弹性容器成为单个不可分的行内级元素。

CSS3 Flexbox该怎么使用?

CSS3 Flexbox该怎么使用?

B、flex-direction

flex-direction 表示 Flexbox 內容元素的「排列方向」,分別有下列四种。

row:预设值,由左到右,从上到下

row-reverse:与 row 相反

column:从上到下,再由左到右

column-reverse:与 column 相反

CSS3 Flexbox该怎么使用?
CSS3 Flexbox该怎么使用?

C、justify-content

justify-content 决定了内容元素与整个 Flexbox 的「水平对齐」位置,回想一下最上面讲的 Flexbox 盒子模型,具有 main start 与 main end 左右两个端点,justify-content 就是按照这个方式做设定,而其中的设定值总共有下列五个。

flex-start:预设值,对齐最左边的 main start

flex-end:对齐最左边的 main end

center:水平置中

space-between:平均分配内容元素,左右元素将会与 main start 和 main end 贴齐

space-around:平均分配内容元素,间距也是平均分配

CSS3 Flexbox该怎么使用?

CSS3 Flexbox该怎么使用?

D、align-items

align-items 刚好和 justify-content 相反,align-items 决定了内容元素与整个 Flexbox 的「垂直对齐」位置,再回想一下最上面讲的 Flexbox 盒子模型,具有 cross start 与 cross end 左右两个端点,align-items 与 align-self 就是按照这个方式做设定,设定值总共有下列五个。

flex-start:预设值,对齐最上面的 cross start

flex-end:对齐最下面的 cross end

center:垂直置中

stretch:将内容元素全部撑开至 Flexbox 的高度

baseline:以所有内容元素的基线作为对齐标准

CSS3 Flexbox该怎么使用?

CSS3 Flexbox该怎么使用?

E、align-self

align-self 的设定与 align-items 相同,但目的不同,align-self 的作用在于覆写已经套用 align-items 的属性,如果照我们以前所写,因为 align-items 是针对子元素,所以必须要用 align-self 来进行覆写,我们直接用上一个范例来修改就很清楚了。

auto

设置为父元素的 align-items 值,如果该元素没有父元素的话,就设置为 stretch。

flex-start

flex 元素会对齐到 cross-axis 的首端。

CSS3 Flexbox该怎么使用?

flex-end
flex 元素会对齐到 cross-axis 的尾端。

CSS3 Flexbox该怎么使用?

center
flex 元素会对齐到 cross-axis 的中间,如果该元素的 cross-size 的尺寸大于 flex 容器,将在两个方向均等溢出。

CSS3 Flexbox该怎么使用?

baseline
所有的 flex 元素会沿着基线对齐。

CSS3 Flexbox该怎么使用?

stretch
flex 元素将会基于容器的宽和高,按照自身 margin box 的 cross-size 拉伸。

CSS3 Flexbox该怎么使用?

F、align-content

刚刚谈到的 align-items 是针对内容为单行的元素进行处理,如果遇到多行的元素,就要使用 align-content 这个属性,这个属性总共有六个设定值。( 范例:css-flexbox-demo6.html、W3C 说明 )

flex-start:预设值,对齐最上面的 cross start

flex-end:对齐最下面的 cross end

center:垂直置中

space-between:将第一行与最后一行分别对齐最上方与最下方

space-around:每行平均分配间距

stretch:内容元素全部撑开

CSS3 Flexbox该怎么使用?

CSS3 Flexbox该怎么使用?

G、flex-wrap

在刚刚的范例看到一个 flex-wrap 的属性,这个属性负责的是让内容的元素换行,因为当我们把父元素的 display 设定为 flex 或 inline-flex 的时候,子元素就是以单行的方式,弹性撑满父元素,所以就要利用 flex-wrap 来换行,共有三个设定值。( 范例:css-flexbox-demo7.html)

nowrap:预设值,单行

wrap:多行

wrap-reverse:多行,但内容元素反转

CSS3 Flexbox该怎么使用?

CSS3 Flexbox该怎么使用?

H、order

刚刚在 flex-wrap 的属性里头看到了可以把元素反转,order 这个属性更是可以直接指定一个数字,就可以由小到大的排列顺序

CSS3 Flexbox该怎么使用?

CSS3 Flexbox该怎么使用?

I、flex

好酒沉瓮底,有耐心看到下面的才会看到重点喔哈哈!flex 应该是 Flexbox 里头最重要的属性了,而 flex 其实是由三个属性组合而成,依照先后顺序分别是「flex-grow」、「flex-shrink」和「flex-basis」,如果 flex 只填了一个数值 ( 无单位 ),那麽预设就是以 flex-grow 的方式呈现,至于三个属性的解释如下:

flex-grow:数字,无单位,当子元素的 flex-basis 长度「小」于它自己在父元素分配到的长度,按照数字做相对应的「伸展」比例分配,预设值为 1,设为 0 的话不会进行弹性变化,不可为负值。

flex-shrink:数字,无单位,当子元素的 flex-basis 长度「大」于它自己在父元素分配到的长度,按照数字做相对应的「压缩」比例分配,预设值为 1,设为 0 的话不会进行弹性变化,不可为负值。

flex-basis:子元素的基本大小,作为父元素的大小比较基准,预设值为 0,也因为预设值为 0,所以没有设定此属性的时候,会以直接採用 flex-grow 属性,flex-basis 也可以设为 auto,如果设为 auto,就表示子元素以自己的基本大小为单位。。

三个属性可以分开设定,也可以合在一起用一个 flex 统一设定,下面的例子展现出同一个 Flexbox,在不同的宽度,子元素会有不同大小的呈现。

HTML代码:

CSS3 Flexbox该怎么使用?

CSS代码:

CSS3 Flexbox该怎么使用?

CSS3 Flexbox该怎么使用?

如果用动画来表现,可以看出拉长的时候红色会变得比蓝色长,但压缩的时候却是蓝色变得比红色长,如此一来就更能体会 flex 在响应式设计里头的关键脚色萝!

CSS3 Flexbox该怎么使用?

以上就是 Flexbox 的完整介绍,想不到一个 CSS3 的属性,可以花费这麽大一篇来介绍,不过也因为有了这个新的属性,让在做 layout 的佈局又更加弹性。

以上就是CSS3 Flexbox该怎么使用?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2910848.html

(0)
上一篇 2025年3月11日 04:36:39
下一篇 2025年3月11日 04:36:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 带你了解css中的3D效果

    —恢复内容开始— 今天咱们来说一下,CSS中的3D效果 .如果你把transform真的掌握的和纯熟的话,就可以直接通过CSS做出很多很炫酷的效果,甚至.轮播图和选项卡都可以通过CSS来做,咱们明天就说如何运用CSS…

    编程技术 2025年3月11日
    200
  • css书写顺序需要注意哪些?

    一、css顺序   首先声明,浏览器读取css的方式是从上到下的。我们一般书写css只要元素具备这些属性就会达到我们预期的效果,但是这会给以后的维护和浏览器的渲染效率带来一定的影响,那么该怎么书写css的顺序呢?有没有一定的规范呢?   首…

    编程技术 2025年3月11日
    200
  • 移动端全景装修图的实现实例分享

    移动端全景装修图的实现实例分享 nbsp;html>Documentbody,html {margin: 0;height: 100%;overflow: hidden;position: relative;}.wrap {posit…

    编程技术 2025年3月11日
    200
  • css动画制作——CSS animate

    熟悉css的人都知道,css可以实现很多漂亮的动画,特别是它的在线功能,能够帮助人们解决很多制作动画的效果。今天特别推荐一个在线css插件功能——cssanimate,这个最大的特色就是以图形界面方式让你轻易实现漂亮的css3动画效果,下面…

    2025年3月11日 编程技术
    200
  • 用css3实现打点效果实例讲解

    基于box-shadow实现的打点效果 理论上,box-shadow可以实现任意的图形效果,自然我们可以利用box-shadow生成我们的点效果,然后通过animation控制不同时间点点的数目就可以实现点点点… loading…

    编程技术 2025年3月11日
    200
  • html5+CSS如何控制Table内外边框和颜色以及大小的图文教程

    在默认的情况下,我们的css将table的边框清除掉了,下面与大家分享下css控制table内外边框、颜色、大小的样式,想学习的朋友可以参考下 其实按照常理来说,现在的网站应该早已经抛弃什么表格了,现在肯定是p+CSS当道嘛!不过客户的网站…

    2025年3月11日 编程技术
    200
  • 利用css的 border-image 实现锯齿形

    css如何实现这样的样式: 解决方案: 这里需要用到的技术是border-image的灵活运用,首先需要一张图片,这里我选中的是这样子的,此后 的图片可以拿这个更改圆形的颜色以更改锯齿颜色: 立即学习“前端免费学习笔记(深入)”;   底部…

    2025年3月11日 编程技术
    200
  • 利用CSS3进行弹性布局时内容对齐的方法详解

    这篇文章主要介绍了css3弹性布局内容对齐(justify-content)属性使用详解,具有一定的参考价值,有兴趣的可以了解一下 内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main ax…

    2025年3月11日
    200
  • CSS3有关特性查询功能的讲解介绍

    这是2017年不能不了解和学习的一个css新特性,非常实用,考虑到现实世界浏览器的复杂性,该特性本应该先于其他新特性出来。 我们已经知道使用媒体查询(Media Query)来检测屏幕尺寸,从而实现响应式界面设计。 而特性查询则用来查询用户…

    2025年3月11日
    200
  • HTML5和CSS3扁平化风格博客教程的资源分享

    本课程通过css3扁平化风格博客的实例详细讲解,让大家更容易理解常规网页的组成部分,灵活的使用不同部分web组件,理解它的构成思想,以及网页灵活的布局和设计。我们也可以由宏观到微观去掌握整体的布局。 课程播放地址:http://www.ph…

    2025年3月11日
    200

发表回复

登录后才能评论