【CSS3】03- 高级选择器 + 盒子模型

发布于:2025-03-30 ⋅ 阅读:(33) ⋅ 点赞:(0)

本文介绍 高级选择器和盒子模型。

目录

1. 结构伪类选择器

2. 伪元素选择器

3. 盒子模型

3.1 组成

3.2 边框线

3.3 内边距

3.4 尺寸计算

3.5 外边距

版心居中

3.6 清除默认样式

3.7 元素溢出

3.8 外边距问题

3.8.1 合并现象

3.8.2 塌陷问题

3.9 行内元素-内外边距问题

3.10 圆角属性

3.10.1 基本使用

3.10.2 常见应用

3.11 盒子阴影


1. 结构伪类选择器

根据元素的结构关系查找元素。

E为标签,代表一种选择器

E:first-child   查找第一个E元素

E:last-child   查找最后一个E元素

E:nth-child(N)   查找第N个E元素

如 li:first-child { CSS属性 }


:nth-child(公式)

偶数标签   2n

奇数标签   2n+1; 2n-1

5的倍数的标签   5n

第5个以后的标签   n+5

第5个以前的标签   -n+5


2. 伪元素选择器

创建虚拟元素,摆放装饰性内容

E::before   在E元素最前面添加一个伪元素

E::after   在E元素最后面添加一个伪元素

注意:

必须设置content:" "属性,用来设置伪元素的内容,没有内容引号留空即可

伪元素默认行内显示

权重和标签选择器相同

    <style>
        div {
            width: 300px;
            height: 300px;
            background-color: pink;
        }
        /* 在“爱”前面加上“老鼠” */
        div::before {
            content: "老鼠";

            width: 100px;
            height: 100px;
            /* 上面的宽高无效 这是行内性质 */
            background-color: brown;
            /* 转为块级 */
            display: block;
        }
        /* 在“爱”后面加上“大米” */
        div::after {
            content: "大米";

            width: 200px;
            height: 200px;
            background-color: orange;
            /* 转为行内块元素 */
            display: inline-block;
        }
    </style>
</head>
<body>
    <!-- 标签内容:老鼠爱大米 -->
    <div>爱</div>
</body>


3. 盒子模型

布局网页,摆放盒子和内容

3.1 组成

重要组成

内容区域 - width & height

内边距 - padding (出现在内容和盒子边缘之间)

边框线 - border

外边距 - margin (出现在盒子外面)

打开控制台,点击div标签看到下面:


3.2 边框线

border (bd)

复合属性

属性值:边框线粗细 线条样式 颜色 (不区分顺序)

常用线条样式

solid  实线

dashed  虚线

dotted  点线

同时也可以设置单方向的边框线:

属性名:border-方位名词 (bd+方位名词首字母)

属性值同上


3.3 内边距

盒子的内容和盒子边缘的距离

属性名:padding / padding-方位名词

属性值:数字+单位px

多值写法:

padding 多值写法 最多连接4个值

四个值

三个值

两个值


3.4 尺寸计算

默认情况:

盒子尺寸 = 内容尺寸 + border尺寸 + 内边距尺寸

前面内边距的操作中可以发现盒子会被撑大

其实 边框线border / 内边距padding 都会使得盒子变大

解决:

1. 手动做减法,减掉 border / padding 的尺寸

2. 加上内减模式:box-sizing:border-box

推荐使用第二种

    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: pink;

            padding: 20px;

            /* 内减模式 */
            box-sizing: border-box;
        }
    </style>

3.5 外边距

拉开两个盒子之间的距离

margin

与 内边距padding 属性值写法、含义相同

外边距不会撑大盒子

        div {
            width: 1000px;
            height: 200px;
            background-color: pink;

            /* 四个方向外边距都是50px */
            /* margin: 50px; */

            /* 单方向设置 */
            /* margin-top: 50px;
            margin-left: 100px; */

            /* 多值:上右下左 */
            /* margin: 10px 20px 30px 40px; */
        }

版心居中

左右外边距为 auto

前提:盒子必须要有宽度

现在设置上下为0 左右版心居中


3.6 清除默认样式

比如:默认的内外边距

我们使用京东的做法

如图:去掉列表的项目符号,用 list-style:none;

很多时候我们会在 * 里直接使用内减模式

后面就不用担心盒子会被撑大

* {
       margin: 0;
       padding: 0;
       box-sizing: border-box;
}

3.7 元素溢出

控制溢出元素的内容的显示方式

overflow

属性值:

hidden   溢出隐藏

scroll   溢出滚动(无论是否溢出 都显示滚动条位置

auto    溢出滚动(溢出才会显示滚动条位置

        水平和垂直都有滚动条

只有垂直有滚动条


3.8 外边距问题

3.8.1 合并现象

场景:垂直排列的兄弟元素,上下 margin 合并

现象:取两个 margin 中的较大值生效


3.8.2 塌陷问题

场景:父子级的标签,子级添加 上外边距,会产生塌陷问题

现象:导致父级一起向下移动

解决方法:

1. 子级取消外边距margin 父级设置内边距padding(推荐)

2. 父级设置 overflow:hidden

3. 父级设置 上边框线border-top


3.9 行内元素-内外边距问题

场景:行内元素添加 margin和padding,无法改变元素的垂直位置

解决:给行内元素添加 行高 line-height 可以改变垂直位置


3.10 圆角属性

设置元素的外边框为圆角

border-radius

属性值(圆角半径):数字+px / 百分比

3.10.1 基本使用

四个值

三个值

两个值


3.10.2 常见应用

① 正圆形状

常见用于头像

给正方形盒子设置圆角属性值为宽高的一半 / 50%

② 胶囊形状

给长方形盒子设置圆角属性值为 盒子高度的一半

    <style>
        img {
            width: 200px;
            height: 200px;

            /* 宽高的一半,也可以写50%(最大是50%,超过50%没有效果) */
            border-radius: 100px;
        }

        div {
            width: 200px;
            height: 80px;
            background-color: orange;

            /* 高度的一半 */
            border-radius: 40px;
        }
    </style>


<body>
    <!-- 1.正圆形 -->
    <img src="./5.webp" alt="">

    <!-- 2.胶囊形 -->
    <div></div>
</body>


3.11 盒子阴影

给元素设置阴影效果

复合属性

属性名:box-shadow

属性值:X轴偏移量 Y轴偏移量 模煳半径 扩散半径 颜色 内外阴影

注意:

1. X轴和Y轴的偏移量必须书写

2. 默认是外阴影,内阴影添加 inset


本文介绍 高级选择器和盒子模型。


网站公告

今日签到

点亮在社区的每一天
去签到