一、怪异盒模型

怪异盒模型的属性是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. java实现简单的星座查询

    在校小白,大神勿喷. 版本已简化 连接mysql数据库验证用户名及密码进行登陆 public class mysql {Connection con;public mysql(){    try{   ...

  2. [vue ]滚动视图解决ElementUI NavMenu 导航菜单过长显示的问题

    记录一下工作 需求 导航菜单过长的时候会溢出,需要一个像 Tabs 标签页一样的滚动视图容器,可以左右滚动内部视图. 解决方法 由于时间问题,所以直接将 Tabs 源码抽取出来使用. 这里要做一些特殊 ...

  3. 网络安全从入门到精通 (第二章-1) Web安全前端基础

    本文内容: 前端是什么? 前端代码 HTML CSS JS !!!醋成酒的小墨,促成就的小墨,小墨促成就,!!! 1,前端是什么? 网站一般用两部分组成,前端负责展示,后端负责处理请求. 2,前端代码 ...

  4. Linux 部署Tomcat图文注解 一学就会

    导读 安装tomcat前首先要安装对应的jdk并配置Java环境. 安装jdk,请参考:点我直达 安装Tomcat 下载Tomcat包 官网地址:点我直达 Tomcat与jdk兼容关系 注:Tomca ...

  5. Comparing Data-Independent Acquisition and Parallel Reaction Monitoring in Their Abilities To Differentiate High-Density Lipoprotein Subclasses 比较DIA和PRM区分高密度脂蛋白亚类的能力 (解读人:陈凌云)

    文献名:Comparing Data-Independent Acquisition and Parallel Reaction Monitoring in Their Abilities To Di ...

  6. DIV常用属性大全

    目录 一.属性列表 二.常用属性 三.一些特殊效果 四.定位和控制 一.属性列表 color : #999999 文字颜色 font-family : 宋体 文字字型 font-size : 10pt ...

  7. Salesforce LWC学习(十四) Continuation进行异步callout获取数据

    本篇参考: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.apex_continua ...

  8. JS十大经典排序排序算法

    1.冒泡排序 冒泡排序通常排在第一位,说明它是排序算法的入门算法,是最简单的一个排序算法,而且必须掌握和理解. 先来看看代码吧: function bubbleSort(arr) { let temp ...

  9. 北邮OJ 89. 统计时间间隔 java版

    89. 统计时间间隔 时间限制 1000 ms 内存限制 65536 KB 题目描述 给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间.给出的时间一定满足的形式,其中x和y分别 ...

  10. IDEA 快捷键大全及常用插件

    IDEA快捷键操作 颜色主题插件: **Material Theme UI Plugin ** 快捷键提醒: **Key Promoter X ** 查找Bug: QAPlig-FindBugs 热部 ...