css布局之flexbox学习

今天学习了flex布局,发现它是真心强大,所以必须的记录下。

以下简单的布局要求是难以或不可能用这样的工具方便且灵活的实现:

  • 垂直居中父内容的里一块内容。
  • 使容器的所有子项占用等量的可用宽度/高度,而不管有多少宽度/高度可用。
  • 使多列布局中的所有列采用相同的高度,即使它们包含的内容量不同。

先上一个例子:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            section {
              height:100px;
              background: purple;
              display: flex;
              align-items: center;
              justify-content: space-around;
            }
            div {
              color: white;
              background: orange;
              flex: 1;
              margin-right: 10px;
            }
            div:last-child {
              margin-right: 0;
            }
            section, div {
              padding: 10px;
            }
        </style>
    </head>
    <body>
        <section>
          <div>This is a box</div>
          <div>This is a box</div>
          <div>This is a box</div>
        </section>
    </body></html>

贴上结果图(随便拉宽紫色容器内黄色的div块都能自适应宽度哟):

再上一张flex模型说明图

  • 主轴(main axis)是沿着 flex 元素放置的方向延伸的轴(比如页面上的横向的行、纵向的列)。该轴的开始和结束被称为 main start 和 main end。
  • 横轴(cross axis)是垂直于 flex 元素放置方向的轴。该轴的开始和结束被称为 cross start 和 cross end。
  • 设置了 display: flex 的父元素(在上面的例子中<section>)被称之为 flex 容器(flex container)
  • 在 flex 容器中表现为 flexible 框的元素被称之为 flex 项(flex item)(本例中是<div> 元素)。

下面介绍下flex容器的6个属性

1、flex-direction —— 决定主轴的方向(即flex项的排列方向)。其值有以下四个:

  row(默认值):主轴为水平方向,起点在左端。

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

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

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

2、flex-wrap —— 默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。其值有以下三个:

  nowrap(默认):不换行。

  wrap:换行,第一行在上方。

  wrap-reverse:换行,第一行在下方。

3、flex-flow —— flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

4、justify-content —— justify-content属性定义了项目在主轴上的对齐方式。其值有以下五个:

  flex-start(默认值):左对齐。

  flex-end:右对齐。

  center: 居中。

  space-between:两端对齐,项目之间的间隔都相等。

  space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

5、align-items —— justify-content属性定义项目在交叉轴上如何对齐。其值有以下五个:

  flex-start:交叉轴的起点对齐。

  flex-end:交叉轴的终点对齐。

  center:交叉轴的中点对齐。

  baseline: 项目的第一行文字的基线对齐。

  stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

6、align-content —— align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。其值有以下六个:

  flex-start:与交叉轴的起点对齐。

  flex-end:与交叉轴的终点对齐。

  center:与交叉轴的中点对齐。

  space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。

  space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。

  stretch(默认值):轴线占满整个交叉轴。

然后是flex 项(flex item)的6个属性:

  orderorder属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

  flex-growflex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

  flex-shrinkflex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

  flex-basisflex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

  flexflex属性是flex-growflex-shrinkflex-basis的简写,默认值为0 1 auto。后两个属性可选。

  align-selfalign-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

以上内容参考来自:https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Flexboxhttp://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool

时间: 2024-12-04 12:10:31

css布局之flexbox学习的相关文章

CSS Flexbox 学习指南、工具与框架

Flexbox 是一种更有效的布局方式,它能更好的分配容器空间,并控制项目的对齐.虽然,掌握它的理论有些复杂,但幸运的是,我们可以借助开放的网络来学习并逐步掌握它. 在本文中,我们整合了一些最佳的 Flexbox 学习资源,它们可以帮助你了解Flexbox 的方方面面.涉及什么是 Flexbox,以及如何有效地使用它. Flexbox 学习指南 CSS 之 Flexbox 参考(作者:Sara Soueidan) CSS 之 Flexbox 参考是学习 Flexbox 基础知识的系列文章.在文章

《CSS网站布局实录》学习笔记(三)

第三章 CSS网页布局与定位 3.1 div 几乎XHTML中的任何标签都可以用于浮动与定位,而div首当其冲.对于其他标签而言,往往有它自身存在的目的,而div元素存在的目的就是为了浮动与定位. 3.1.1 div是什么 div是XHTML中制定的.专门用于布局设计的容器对象.在传统表格式布局中,之所以能够进行页面的排版布局设计,完全依赖于表格对象table.如今,接触另一种布局方式--CSS布局.div正是这种布局方式的核心对象.仅从div的使用上说,做一个简单的布局只需要依赖两样东西:di

《CSS网站布局实录》学习笔记(四)

第四章 CSS网站元素设计 4.1 网站导航 网站导航是网站中最重要的元素.从形式上看,网站导航主要分横向导航.纵向导航.下拉及多级菜单导航灯3种常见形式. 横向导航:作为门户网站的设计而言,主导航一般采用横向导航. 纵向导航:纵向导航更倾向于表达产品的分类. 下拉导航:主要用于功能复杂的网站. 总的来说,导航的核心目标就是设计一个简单.快捷的操作入口,帮助用户快速地到达网站中的 内容.这里将使用CSS来对这3种常见的导航进行设计. 4.1.1 横向导航 假设目前有6个频道,如果用传统的表格式布

CSS基础学习十九:CSS布局之图文混排,图像签名,多图拼接和图片特效

学习了CSS布局的定位和浮动,我们可以简单地做出很多排版和内容拼接.今天就来做几个简单的实例展示现在 流行的DIV+CSS布局的方便好用之处.顺便也说一下CSS3新增的样式属性box-shadow和属性transform. 一图文混排 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

《CSS网站布局实录》学习笔记(五)

第五章 CSS内容排版 5.1 文字排版 5.1.1 通栏排版 进行网页通栏排版时,只要直接将段落文字放置于p或者其他对象中,再对段落文字应用间距.行距.字号等样式控制,便形成了排版雏形. 5.1.2 分栏排版 CSS2技术对普通段落文字不能够直接实现分栏排版,如果需要实现类似报纸那样的双栏或者三栏排版,则必须借助于二列布局那样的两个div浮动定位而形成二列控件,然后再将文字分别填充此二列之中.XHTML代码如下: 1 <div id="layout"> 2 <div

《CSS网站布局实录》学习笔记(六)

第六章 CSS高级应用与技巧 6.1 id与class 6.1.1 什么是id id是XHTML元素的一个属性,用于标识对象名称.无论是class还是id,都是XHTML所支持的公共属性,并且也是其核心属性.class的主要功能是用来对对象的样式设置,而id除了可以定义样式外,还能够成为服务网站交互行为一个特殊标识.每一个被定义了id名称的对象,其id名字在每个页面有且仅能出现一次. 6.1.2 如何使用id 在不考虑使用JavaScript脚本,而是XHTML代码及CSS样式应用的情况下,应当

html学习第三天—— 第12章——css布局模型

清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上,又不同于我们常说的 CSS 布局样式或 CSS 布局模板.如果说布局模型是本,那么 CSS 布局模板就是末了,是外在的表现形式. CSS包含3种基本的布局模型,用英文概括为:Flow.Layer 和 Float.在网页中,元素有三种布局模型:1.流动模型(Flow)2.浮动模型 (Float)3.层模型(Layer)

DIV+CSS布局重新学习之css控制ul li实现2级菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Flexbox制作CSS布局实现水平垂直居中

Flexbox实现一个div元素在body页面中水平垂直居中: <!DOCTYPE html><html lang="en"><head>  <meta charset="utf-8"/>  <title>Flexbox制作CSS布局实现水平垂直居中</title>  <style type="text/css">    html {      height: 1