一、怪异盒模型

怪异盒模型的属性是box-sizing,他有两个属性值:

1、content-box

  这是由 CSS2.1 规定的宽度高度行为。宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框。

  简而言之就是,一般的盒子都是属于这种,最显著的特点就是加上padding后,盒子会被撑大,需要减去对应的高度或宽度。

2、border-box

  为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。

通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

  简而言之,为盒子添加高度或宽度之后,再给盒子添加border和padding不会使盒子撑大,边框和padding都限制在盒子内部,常用于移动端。

二、弹性盒布局

Flex容器:采用 Flex 布局的元素的父元素;
Flex项目:采用 Flex 布局的元素的父元素的子元素;
容器默认存在两根轴:水平的主轴和垂直的交叉轴。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;

交叉轴的开始位置叫做cross start,结束位置叫做cross end。项目默认沿主轴排列。

单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

能实现下面这种骰子布局,那么恭喜你,就说明弹性盒已经掌握了,下面介绍弹性盒具体的用法及案例

flex容器属性

1、触发弹性盒:display:flex、inline-flex

  注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。

2、flex-direction属性 决定主轴的方向(即项目的排列方向)

  flex-direction: row | row-reverse | column | column-reverse;

3、flex-wrap属性,定义子元素是否换行显示  

  flex-wrap: nowrap(默认值,不换行) | wrap(换行) | wrap-reverse(反向换行);

4、 flex-flow

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

5、 justify-content属性 定义了项目在主轴()上的对齐方式

  justify-content: flex-start | flex-end | center | space-between(两端对齐) | space-around(自动分配);

6、align-items属性定义项目在侧轴上如何对齐

  align-items: flex-start | flex-end | center | baseline | stretch(默认值);

7、align-content属性定义了多根轴线的对齐方式。对于单行子元素,该属性不起作用。 

  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
  align-content在侧轴上执行样式的时候,会把默认的间距给合并。对于单行子元素,该属性不起作用

flex项目属性

1、align-self属性 

说明:

  Internet Explorer 和 Safari 浏览器不支持 align-self 属性
  align-self 属性规定灵活容器内被选中项目的对齐方式。
  注意:align-self 属性可重写灵活容器的 align-items 属性。
  属性值
    auto 默认值。元素继承了它的父容器的 align-items 属性。如果没有父容器则为 "stretch"。
    Stretch 元素被拉伸以适应容器。
    Center 元素位于容器的中心。
    flex-start 元素位于容器的开头。
    flex-end 元素位于容器的结尾。

2、order

说明:
  number排序优先级,数字越大越往后排,默认为0,支持负数。

3、flex 

说明:
  复合属性。设置或检索弹性盒模型对象的子元素如何分配空间
  详细属性值:
  缩写「flex: 1」, 则其计算值为「1 1 0%」
  缩写「flex: auto」, 则其计算值为「1 1 auto」
  flex: none」, 则其计算值为「0 0 auto」
  flex: 0 auto」或者「flex: initial」, 则其计算值为「0 1 auto」,即「flex」初始值

4、flex-xxx  

  flex-grow
    一个数字,规定项目将相对于其他灵活的项目进行扩展的量。
  flex-shrink
    一个数字,规定项目将相对于其他灵活的项目进行收缩的量。
  flex-basis
    项目的长度

具体实现代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html,body{
            width: 100%;
            height: 100%;
        }
        body{
            display: flex;
            justify-content: space-around;
            align-items: center;
            flex-wrap: wrap;
        }
        body>div{
            width: 100px;
            height: 100px;
            background-color: #eee;
        }
        span{
            display: block;
            width: 24px;
            height: 24px;
            background-color: #000;
            border-radius: 12px;
        }
        div:nth-child(1){
            display: flex;
            justify-content: center;
            align-items: center;
        }
        div:nth-child(2){
            display: flex;
            justify-content: space-between;
        }
        div:nth-child(2) span:nth-child(2){
            align-self: flex-end;
        }
        div:nth-child(3){
            display: flex;
            justify-content: space-between;
        }
        div:nth-child(3) span:nth-child(2){
            align-self: center;
        }
        div:nth-child(3) span:nth-child(3){
            align-self: flex-end;
        }
        div:nth-child(4){
            display: flex;
            justify-content: space-between;
        }
        div:nth-child(4) p{
            display: flex;
            flex-direction: column;
            justify-content: space-between;
        }
        div:nth-child(5){
            display: flex;
            justify-content: space-between;
        }
        div:nth-child(5) p{
            display: flex;
            flex-direction: column;
            justify-content: space-between;
        }
        div:nth-child(5) p:nth-child(2){
            justify-content: center;
        }
        div:nth-child(6){
            display: flex;
            justify-content: space-between;
        }
        div:nth-child(6) p{
            display: flex;
            flex-direction: column;
            justify-content: space-between;
        }
    </style>
</head>
<body>
    <div>
        <span></span>
    </div>
    <div>
        <span></span>
        <span></span>
    </div>
    <div>
        <span></span>
        <span></span>
        <span></span>
    </div>
    <div>
        <p>
            <span></span>
            <span></span>
        </p>
        <p>
            <span></span>
            <span></span>
        </p>
    </div>
    <div>
        <p>
            <span></span>
            <span></span>
        </p>
        <p>
            <span></span>
        </p>
        <p>
            <span></span>
            <span></span>
        </p>
    </div>
    <div>
        <p>
            <span></span>
            <span></span>
            <span></span>
        </p>
        <p>
            <span></span>
            <span></span>
            <span></span>
        </p>
    </div>
</body>
</html>
 
如果感觉对自己有帮助,麻烦点一下关注,会一直盒大家分享知识的,谢谢!!!

css怪异盒模型和弹性盒布局(flex)详解及其案例的更多相关文章

  1. 【css】盒子模型 之 弹性盒模型

    参考: http://caibaojian.com/flexbox-guide.html 待补充啊

  2. css盒模型与bfc与布局与垂直水平居中与css设计模式等

    一.css盒子与布局相关 盒子内部的布局 盒子之间的布局visual formatting 脱离正常流normal flow的盒子的布局 absolute布局上下文下的布局 float布局上下文下的布 ...

  3. CSS3_伸缩盒模型_弹性布局_等分布局_flex 布局

    伸缩盒模型 CSS3 引入的布局模式 Flexbox 布局 主要思想: 让容器有能力让其子项目能够改变其宽度,高度,以最佳方式填充可用空间. 特点: display: flex;    只能控制其子元 ...

  4. 标准盒模型与IE盒模型之间的转换

    首先上图,这两张很明显可以看出IE盒模型和标准盒模型之间的差别. 当然今天不是去细细追究两种模型具体是怎么去计算布局的,那个很多文章已经已经有过了,不再重复.以前刚开始学习盒模型的时候,就学到的是IE ...

  5. IE盒模型与W3C盒模型区别

    前两天被人问到,叫我解释一下标准盒模型与IE盒模型,额,当时只能说,知道一点,但是没有深入的去探讨过,所以下来之后就自己写了例子,亲自去验证并且查看了网上的一些资料,现将其整理如下: 一.css盒模型 ...

  6. IE盒模型和标准盒模型

    标准盒模型和ie盒模型(怪异盒模型) w3c标准盒模型 width和height不包括padding和border ie盒模型 width和height包含padding和border ie8以上都是 ...

  7. 弹性伸缩布局-flex

    弹性伸缩布局-flex 引言:本文主要参照阮一峰的网络日志 .郭锦荣的博客总结完成. 正文: 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性 ...

  8. css 13-CSS3属性:Flex布局图文详解

    13-CSS3属性:Flex布局图文详解 #前言 CSS3中的 flex 属性,在布局方面做了非常大的改进,使得我们对多个元素之间的布局排列变得十分灵活,适应性非常强.其强大的伸缩性和自适应性,在网页 ...

  9. 弹性布局学习-详解align-content(六)

    弹性布局学习-详解align-content(六)

随机推荐

  1. node 微信授权 获取openid

    node获取微信授权拿到openid 需要了解的网站   1.微信授权. 先说一下流程(一张图代替所有): 流程步骤: 1.用户同意,获取code. 2.通过code获取网页授权access_toke ...

  2. Python之open()函数

    Python内置了读写文件的函数open(). # 方法一 # 使用Python内置的open()函数,传入文件名和标示符 f = open('E:/test/driver.py', 'r', enc ...

  3. zabbix笔记_002

    监控登录用户 监控图形配置 创建图形: 配置完成后查看图形: 创建触发器配置 创建完成后可以查看 监控磁盘IO I/O查看工具: istat 安装[需要epel源]: yum install -y s ...

  4. python爬取中国大学排名

    教程来自:[Python网络爬虫与信息提取].MOOC. 北京理工大学 目标:爬取最好大学网前50名大学 代码如下: import requests from bs4 import Beautiful ...

  5. Building Applications with Force.com and VisualForce(Dev401)( 八):Designing Applications for Multiple users:Managing your users' experience II

    Dev 401-008: Design Applications for Multiple Users' Experience Part 2Universal Containers Scenario1 ...

  6. HOOK相关原理与例子

    消息HOOK 原理: 1. 用户输入消息,消息被放到系统消息队列. 2. 程序发生了某些需要获取输入的事件,就从系统消息队列拿出消息放到程序消息队列中. 3. 应用程序检测到有新的消息进入到程序消息队 ...

  7. 分库分表实践-Sharding-JDBC

    最近一段时间在研究分库分表的一些问题,正好周末有点时间就简单做下总结,也方便自己以后查看. 关于为什么要做分库分表,什么是水平分表,垂直分表等概念,相信大家都知道,这里就不在赘述了. 本文只讲述使用S ...

  8. coding++ :局部 Loading 加载效果

    $("<div id='shade' style='opacity:0.85;background:white'></div><img src='${ctx}/ ...

  9. VRRP协议:Virtual Route

    VRRP协议:Virtual Route  Redundancy Protocol虚拟路由冗余协议.是一种容错协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而 ...

  10. Python python 五种数据类型--字典

    # 定义一个字典 var1 = {'a':20,'b':40}; var2 = dict(); print(type(var1)) print(type(var2)) # 长度 length = le ...