【CSS3】04-标准流 + 浮动 + flex布局

本文介绍浮动与flex布局。

目录

[1. 标准流](#1. 标准流)

[2. 浮动](#2. 浮动)

[2.1 基本使用](#2.1 基本使用)

特点

脱标

[2.2 清除浮动](#2.2 清除浮动)

[2.2.1 额外标签法](#2.2.1 额外标签法)

[2.2.2 单伪元素法](#2.2.2 单伪元素法)

[2.2.3 双伪元素法(推荐)](#2.2.3 双伪元素法(推荐))

[2.2.4 overflow(最简单)](#2.2.4 overflow(最简单))

[3. flex布局](#3. flex布局)

[3.1 组成](#3.1 组成)

[3.2 主轴与侧轴对齐方式](#3.2 主轴与侧轴对齐方式)

[3.2.1 主轴](#3.2.1 主轴)

[3.2.2 侧轴](#3.2.2 侧轴)

[3.3 修改主轴方向](#3.3 修改主轴方向)

[3.4 弹性伸缩比](#3.4 弹性伸缩比)

[3.5 弹性换行与行对齐](#3.5 弹性换行与行对齐)

[3.5.1 弹性盒子换行](#3.5.1 弹性盒子换行)

[3.5.2 行对齐方式](#3.5.2 行对齐方式)


1. 标准流

也叫文档流,指的是标签在页面中默认的排布规则

例如:块元素独占一行,行内元素可以一行显示多个


2. 浮动

让块级元素水平排列

2.1 基本使用

属性名:float

属性值:left 左对齐;right 右对齐

两个标签都加上 左浮动:都靠左

第二个改为右浮动:一左一右

特点

顶对齐,具备行内块的显示模式


脱标

给标签加上浮动,本身属于让其脱离标准流的控制

如果一个有浮动,另一个没有浮动,效果如下:

就会出现上面的叠加效果,因为浮动后的,不是标准流了,所以浏览器不会认为它在占用空间,下面没有加浮动的标签顺其自然的上移和one标签重叠。

所以最好两个都要浮动。


2.2 清除浮动

浮动元素会脱标,如果浮动的父级没有高度,子级无法撑开父级高度(可能导致页面布局错乱)

解决方法:清除浮动(清除浮动带来的影响)

先看正常的:

现在注释掉top的高度

因为 top.div 里的两个盒子是浮动的,属于脱标,浏览器会认为其不存在,所以出现上面的情况。


2.2.1 额外标签法

在父元素内容的最后添加一个块级元素,设置CSS属性:clear:both


2.2.2 单伪元素法

在父元素内容的最后添加一个块级元素

可以直接使用如下代码:

复制代码
.clearfix::after {
    content: "";
    clear: both;
    display: block;
}

2.2.3 双伪元素法(推荐)

复制代码
        /* 双伪元素 */
        /* before 解决外边距塌陷问题 */
        .clearfix::before,
        .clearfix::after {
            content: "";
            display: block;
        }

        .clearfix::after {
            clear: both;
        }
    </style>
</head>
<body>
    <div class="top clearfix">      
        <div class="left"></div>
        <div class="right"></div>
    </div>
    <div class="bottom"></div>
</body>

2.2.4 overflow(最简单)

父元素添加CSS属性 overflow:hidden


3. flex布局

flex布局也叫弹性布局,是浏览器提倡的布局类型,非常适合结构化布局,提供了强大的空间分布和对齐能力。

flex布局不会产生浮动布局中的脱标现象,更简单更灵活。

3.1 组成

设置方式:给父元素添加 display:flex,子元素可以自动挤压或拉伸

组成部分:

弹性容器、弹性盒子(是容器的子级)、主轴(默认水平)、侧轴/交叉轴(默认垂直)

沿着主轴方向排列,自动挤压。


3.2 主轴与侧轴对齐方式

3.2.1 主轴

justify-content

常用后四个

flex-end

center

space-between

空白间距均匀分配在弹性盒子之间

space-around

空白间距均匀分布在弹性盒子两侧,两个弹性盒子之间的距离是两侧的2倍

space-evenly

各个间距都相等


3.2.2 侧轴

align-items 当前弹性容器内所有弹性盒子的侧轴对齐方式

align-self 单独控制某个弹性盒子的侧轴对齐方式

前两个常用

align-items:

stretch

弹性盒子没有侧轴尺寸时才有效

center

flex-start

flex-end

align-self:

只举例一个,剩下都可以尝试

center


3.3 修改主轴方向

主轴默认水平方向,侧轴默认垂直方向

flex-direction

主轴方向变了,侧轴自动也会变化

只测试column


3.4 弹性伸缩比

控制弹性盒子的主轴方向的尺寸

属性名:flex

属性值:整数数字,表示占用父级剩余尺寸的份数

如果修改了主轴方向呢?

控制盒子的高


3.5 弹性换行与行对齐

3.5.1 弹性盒子换行

弹性盒子自动挤压或拉伸,默认情况下,所有弹性盒子都在一行显示

flex-wrap

属性值:

wrap 换行

nowrap 不换行(默认)


3.5.2 行对齐方式

行与行之间的对齐方式(默认垂直方向)

align-content

属性值:(和主轴对齐方式一样)

演示效果:

flex-start

flex-end

center

space-between

space-around

space-evenly

注意:

align-content对单行的没有效果

也就是如果不换行(没有wrap)就没有效果,都在一行


本文介绍浮动与flex布局,重点掌握flex布局。

相关推荐
wangpq7 分钟前
微信小程序地图callout气泡图标在ios显示,在安卓机不显示
前端·vue.js
curdcv_po11 分钟前
Vue3 组件通信方式全解析
前端
Auroral15615 分钟前
基于RabbitMQ的异步通知系统设计与实现
前端·后端
栗筝i15 分钟前
Spring 核心技术解析【纯干货版】- XV:Spring 网络模块 Spring-Web 模块精讲
前端·网络·spring
打野赵怀真18 分钟前
H5如何禁止动画闪屏?
前端·javascript
zhangxingchao18 分钟前
关于浮点数的思考
前端
Riesenzahn18 分钟前
你喜欢Sass还是Less?为什么?
前端·javascript
玄魂19 分钟前
基于Vue框架的开源大屏项目实践
前端·开源·数据可视化
晴殇i21 分钟前
一行代码解决跨域问题,JavaScript新特性解析
前端
挖稀泥的工人24 分钟前
面试看这一篇webpack
前端·webpack