使用弹性盒实现多种常见布局

使用弹性盒实现多种常见布局
一、左侧定宽,右侧响应式
<!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;
        }
        body, html {
            width: 100%;
            height: 100%;
        }

        .container {
            width: 100%;
            height: 100%;
            display: flex;
        }

        .slider {
            width: 100px;
            height: 100%;
            background-color: red;
        }

        .content {
            flex: 1;
            background-color: blue;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="slider"></div>
        <div class="content"></div>
    </div>
</body>
</html>

效果如下:
在这里插入图片描述

二、两侧定宽,中间自适应
<!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;
        }
        body, html {
            width: 100%;
            height: 100%;
        }

        .container {
            width: 100%;
            height: 100%;
            display: flex;
        }

        .left, .right {
            width: 100px;
            height: 100%;
            background-color: red;
        }

        .content {
            flex: 1;
            background-color: blue;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="left"></div>
        <div class="content"></div>
        <div class="right"></div>
    </div>
</body>
</html>

效果如下:
在这里插入图片描述

三、三等分
<!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;
        }
        body, html {
            width: 100%;
            height: 100%;
        }

        .container {
            width: 100%;
            height: 100%;
            display: flex;
        }

        .box {
            flex: 1;
            height: 20px;
            background-color: red;
            margin: 20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box left"></div>
        <div class="box content"></div>
        <div class="box right"></div>
    </div>
</body>
</html>

效果如下:
在这里插入图片描述

四、搜索历史不定宽
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Flexbox wrap 0 — children overflowing</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        body, html {
            width: 100%;
            height: 100%;
        }

        div {
            padding: 10px;
            margin: 10px;
            background: aqua;
        }

        .container {
            display: flex;
            flex-wrap: wrap
        }
    </style>
  </head>
  <body>
    <main class="container">
        <div>First article</div>
        <div>Second article</div>
        <div>Second article</div>
        <div>article</div>
        <div>Second article</div>
        <div>Eighth article</div>
        <div>Second article</div>
        <div>article</div>
        <div>Second article</div>
        <div>Twelfth article</div>
        <div>Second article</div>
        <div>Second article</div>
        <div>Ninth article</div>
        <div>Second article</div>
        <div>article</div>
        <div>Tenth article</div>
        <div>Second article</div>
        <div>Second</div>
        <div>Second article</div>
    </main>
  </body>
</html>

在这里插入图片描述

五、多列布局等宽
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Flexbox wrap 0 — children overflowing</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        body, html {
            width: 100%;
            height: 100%;
        }

        .container {
            display: flex;
            flex-wrap: wrap;
        }

        div {
            flex: 200px;
            height: 70px;
            margin: 10px;
            background: aqua;
        }

    </style>
  </head>
  <body>
    <main class="container">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </main>
  </body>
</html>

效果如下:
在这里插入图片描述

六、骰子
<!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;
        }

        body, html {
            width: 100%;
            height: 100%;
        }

        .container {
            width: 200px;
            height: 200px;
            border: 2px solid gray;
            border-radius: 10px;
            padding: 20px;
            display: flex;
            justify-content: space-between;
            margin: 20px;
        }

        .item {
            display: block;
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background-color: #666;
        }

        .item:nth-child(2) {
            align-self: center;
        } 

        .item:nth-child(3) {
            align-self: flex-end;
        }
    </style>
</head>
<body>
    <div class="container">
        <span class="item"></span>
        <span class="item"></span>
        <span class="item"></span>
   </div>
</body>
</html>

在这里插入图片描述

七、上中下布局
<!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;
        }

        body, html {
            width: 100%;
            height: 100%;
        }

        .container {
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
        }

        header, footer {
            height: 50px;
            background-color: red;
        }

        main {
            flex: 1;
            background-color: blue;
        }
    </style>
</head>
<body>
    <div class="container">
        <header></header>
        <main></main>
        <footer></footer>
    </div>
</body>
</html>

效果如下:
在这里插入图片描述

八、两列三行撑满父元素
<!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;
        }
        body, html{
            width: 100%;
            height: 100%;
        }

        .container {
            width: 800px;
            height: 300px;
            display: flex;
            justify-content: space-between;
            flex-wrap: wrap;
            align-content: space-between;
            background-color: darkgray;
        }

        .container_item {
            width: 200px;
            height: 40px;
            background-color: red;
            /* 根据父元素宽度计算得出 */ 
            margin-right: 400px;
        }

        .container_item:nth-child(2n) {
            margin-right: 0;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="container_item"></div>
        <div class="container_item"></div>
        <div class="container_item"></div>
        <div class="container_item"></div>
        <div class="container_item"></div>
        <div class="container_item"></div>
    </div>
</body>
</html>

如下:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flexbox 是一种现代 CSS 布局模型,用于创建灵活、响应式的用户界面设计,特别适合处理一维(行或列)布局问题,如导航栏、卡片堆栈等。要在 B站(Bilibili)或其他网站上实现布局,你可以使用 Flexbox 的主要属性和概念: 1. **启用 Flexbox**:首先,给容器设置 `display: flex;` 属性,使其成为一个 Flex 容器。 ```css .container { display: flex; } ``` 2. **主轴和侧轴**:默认情况下,Flexbox 会沿主轴(row 或 column)对元素进行排列。可以通过 `flex-direction` 属性改变方向: - `flex-direction: row;`(默认):水平布局 - `flex-direction: column;`:垂直布局 3. **对齐方式**:使用 `align-items`, `justify-content` 来控制元素在主轴和侧轴上的对齐方式: - `align-items: flex-start` 或 `flex-end` 对齐项目顶部或底部 - `align-items: center` 或 `stretch` 中心对齐或拉伸 - `justify-content: flex-start`, `flex-end`, `center`, `space-between`, `space-around` 控制项目之间的间距 4. **弹性项目**:每个使用 Flexbox 的子元素称为“弹性项目”(flex item)。它们可以调整自己的大小以适应容器,使用 `flex` 属性: - `flex: 1` 表示自动分配空间 - `flex: 0 1 auto` 或 `flex-basis: auto` 设置初始大小 5. **顺序和换行**:`flex-wrap` 属性控制换行,`order` 属性用于定义项目的顺序: - `flex-wrap: nowrap`(默认)不换行 - `flex-wrap: wrap` 换行 - `order` 可以调整元素的显示顺序 使用这些属性,你可以创建出 B站页面中常见的瀑布流布局、卡片式布局、网格布局多种效果。记得结合 CSS 另一个布局工具 Grid 或媒体查询来提供更好的响应性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值