盒子大小

默认情况下,盒子可见框的大小由内容区,内边距和边框共同决定
box-sizing用来设置盒子尺寸的计算方式(设置width和height的作用)

.box {
    width: 200px;
    height: 200px;
    background-color: yellow;
    border: 10px red solid;
    /* box-sizing: content-box; */
    box-sizing: border-box;
}

可选值:
content-box默认值,宽度和高度用来设置内容区的大小
前端小案例:田径场_圆角
border-box 宽度和高度用来设置整个盒子可见框的大小
前端小案例:田径场_偏移量_02
width和height指的是内容区、内边距和边框的总大小

轮廓

outline用来设置元素的轮廓线,用法和border一模一样
轮廓和边框不同点是,轮廓不会影响到可见框的大小

边框

.box {
    width: 200px;
    height: 200px;
    background-color: yellow;
    border: 10px red solid;
}

前端小案例:田径场_偏移量_03
轮廓

.box {
    width: 200px;
    height: 200px;
    background-color: yellow;
    outline: 10px red solid;
}

前端小案例:田径场_圆角_04
很明显看到outline与border的区别
我们一般不会直接这么设置轮廓,而是下面这种场景

.box:hover {
    outline: 10px red solid;
}

阴影

box-shadow属性用于在一个元素的框架周围添加阴影效果
你可以设置多个由逗号分隔的效果
一个盒状阴影由相对于元素的X和Y的偏移量、模糊和扩散半径以及颜色来描述
box-shadow用来设置元素的阴影效果,阴影不会影响页面布局

.box {
    width: 200px;
    height: 200px;
    background-color: yellow;
    box-shadow: 10px 10px orange;
}

前端小案例:田径场_圆角_05

box-shadow: 10px 10px 5px orange;

前端小案例:田径场_圆角_06

box-shadow: 10px 10px 5px rgba(0, 0, 0, .2);

前端小案例:田径场_html_07
第一个值-水平偏移量:设置阴影的水平位置

正值向右移动
负值向左移动

第二个值-垂直偏移量:设置阴影的垂直位置

正值向下移动
负值向上移动

第三个值-阴影的模糊半径
第四个值-阴影的颜色

圆角

border-radius 属性使一个元素的外边框边缘的角变圆
你可以设置一个半径来做圆角,或者设置两个半径来做椭圆角
border-radius 用来设置圆角,圆角设置的是圆的半径大小

border-top-left-radius
border-top-right-radius
border-bottom-left-radius
border-bottom-right-radius

border-radius: 20px;

前端小案例:田径场_偏移量_08

border-top-right-radius: 50px 100px;

前端小案例:田径场_html_09
border-radius 可以分别指定四个角的圆角

四个值:左上 右上 右下 左下
三个值:左上 右上/左下 右下
两个值:左上/右下 右上/左下
一个值:左上/右上/右下/左下

这里同样不需要死记硬背,只要记住遵循顺时针方向和矩形中心点对称原则
与border不同的是,border是从上开始顺时针设置,而圆角是从左上开始

原理很简单,就是绘制正方形,并将四个圆角半径设置为正方形的一半

.box {
    width: 200px;
    height: 200px;
    background-color: yellow;
    border-radius: 50%;
}

前端小案例:田径场_其他_10

椭圆

.box {
    width: 300px;
    height: 200px;
    background-color: yellow;
    border-radius: 50%;
}

前端小案例:田径场_圆角_11

<!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>田径场</title>
    <style>
        /* 公共部分 */
        .box1,
        .box2,
        .box3,
        .box4,
        .box5,
        .box6,
        .box7,
        .box8,
        .boxRect,
        .boxColLine,
        .boxRectLeft1,
        .boxRectLeft2,
        .boxCircLeft,
        .boxCirc,
        .boxCircRight,
        .boxRectRight1,
        .boxRectRight2,
        .football {
            box-sizing: border-box;
            border: 0.5px white solid;
        }

        .box2,
        .box3,
        .box4,
        .box5,
        .box6,
        .box7,
        .box8 {
            margin: 12.2px auto;
        }

        .boxRectLeft1,
        .boxRectLeft2,
        .boxCircLeft {
            float: left;
            /* 去除左边框 */
            border-left: none;
        }

        .boxCircRight,
        .boxRectRight1,
        .boxRectRight2 {
            float: right;
            /* 去除右边框 */
            border-right: none;
        }

        /* ==========田径场========== */
        .box1 {
            background-color: #DA251E;
            width: calc(1719.2px/2 + 360px*2 - 12.2px*0*2);
            height: calc(360px*2 - 12.2px*0*2);
            margin: 100px auto;
            border-radius: calc(360px - 12.2px*0) / 50%;
        }

        .box2 {
            width: calc(1719.2px/2 + 360px*2 - 12.2px*1*2);
            height: calc(360px*2 - 12.2px*1*2);
            border-radius: calc(360px - 12.2px*1) / 50%;
        }

        .box3 {
            width: calc(1719.2px/2 + 360px*2 - 12.2px*2*2);
            height: calc(360px*2 - 12.2px*2*2);
            border-radius: calc(360px - 12.2px*2) / 50%;
        }

        .box4 {
            width: calc(1719.2px/2 + 360px*2 - 12.2px*3*2);
            height: calc(360px*2 - 12.2px*3*2);
            border-radius: calc(360px - 12.2px*3) / 50%;
        }

        .box5 {
            width: calc(1719.2px/2 + 360px*2 - 12.2px*4*2);
            height: calc(360px*2 - 12.2px*4*2);
            border-radius: calc(360px - 12.2px*4) / 50%;
        }

        .box6 {
            width: calc(1719.2px/2 + 360px*2 - 12.2px*5*2);
            height: calc(360px*2 - 12.2px*5*2);
            border-radius: calc(360px - 12.2px*5) / 50%;
        }

        .box7 {
            width: calc(1719.2px/2 + 360px*2 - 12.2px*6*2);
            height: calc(360px*2 - 12.2px*6*2);
            border-radius: calc(360px - 12.2px*6) / 50%;
        }

        .box8 {
            background-color: #00923F;
            width: calc(1719.2px/2 + 360px*2 - 12.2px*7*2);
            height: calc(360px*2 - 12.2px*7*2);
            border-radius: calc(360px - 12.2px*7) / 50%;
        }

        /* ==========绿茵足球场========== */
        .boxRect {
            width: calc(1719.2px/2);
            height: calc(360px*2 - 12.2px*7*2 - 10px);
            margin: 5px auto;
        }

        .boxRectLeft1 {
            width: 100px;
            height: 200px;
            margin-top: calc(360px*2/2 - 12.2px*7*2/2 - 10px/2 - 200px/2);
        }

        .boxRectLeft2 {
            width: 50px;
            height: 100px;
            margin-top: calc(200px/2 - 100px/2);
        }

        .boxCircLeft {
            width: 50px;
            height: 100px;
            margin-top: calc(360px*2/2 - 12.2px*7*2/2 - 10px/2 - 100px/2);
            border-radius: 0 100px 100px 0;
        }

        .boxCirc {
            float: left;
            width: 100px;
            height: 100px;
            margin: calc(360px*2/2 - 12.2px*7*2/2 - 10px/2 - 100px/2) auto;
            margin-left: calc(1719.2px/2/2 - 100px - 50px - 100px/2);
            border-radius: 50%;
        }

        .boxCircRight {
            width: 50px;
            height: 100px;
            margin-top: calc(360px*2/2 - 12.2px*7*2/2 - 10px/2 - 100px/2);
            border-radius: 100px 0 0 100px;
        }

        .boxRectRight1 {
            width: 100px;
            height: 200px;
            margin-top: calc(360px*2/2 - 12.2px*7*2/2 - 10px/2 - 200px/2);
        }

        .boxRectRight2 {
            width: 50px;
            height: 100px;
            margin-top: calc(200px/2 - 100px/2);
        }

        .boxColLine {
            width: 0;
            height: 100%;
            margin-left: calc(1719.2px/2/2);
            /* 边框样式 */
            border: 0.25px white dashed;
        }

        /* ==========足球========== */
        .football {
            float: right;
            width: 10px;
            height: 10px;
            background-color: black;
            margin: 100px;
            border-radius: 50%;
        }
    </style>
</head>

<body>

    <div class="box1">
        <div class="box2">
            <div class="box3">
                <div class="box4">
                    <div class="box5">
                        <div class="box6">
                            <div class="box7">
                                <div class="box8">
                                    <div class="boxRect">
                                        <div class="boxRectLeft1">
                                            <div class="boxRectLeft2"></div>
                                        </div>
                                        <div class="boxCircLeft"></div>
                                        <div class="boxCirc"></div>
                                        <div class="boxRectRight1">
                                            <div class="boxRectRight2"></div>
                                        </div>
                                        <div class="boxCircRight"></div>
                                        <!-- 足球 -->
                                        <div class="football"></div>
                                        <div class="boxColLine"></div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

</html>

前端小案例:田径场_其他_12