CSS盒子|青训营笔记

111 阅读2分钟

盒模型

所有元素表示为盒子模型,CSS通过盒子模型做layout.

image.png

控制盒子类型:display: block, inline, inline-block, flex…

控制盒子大小&计算方式: width, height…

                                     box- sizing: content-box, border-box…

控制盒中内容流: overflow: auto, scroll, Hidden…

控制定位: position: static, relative, absolute, fixed, sticky

是否可见: visibility: visible. hidden…

展现形式

1.图像基础与三角形

三角形:image.png

        .triangle {

            width: 0;

            height: 0;

            border-left: 50px solid transparent;

            border-right: 50px solid transparent;

            border-bottom: 50px solid red;

        }

对比右图:

image.png

        .triangle {

            width: 30px;

            height: 0px;

            border-left: 50px solid transparent;

            border-right: 50px solid transparent;

            border-bottom: 50px solid red;

        }

再对比右图:

image.png

        .triangle {

            width: 30px;

            height: 30px;

            border-left: 50px solid transparent;

            border-right: 50px solid transparent;

            border-bottom: 50px solid red;

            margin: 0px;

        }

我们发现,width, height定义了文字content的区域大小。而定义border的数值是border外边缘到border内边缘(若padding默认为零,也是content边缘)的距离。

再观察下图,代码增加了padding: 10cm:

image.png

        .triangle {

            width: 30px;

            height: 30px;

            border-left: 50px solid transparent;

            border-right: 50px solid transparent;

            border-bottom: 50px solid red;

            margin: 0px;

            padding: 10cm;

        }

Padding定义了content边缘到border内边缘的距离,增加padding数值后,左右上下都被拉宽,图像看上去更像梯形。

2. 渐变边框

image.png

.awesome {

            width: 130px;

            height: 130px;

            border: 8px solid transparent;

            border-radius: 12px;

            background-clip: padding-box, border-box;

            background-origin: padding-box, border-box;

            background-image:

                linear-gradient(to right, #fff, #fff),

                linear-gradient(135deg, #0a080f, #de1717)

        }

其中,border的transparent让边框的纯色透明,目的是让后面的背景渐变色可以展示出来。

Border-radius是边框的圆润程度,如果调整为112px,效果如下:

image.png

Background-clip决定了上色区域,在此为对边框上色。

而background-origin: padding-box, border-box;决定了颜色的过渡润滑度。删除之后的效果。

image.png

最后部分,以定义一个imagine的形式,作为box背景。因为之前边框的透明度为0,所以背景得以在边框显示。

盒模型-负外边距

设置左边或顶部的负外边距,元素就会相应地向左或向上移动,导致元素与它前面的元素重叠:

image.png

如果设置右边或者底部的负外边距,并不会移动元素,而是将它后面的元素拉过来;