css系列之布局神器table与flex

news/2024/7/3 3:45:50

table

用法

  • 设置在父元素上的属性
    display: table;
  • 设置在子元素上的属性
    display: table-cell;

table特点

  • 对宽度高度敏感
  • 对margin值无反应
  • 等高(可实现等高布局)
  • 可使用传统表格样式,如table-layout
兼容IE8, 对于IE6/7,我们可以使用display: inline-block属性代替
.parent {
    display: table;
}
.child {
    display: table-cell;
    vertical-align: middle;     //可调整子元素的对齐方式
}    

flex

Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性

用法

设置在父元素上的属性

  1. flex-direction ---决定项目的排列方向,row | row-reverse | column | column-reverse
  2. flex-wrap ---决定项目是否换行,nowrap | wrap | wrap-revers
  3. flex-flow ---<flex-direction> || <flex-wrap>
  4. justify-content ---决定项目排列方向上的对齐方式,
    1) flex-start
    2) flex-end
    3) center
    4) space-between 两端对齐
    5) space-around 子容器沿主轴均匀分布,位于首尾两端的子容器到父容器的距离是子容器间距的一半。
  5. align-items ---决定垂直轴上的对齐方式,flex-start | flex-end | center | baseline | stretch
有坑,记得父元素高度
  1. align-content ---决定多列或多行垂直轴上的对齐方式,flex-start | flex-end | center | space-between | space-around | stretch
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

设置在子元素上的属性

  1. order ---决定项目的排列顺序,数值越小,排列越靠前,默认为0,<integer>
  2. align-self ---决定单个项目与其他项目不一样的对齐方式,可覆盖align-items属性,默认值为auto,auto | flex-start | flex-end | center | baseline | stretch
  3. flex ---none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
  4. flex-grow ---决定项目的放大比例,默认为0,<number>
  5. flex-shrink ---决定项目的缩小比例,默认为1,<number>
  6. flex-basis ---决定在分配多余空间之前,项目占据的空间,默认值为auto,<length> | auto
flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto

多行布局最后一行左对齐

  1. 添加几个与元素等宽的元素
<div class="box">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="empty"></div>
    <div class="empty"></div>
    <div class="empty"></div>
  </div>
  1. after
.box:after {
    content: "";
    flex: auto;
 }

.box:after {
    content: "";
    flex: 0 1 50%;
 }

box、flexbox、flex比较

出现时间

box ---2009年
flexbox ---2011年
flex ---2012年

写法

box
  • parent
    display: -moz-box;
    display: -webkit-box;
    display: -o-box;
    display: box;
    box-orient: horizontal | vertical; ---项目排列方向
    box-direction: normal | reverse | inherit; ---确定子元素的排列顺序
    box-align: start | end | center | baseline | stretch; ---垂直方向对齐方式
    box-pack: start | end | center | justify; ---水平方向对齐方式
    box-lines: single | multiple; ---决定子元素是可以换行显示
  • child
    -webkit-box-flex: 1;
    box-flex: 1;
    -webkit-box-align: center;
    box-align: center;
flexbox

参考链接

阮一峰的网络日志
CSS box-flex属性,然后弹性盒子模型简介
一劳永逸的搞定 flex 布局


http://www.niftyadmin.cn/n/2675419.html

相关文章

【AtCoder】【AGC017F】Zigzag

Description 给出一个类似杨辉三角的三角形&#xff0c;要求在上边选出m条走n步的路径&#xff0c;并满足&#xff1a; 1. 每条路径只能往左下/右下走&#xff0c;&#xff1b; 2. 第i1条路径必须在第i条路径的右侧&#xff08;可以重合&#xff09;&#xff1b; 在给出一些…

自动化测试===requests+unittest+postman的接口测试

postman是一个跨平台的接口测试工具&#xff0c;下载链接在这里&#xff1a;https://www.getpostman.com/unittest是一个单元测试框架&#xff0c;python中安装&#xff1a;pip install unittestrequests是一个发送http请求的库&#xff0c;安装&#xff1a;pip install reques…

【AtCoder】【AGC013D】Piling Up

Description 你有一堆黑白球和一个盒子&#xff0c; 一开始&#xff0c;盒子里有n个不知道颜色的球&#xff0c; 接下来&#xff0c;你要对盒子进行m次操作&#xff1a; 1. 随机从盒子里取出一个球&#xff1b; 2. 往盒子里放一黑一白俩球&#xff1b; 3. 再随机从盒子里…

java 序列化时排除指定属性

java 序列化对象如何排除指定属性呢? java 中序列化对象有多种方式:struts2 ,jackson,json-lib (1)使用struts2 json插件 依赖的jar包:struts2-json-plugin-2.3.15.3.jar,xwork-core-2.3.15.3.jar,当然还有servlet-api.jar 范例: Java代码 private String getMessageJson(Pus…

ASP.NET的视图(Razor)循环产生html代码

需要要视图中Razor语法&#xff0c;循环产生一些html代码。产生后的html是这样的&#xff1a; <li data-transition"fade" data-slotamount"7" data-masterspeed"1500"><img src"~/Content/img/slider-images/XXX1111.jpg" a…

【AtCoder】【AGC009D】Uninity

Description 给出一棵树&#xff0c;要求确认一种点分治策略&#xff0c;使得点分树的深度最小。 Solution 显然&#xff0c;答案的上界为log&#xff08;然并卵&#xff09;。 我们先定义点权&#xff0c;一个点的点权为它在点分树上的深度&#xff0c; 显然&#xff0c;…

西游记人物

package com.hanqi;public class Xiyouji2 {String Name;double Height;String Weapon;void printName(){System.out.println(Name);}void printWeapon(){System.out.println("武器&#xff1a; "Weapon);}public static void main(String[] args){Xiyouji2 XiYouJiR…

Microsoft更新Cosmos DB,提供Cassandra支持,提高可用性保证

在上个月的Connect 2017大会上&#xff0c;Microsoft新发布了多个Azure Cosmos DB更新&#xff0c;其中包括支持使用Cassandra NoSQL数据库的API&#xff0c;以及更高的可用性保证。这样&#xff0c;用户可以在Cosmos DB内使用针对Cassandra NoSQL数据库的API去操作数据模型。此…