LOVEJOAN

文章 分类 评论
76 9 1453

站点介绍

人生是一场孤独的旅行,没有终点。。。

CSS基础五-浮动与Flex布局

chuck 2023-07-10 361 13条评论 网页设计 html

首页 / 正文

CSS基础五

标准流

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

  • 块元素独占一行
  • 行内元素一行多个
  • ......

浮动

让块级标签在水平排列。

属性名:float

属性值:

  • left
  • right

浮动元素脱离标准流。

浮动后的元素顶对齐。

浮动后的元素具备行内块特点,不占用标准流空间。

测试:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        .product {
            margin: 100px auto;
            width: 1226px;
            height: 628px;
            background-color: #DCDCDC;
        }
        .bd-left {
            width: 234px;
            height: 628px;
            background-color: #FAEBD7;
            float: left;
        }
        .bd-right {
            width: 978px;
            height: 628px;
            background-color:     #CDCDB4;
            float: right;
            margin-left: 14px;
        }

        .bd-right li {
            margin-right: 14px;
            margin-bottom: 14px;
            width: 234px;
            height: 300px;
            background-color: #FFC1C1;
            float: left;
            list-style: none;
        }
        .bd-right li:nth-child(4n){
            margin-right: 0px;
        }
    </style>
</head>
<body>
    <div class="product">
        <div class="bd-left">爆款</div>
        <div class="bd-right">
            <ul>
                <li>手机</li>
                <li>手机</li>
                <li>手机</li>
                <li>手机</li>
                <li>手机</li>
                <li>手机</li>
                <li>手机</li>
                <li>手机</li>
            </ul>
        </div>
    </div>
</body>
</html>

清除浮动

浮动元素会脱标,如果父级没有高度,子级无法撑开父级高度导致页面错乱。

需要清除浮动。

一、额外标签法

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

一般用于清除浮动的类名:clearfix

html:
    <div class="top">
        <div class="left"></div>
        <div class="right"></div>
        <div class="clearfix"></div>
    </div>
    <div class="buttom"></div>
CSS:
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        .top {
            margin: 10px auto;
            width: 800px;
            /* height: 200px; */
            background-color: pink;
        }
        .left {
            width: 200px;
            height: 200px;
            float: left;
            background-color: skyblue;
            
        }
        .right {
            width: 550px;
            height: 200px;
            float: right;
            background-color: orange;
        }
        .clearfix {
            clear: both;
        }
        .buttom{
            height: 80px;
            background-color:     #A52A2A;
        }
    </style>

二、单伪元素法

在父级元素的最后添加伪元素,原理与额外标签法相同,不需要额外添加标签

        CSS:
        /*单伪元素法*/
        .clearfix::after {
            content: "";
            display: block;
            clear: both;
        }
        HTML:
    <div class="top clearfix">
        <div class="left"></div>
        <div class="right"></div>
    </div>
    <div class="buttom"></div>

三、双伪元素法

        .clearfix::before,
        .clearfix::after{
            content: "";
            display: table;
        }
        .clearfix::after {
            clear: both;
        }

四、overflow清除浮动

在父元素添加CSS属性overflow:hidden

Flex布局

弹性布局,适合结构化布局,提供空间分布和对齐。不会产生脱标现象。

Flex布局组成

弹性容器:给父元素设置了display:flex成为弹性容器

弹性盒子:子级元素,可以自动排列

主轴:默认在水平方向

侧轴/交叉轴:默认在垂直方向

相关属性设置:

属性描述
display:flex创建flex容器
justify-content主轴方向对齐
align-items侧轴对齐方式
align-self某个弹性盒子侧轴对齐方式
flex-direction修改主轴方向
flex弹性伸缩比
flex-wrap弹性盒子换行
align-content行对齐方式

主轴对齐方式:

属性名:justify-content

属性值:

属性值效果
flex-start默认值,弹性盒子从起点开始依次排列
flex-end弹性盒子从终点开始依次排列
center弹性盒子沿主轴居中排列
space-between沿主轴均匀排列,空白间距均分在盒子之间
space-around沿主轴均匀排列,空白间距均分在盒子两侧
space-evenly沿主轴均匀排列,盒子与容器之间间距相等

侧轴对齐方式:

属性名:align-items:当前弹性容器内索引盒子的侧轴对齐方式(在弹性容器设置)

属性名:align-self:单独控制某个弹性盒子的侧轴对齐方式(在弹性盒子设置)

属性值效果
stretch盒子沿着侧轴线被拉伸至铺满容器,盒子没有但是设置侧轴反向默认拉伸
center盒子沿侧轴居中排列,整行居中
flex-start盒子从起点开始依次排列
flex-end盒子从终点依次排列

主轴方向修改:

属性名:flex-direction

属性值:

属性值效果
row默认,水平方向,从左到右
column垂直方向,从上到下
row-reverse水平方向,从右到左
column-reverse垂直方向,从下到上

修改后侧轴自动变换。

弹性伸缩比:控制盒子主轴方向的尺寸。

属性名:flex

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

除去手动设置的宽度,占用的份数,设置在盒子上。

        .box {
            height: 300px;
            border: 1px solid #000;
            display: flex;
        }
        .box div {
            height: 100px;
            background-color: pink;
        }
        .box div:nth-child(1){
            width: 200px;
        }
        .box div:nth-child(2){
            flex: 1;
        }
        .box div:nth-child(3){
            flex: 2;
        }

弹性盒子换行:

属性名:flex-wrap

属性值:wrap(换行) nowrap(不换行)

默认情况下不换行,自动在一行挤压。

            flex-wrap: wrap;
            justify-content: space-around;

行对齐方式:

属性名:align-content

属性值:

属性值效果
flex-start默认值,弹性盒子从起点开始依次排列
flex-end弹性盒子从终点开始依次排列
center弹性盒子沿主轴居中排列
space-between沿主轴均匀排列,空白间距均分在盒子之间
space-around沿主轴均匀排列,空白间距均分在盒子两侧
space-evenly沿主轴均匀排列,盒子与容器之间间距相等

盒子不换行,对齐方式不生效。

案例一:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        .box {
            margin: 50px auto;
            width: 1200px;
            height: 418px;
            border: 1px solid #ddd;
            border-radius: 10px;
        }
        .box ul li {
            list-style: none;
            /* background-color: red; */
            width: 500px;
            height: 88px;
            display: flex;
        }
        .box .pic {
            margin-right: 15px;
        }
        .box ul{
            height: 418px;
            padding: 90px 40px 90px 60px;
            display: flex;
            flex-wrap: wrap;
            justify-content: space-between;
            align-content: space-between;
        }
        .box .text h4{
            font-size: 20px;
            line-height: 40px;
            font-weight: normal;
            color: #333;
        }
        .box .text p{
            font-size: 14px;
            color: #666;
        }
    </style>
</head>
<body>
    <div class="box">
        <ul>
            <li>
                <div class="pic">
                    <img src="./1.svg" alt="">
                </div>
                <div class="text">
                    <h4>一键发布多端</h4>
                    <p>发布视频到抖音短视频、西瓜视频及今日头条</p>
                </div>
            </li>
            <li>
                <div class="pic">
                    <img src="./2.svg" alt="">
                </div>
                <div class="text">
                    <h4>管理视频内容</h4>
                    <p>支持修改已发布稿件状态和实时查询视频审核状态</p>
                </div>
            </li>
            <li>
                <div class="pic">
                    <img src="./3.svg" alt="">
                </div>
                <div class="text">
                    <h4>发布携带组件</h4>
                    <p>支持分享内容携带小程序、地理位置信息等组件,扩展内容及突出地域性</p>
                </div>
            </li>
            <li>
                <div class="pic">
                    <img src="./4.svg" alt="">
                </div>
                <div class="text">
                    <h4>数据评估分析</h4>
                    <p>获取视频在对应产品内的数据表现、获取抖音热点,及时进行表现评估</p>
                </div>
            </li>
        </ul>
    </div>
</body>
</html>

取消表单控件的外边框

outline: none;

设置颜色为透明

background-color: transparent;

隐藏字体,设置字号为0

font-size:0

特殊选择器控制搜索框提示文本样式

.search input::placeholder {
    font-size: 14px;
    color: #999;
}

设置行内块和行内元素对齐属性:vertical-align

.user img {
    vertical-align: middle;
    border-radius: 15px;
}

评论(13)

  1. 1 游客 2025-03-27 23:37 回复

    555

  2. 1 游客 2025-03-27 23:36 回复

    555nGNw1Pzj' OR 227=(SELECT 227 FROM PG_SLEEP(15))--

  3. 1 游客 2025-03-27 23:35 回复

    555

  4. 1 游客 2025-03-27 23:34 回复

    555

  5. 1 游客 2025-03-27 23:33 回复

    555

  6. 1 游客 2025-03-27 23:31 回复

    555

  7. 1 游客 2025-03-27 23:28 回复

    555

  8. @@rg21D 游客 2025-03-27 23:27 回复

    555

  9. 1-1; waitfor delay '0:0:15' -- 游客 2025-03-27 23:26 回复

    555

  10. 1 游客 2025-03-27 23:25 回复

    555

  11. 1 游客 2025-03-27 23:24 回复

    555

  12. 1 游客 2025-03-27 23:24 回复

    555

  13. 1 游客 2025-03-27 23:22 回复

    555

热门文章

最新评论

  • 1

    555fulIdEqZ' OR 160=(SELECT 160 FROM PG_SLEEP(15))--

  • 1

    555-1)) OR 58=(SELECT 58 FROM PG_SLEEP(15))--

  • 1

    555-1) OR 13=(SELECT 13 FROM PG_SLEEP(15))--

  • 1

    555-1 OR 475=(SELECT 475 FROM PG_SLEEP(15))--

  • 1

    555

  • 1

    555

  • 1

    5554FobGRsu') OR 696=(SELECT 696 FROM PG_SLEEP(15))--

  • 1

    555C9F0upP1' OR 504=(SELECT 504 FROM PG_SLEEP(15))--

  • 1

    555

  • 1-1; waitfor delay '0:0:15' --

    555

日历

2025年05月

    123
45678910
11121314151617
18192021222324
25262728293031

文章目录