Flex:CSS3布局利器

实习以来做了三个小控件,都是用的CSS2.1里传统的DIV+CSS布局方式,综合使用position、margin、float、BFC等属性或特性将元素放到指定的位置上。然而面对日益复杂的界面,这些来自于上个时代、主要针对普通文档流的属性越来越力不从心,比如一个垂直居中就很让人头疼。后来遇到一个布局问题,苦思良久无解,然后在前辈的指点下使用了Flex,问题瞬间解决。竟然这么神奇!那一刻真有一种相见恨晚的感觉。

Flex,顾名思义,flexible,可以自动根据布局需要灵活地调整被布局元素的位置和宽高,非常适于需要对齐、居中、等间距等规整布局,以及布局元素宽度不定的情况。

欲使容器元素变为flex布局上下文,块级元素可以声明display为flex,行内元素可以声明为inline-flex。布局方式主要在容器元素上指定。

身处flex上下文的元素,float、clear和vertical-align属性失效。position为absolute和fixed的元素将脱离文档流,而不参与flex布局;relative元素可以正常参与flex布局。

Flex上下文中的元素沿轴排布,默认横向从左到右的叫主轴,竖向从上到下的叫交叉轴,当然方向是可以改的。元素沿主轴依次排列,与主轴正交方向的对齐方式参考交叉轴。

容器属性

规定沿主轴排布方式的属性有:

flex-direction: row(默认) | row-reverse | column | column reverse 该属性规定主轴方向。

flex-wrap: no-wrap(默认) | wrap | wrap-reverse(从底往上逐行排版)

flex-flow是以上两个属性的简写

justify-content: flex-start(默认) | flex-end | center | space-between | space-around 注意!这里用的start、end而不是left、right,因为主轴方向不一定是从左向右~

规定沿交叉轴排布方式的属性有:

align-items: strech(默认) | flex-start | flex-end | center | baseline 重要属性!flex布局默认情况下会让未定高元素填满父容器,这在CSS2.1里实现巨麻烦的效果,就这么轻而易举地解决啦!垂直居中也简单,一条语句搞定!简直喜大普奔!

align-content: stretch(默认) | flex-start | flex-end | center | space-between | space-around 多根主轴(多行)在交叉轴上的排布方式,单轴时无效。默认会拉伸每个主轴上的元素以填满交叉轴长。利用该属性很容易实现多行居中。

子元素属性

order:整数,默认0,决定沿主轴的出场顺序

flex-grow: 整数,默认0,定义主轴有多余空间时项目放大的比例。具体地说,当只有一个项目该属性不为0时,它将占满剩余空间;当有多个时,将按该属性值的比例瓜分剩余空间。

flex-shrink: 整数,默认1,定义主轴空间不足时项目缩小的比例,类似grow。

flex-basis: 长度,默认auto,定义项目占据主轴的长度。浏览器据此计算主轴剩余空间。

flex: 以上三个属性的简写,为none时三个值分别为0 0 auto

align-self: 取值同align-items,多了个auto。允许单项与其他项不一样的对齐方式,覆盖align-items的效果。默认值auto继承父元素的align-items,或等于stretch。

时间: 2024-08-01 10:46:40

Flex:CSS3布局利器的相关文章

快速学习Flex模型布局-兼容新旧版本css

最近在学习Flex模型布局 ,刚开始,各种属性看着头疼,现在坚持下来,把自己的学习经验分享一下: Flex模型 发展下来分三个版本: 标准版本(flex | inline-flex).混合版本(flexbox | inline-flexbox).最老版本(box | inline-box); 标准版本:IE11+已经支持啦,其他标准浏览器只要做一下兼容webkit: 混合版本:可以说是IE版本,就只有ie支持 最老版本:建议抛弃吧 --------------------------------

2017-1-11 css3布局

2017-1-11 css3布局 css 布局 多列布局 columns:column-width||coumn-count; column-width定义每列的宽度 coumn-count定义列数 columns 属性初始值根据元素个别属性而定,适用于不可替换的块元素.行内块元素和单元格,但是表格元素除外. column-width 属性可以定义单列显示的宽度,该属性可以与其他多列布局属性配合使用,也可以单独使用. column-gap 定义两栏之间的间距 column-gap:normal

CSS弹性盒模型flex在布局中的应用

× 目录 [1]元素居中 [2]两端对齐 [3]底端对齐[4]输入框按钮[5]等分布局[6]自适应布局[7]悬挂布局[8]全屏布局 前面的话 前面已经详细介绍过flex弹性盒模型的基本语法和兼容写法,本文将介绍flex在布局中的应用 元素居中 [1]伸缩容器上使用主轴对齐justify-content和侧轴对齐align-items <style> .parent{ display: flex; justify-content: center; align-items: center; } &

弹性布局(Flex)布局介绍

Flex是Flexible Box的缩写,意为"弹性布局".任何一个容器都可以指定为Flex布局,块级元素为display:block,行内元素为display:inline-flex. 注意,设为Flex布局以后,子元素的float.clear和vertical-align属性将失效. 以下是一个实现Flex基本布局的代码: <style> .container{ width: 100%; height: 200px; background-color: white; d

flex图片布局

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>flex图片布局</title> <style> body { margin: 0; padding: 0; } .box { float: left; width: 30%; margin-top: 10px; margin-left: 2.5%; height: 0; padding

flex 圆形布局

<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creatio

display:flex 在布局中的妙用

最近越来越依赖display:flex 了.本来只是在移动端用来作弹性布局,现在在PC端,我基本用它来取代 float:left.比如昨天做的一个专题,基本都用 flex 来布局. 但是这其中的原理呢,flex布局的相对于float的优势又在哪呢.只是对这些有一个模糊的概念. 比如float:left/right 这个功能,一般用来排版.而它的高度塌缩,一些潜在的未被触发的问题,总是给人一种很"不靠谱"的感觉. 先来盘点下float的特性: 1. 脱离当前文档流.浮动盒子会贴着容器或者

学习笔记 第十一章 CSS3布局基础

第11章   CSS3布局基础 [学习重点] 了解CSS2盒模型. 设计边框样式. 设计边界样式. 设计补白样式. 了解CSS3盒模型. 11.1  CSS盒模型基础 页面中所有元素基本显示形态为方形的盒子(Box),根据盒模型规则,网页中所有元素对象都被放在一个盒子里,设计师可以通过CSS来控制这个盒子的显示方式. 11.1.1 盒模型结构 Box具有如下特点: 每个盒子都有:边界.边框.填充.内容4个属性. 每个属性都包括4个部分:上.右.下.左.属性的四部分可以同时设置,也可以分别设置.

flex左右布局 左边固定 右侧自适应

flex左右布局 左边固定 右侧自适应 想要保证自适应内容不超出容器怎么办. 通过为自适应的一侧设置width: 0;或者overflow: hidden;解决. 首先实现标题的布局,也很简单: <div class="item"> <div class="l">LEFT</div> <div class="r"> <div class="title">OMG OMG