CSS布局技巧 | 青训营

188 阅读1分钟

题目来源:蓝桥杯【页面布局】Flex 经典骰子布局(web应用开发)

题目要求:

补全 index.html 文件空缺的 css 代码。
骰子 1:使用 justify-contentalign-items 属性实现。
骰子 2:使用 justify-contentflex-directionalign-items 属性实现。
骰子 3:使用 justify-contentalign-selfalign-items 属性。
骰子 45679 布局结构类似:使用 justify-contentalign-selfflex-directionalign-items 属性实现。
骰子 8:使用 justify-contentflex-wrapflex-basisalign-items 属性实现。

最终实现效果

QQ图片20230727110719.png

实现过程

本题主要使用flex盒子标签的弹性布局实现,flex标签有以下属性:

  • justify-content:定义了项目在主轴上的对齐方式
  • flex-direction:决定主轴的方向(即项目的排列方向)
  • align-items:项目在交叉轴上如何对齐
  • flex-wrap:项目都排在一条线(又称”轴线”)上 最终代码:
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>骰子布局</title>
    <style>
        body {
            margin: 10px 0 0 0;
            display: flex;
            justify-content: space-around;
        }
        
        body>div {
            display: flex;
            width: 100px;
            height: 100px;
            border-radius: 4px;
            border: 2px solid red;
            box-sizing: border-box;
        }
        
        p {
            width: 15px;
            height: 15px;
            background-color: black;
            border-radius: 50%;
            margin: 2px;
        }
        
        .div1 {
            justify-content: center;
            align-items: center;
        }
        /*todo:请补全剩余骰子布局代码*/
        .div2{
            justify-content: space-around;
            flex-direction: column;
            align-items: center;
        }
        .div3{
            justify-content: space-around;
            flex-direction: column;
        }
        .div3 div{
            display: flex;
            justify-content: space-around;
            flex-basis: auto;
        }
        .div3 #one{
            align-self: flex-start;
        }
        .div3 #two{
            align-self: center;
        }
        .div3 #three{
            align-self: flex-end;
        }
        .div4{
            justify-content: space-around;
            flex-direction: column;
        }
        .div4 div{
            display: flex;
            justify-content: space-around;
            flex-basis: auto;
        }
        .div4{
            justify-content: space-around;
            flex-direction: column;
        }
        .div4 div{
            display: flex;
            justify-content: space-around;
            flex-basis: auto;
        }
        .div5{
            justify-content: space-around;
            flex-direction: column;
        }
        .div5 div{
            display: flex;
            justify-content: space-around;
            flex-basis: auto;
        }
        .div6{
            justify-content: space-around;
            flex-direction: column;
        }
        .div6 div{
            display: flex;
            justify-content: space-around;
            flex-basis: auto;
        }
        .div7{
            justify-content: space-around;
            flex-direction: column;
        }
        .div7 div{
            display: flex;
            justify-content: space-around;
            flex-basis: auto;
        }
        .div8{
            justify-content: space-around;
            flex-direction: column;
        }
        .div8 div{
            display: flex;
            justify-content: space-around;
            flex-basis: auto;
        } 
        .div8 #one{
            margin-left: -11px;
        }
        .div8 #two{
            margin-right: -11px;
        }
        .div9{
            justify-content: space-around;
            flex-direction: column;
        }
        .div9 div{
            display: flex;
            justify-content: space-around;
            flex-basis: auto;
        }
    </style>
</head>
 
<body>
    <!--骰子1-->
    <div class="div1">
        <p></p>
    </div>
    <!--骰子2-->
    <div class="div2">
        <p></p>
        <p></p>
    </div>
    <!--骰子3-->
    <div class="div3">
        <p id="one"></p>
        <p id="two"></p>
        <p id="three"></p>
    </div >
    <!--骰子4-->
    <div class="div4">
        <div>
            <p></p>
            <p></p>
        </div>
        <div>
            <p></p>
            <p></p>
        </div>
    </div>
    <!--骰子5-->
    <div class="div5">
        <div>
            <p></p>
            <p></p>
        </div>
        <div>
            <p></p>
        </div>
        <div>
            <p></p>
            <p></p>
        </div>
    </div>
    <!--骰子6-->
    <div class="div6">
        <div>
            <p></p>
            <p></p>
        </div>
        <div>
            <p></p>
            <p></p>
        </div>
        <div>
            <p></p>
            <p></p>
        </div>
    </div>
    <!--骰子7-->
    <div class="div7">
        <div>
            <p></p>
            <p></p>
            <p></p>
        </div>
        <div>
            <p></p>
        </div>
        <div>
            <p></p>
            <p></p>
            <p></p>
        </div>
    </div>
    <!--骰子8-->
    <div class="div8">
        <div>
            <p></p>
            <p></p>
            <p></p>
        </div>
        <div>
            <p id="one"></p>
            <p id="two"></p>
        </div>
        <div>
            <p></p>
            <p></p>
            <p></p>
        </div>
    </div>
    <!--骰子9-->
    <div class="div9">
        <div>
            <p></p>
            <p></p>
            <p></p>
        </div>
        <div>
            <p></p>
            <p></p>
            <p></p>
        </div>
        <div>
            <p></p>
            <p></p>
            <p></p>
        </div>
    </div>
</body>
 
</html>

调试

在flex弹性布局中,可以使用浏览器开发者工具进行对于flex 的调试:

image.png

image.png

得到想要的效果