【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布局。

相关推荐
Java永无止境几秒前
Web前端基础:HTML-CSS
java·前端·css·html·javaweb
安全系统学习18 分钟前
网络安全逆向分析之rust逆向技巧
前端·算法·安全·web安全·网络安全·中间件
花开月满西楼19 分钟前
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
android·前端·android studio
KENYCHEN奉孝21 分钟前
基于 actix-web 框架的简单 demo
前端·rust
wordbaby34 分钟前
🎯 satisfies 关键字详解(TypeScript)
前端·typescript
超级土豆粉1 小时前
CSS 性能优化
前端·css·性能优化
Mintopia1 小时前
光影魔术师的秘密:用 JavaScript 打造软阴影的奇幻世界
前端·javascript·计算机图形学
Mintopia1 小时前
Three.js 粒子系统:让代码化身奇幻造梦师
前端·javascript·three.js
itwlz1 小时前
vite配置@别名,以及如何让IDE智能提示路经
开发语言·前端·javascript
lichenyang4531 小时前
添加按钮跳转页面并且根据网站的用户状态判断是否显示按钮
开发语言·前端·javascript