LOVEJOAN

文章 分类 评论
76 9 1453

站点介绍

人生是一场孤独的旅行,没有终点。。。

CSS基础四-特殊选择器与盒子模型

chuck 2023-07-10 282 18条评论 网页设计 html

首页 / 正文

CSS基础-四

结构伪类选择器

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

选择器说明
E:first-child查找第一个E元素
E:last-child查找最后一个E元素
E:nth-chid查找第N个E元素,第一个元素N值为1
        <style>
        li:first-child {
            color: red;
        }
        li:last-child {
            color: green;
        }
        li:nth-child(4) {
            color: orange;
        }
    </style>

    <ul>
        <li>li 1</li>
        <li>li 2</li>
        <li>li 3</li>
        <li>li 4</li>
        <li>li 5</li>
        <li>li 6</li>
        <li>li 7</li>
        <li>li 8</li>
    </ul>

nth-child(公式)

查找多个有规律的元素。

功能公式
偶数标签2n
奇数2n+1\2n-1
倍数5n
第n个以后的标签n+5
第n个以前的标签-n+5
        /* 默认n为0 */
        li:nth-child(2n+1) {
            background-color:red;
        }

伪元素选择器

创建虚拟元素,用来放置装饰性内容。

选择器说明
E::before在E元素里面最前面添加一个伪元素
E::after在E元素里面最后面添加一个伪元素

tips:

  • 必须设置content:""属性,用来设置伪元素的内容,如果没有内容留空
  • 伪元素默认行内显示模式
  • 权重和标签选择器相同
    <style>
        li:first-child::after {
            content: " >";
            font-weight: 700;
        }
        li:first-child::before {
            content: "< ";
            font-weight: 700;
        }
    </style>

盒子模型

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

组成:

  • 内容区域-width/height
  • 内边距-padding,内容与盒子边缘之间
  • 边框线-border
  • 外边距-margin,盒子外面
        div {
            height: 400px;
            width: 400px;
            background-color: red;
            padding: 10px;
            border: 1px solid black;
            margin: 10px;
        }

边框线:boder(bd)

属性名:boder

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

边框线粗细,数字+px

线条样式:

属性值线条样式
solid实线
dashed虚线
dotted点线

颜色:与color属性值一致

        div {
            height: 400px;
            width: 400px;
            background-color: #FFE4E1;
            padding: 10px;
            margin: 10px;
            border: 1px dashed #000;
        }

可以设置单个方向的边框线。

border-方位名词

            border-top: 1px solid #000;
            border-bottom: 1px dashed #000;
            border-right: 2px solid yellow;
            border-left: 3px dotted red;

内边距:padding(pd)/padding-方位名词

表示内容距离外层标签的距离。

            padding: 10px;
            padding-top: 10px;
            padding-left: 20px;
            padding-right: 30px;
            padding-bottom: 15px;

多值写法:

取值个数示例含义
一个值padding:10px四个方向内边距都为10px
两个值padding:10px 80px上下10px,左右80px
三个值padding:10px 40px 80px上10px,左右40px 下80px
四个值padding:10px 20px 40px 80px上右下左的顺序

盒子尺寸计算:

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

结论:给盒子加boder/padding会撑大盒子尺寸

解决:

手动减少/boder/padding尺寸

设置盒子的属性:box-sizing:border-box

        div {
            height: 200px;
            width: 200px;
            background-color: #FFE4E1;
            /* 多值写法 */
            padding: 20px;
            /*内减模式,加padding和boder不会撑大尺寸,自动计算减少*/
            box-sizing: border-box;

        }

外边距:margin

拉开两个盒子的距离,用法与padding一致。

添加margin不会撑大盒子的尺寸。

            margin: 10px;
            margin-top: 10px;
            margin-bottom: 10px;
            margin-left: 10px;
            margin-right: 10px;

版心居中:

设置margin 0 auto;

必须设置盒子的宽.

    <style>
        div {
            height: 200px;
            width: 1000px;
            background-color: rgb(212, 106, 106);
            margin: 0 auto;
        }
    </style>

清除默认样式

清除标签的默认样式,内外边距等。

{
    margin:0;
    padding:0;
}

h1,h2,h3,br,input,button,dd,dl {
    margin:0;
    padding:0;
}

去除列表的项目符号:

属性:list-style

属性值:none

        li {
            list-style: none;
        }

元素溢出

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

属性名:overflow

属性值:

属性值效果
hidden溢出隐藏
scroll溢出滚动(无论是否溢出都显示滚动条位置)
auto溢出滚动(溢出才显示滚动条位置)

外边距合并与塌陷

合并现象:

垂直排列的兄弟元素,上下margin会合并

取较大值生效。

塌陷现象:

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

导致父级一起向下移动

解决:

  • 取消子级margin,父级设置padding(建议)
  • 父级设置overflow:hidden
  • 父级设置boder-top

行内元素-内外边距问题

行内元素添加margin,padding,无法改变元素垂直位置

解决:给行内元素添加line-height属性。

圆角

设置元素的外边框为圆角

属性名:border-radius

属性值:数字+px/百分比

        div {
            height: 100px;
            width: 100px;
            background-color:yellow ;
            border-radius: 20px;
            margin: 50px auto;
        }

border-radius 多值写法:

从左上角顺时针赋值

没有取值的角与对角相等

border-radius: 10px 20px 40px 80px;
border-radius: 10px 40px 80px;
border-radius: 10px 80px;

示例:

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

胶囊形状:给长方形设置圆角属性为盒子高度的一半。

        .div1 {
            /*正圆*/
            height: 100px;
            width: 100px;
            background-color:#FFA500 ;
            /* border-radius: 20px; */
            border-radius: 50px;
            margin: 50px auto;
        }
        .div2 {
            /*胶囊*/
            width: 200px;
            height: 80px;
            background-color:#CDC5BF;
            margin: 50px auto;
            border-radius: 40px;;
        }

阴影

给元素设置阴影效果

属性名:box-shadow

属性值:x轴偏移量 y轴偏移量 模糊半径 扩散半径 颜色 内外阴影

x和y必须书写

默认是外阴影,内阴影需要添加inset

box-shadow: 0px 3px 1px 3px #EEE5DE;

综合案例一:

<!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;
            box-sizing: border-box;
        }
        body {
            background-color: #f1f1f1;
        }
        .douyin {
            width: 270px;
            height: 253px;
            background-color: #fff;
            margin:  50px auto;
            text-align: center;
            padding-top: 40px;
            border-radius: 5px;
            box-shadow: 1px 2px 1px 2px #DCDCDC;
        }
        h4 {
            margin-top: 20px;
            margin-bottom: 12px;
            font-weight: 400;
            font-size: 18px;
        }
        p {
            font-size: 12px;
            color: #555;
        }
    </style>
</head>
<body>
    <div class="douyin">
        <img src="./liveSDK.svg" alt="douyin" title="douyin">
        <h4>抖音直播SDK</h4>
        <p>包含抖音直播看播功能</p>
    </div>
</body>
</html>

案例二:

背景图片使用 background-image

内容使用 padding-left

<!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;
            box-sizing: border-box;
        }
        li {
            list-style: none;
        }
        a {
            text-decoration: none;
        }
        .news {
            margin: 100px auto;
            width: 360px;
            height: 200px;
        }
        .hd {
            width: 360px;
            height: 34px;
            background-color: #eee;
            border: 1px solid #dbdee1;
            border-left: 0;
        }
        .hd a {
            margin-top: -1px;
            display: block;
            width: 48px;
            height: 34px;
            border-top: 2px solid orange;
            border-right: 1px solid #dbdee1;
            background-color: #fff;
            text-align: center;
            line-height: 32px;
            font-size: 14px;
        }
        .news .bd {
            padding: 5px;
        }
        .news .bd li {
            background-image: url(./square.png);
            background-repeat: no-repeat;
            background-position: 0 center;
            padding-left: 15px;
        }
        .news .bd li a {
            background: url(./img.gif) no-repeat 0 center;
            padding-left: 20px;
            font-size: 12px;
            color: #666;
            line-height: 24px;
        }
        .news .bd li a:hover {
            color: #ff8400;
        }
    </style>
</head>
<body>
    <div class="news" >
        <div class="hd">
            <a href="#">新闻</a>
        </div>
        <div class="bd">
            <ul>
                <li><a href="#">功勋不朽</a></li>
                <li><a href="#">情侣遇洪水被困 男生要求先救女友</a></li>
                <li><a href="#">王楚钦世界排名第一</a></li>
                <li><a href="#">东京大楼爆炸瞬间 有人高喊快逃</a></li>
                <li><a href="#">媒体:部分地区中小学学位预警</a></li>
                <li><a href="#">iPhone15及Plus新增青绿色</a></li>
            </ul>
        </div>
    </div>
</body>
</html>

评论(18)

  1. 1 游客 2025-03-27 23:04 回复

    555

  2. 1 游客 2025-03-27 23:03 回复

    555

  3. 1 游客 2025-03-27 23:02 回复

    555

  4. 1 游客 2025-03-27 23:00 回复

    555

  5. 1 游客 2025-03-27 22:59 回复

    555

  6. 1 游客 2025-03-27 22:59 回复

    555

  7. 1 游客 2025-03-27 22:59 回复

    555

  8. 1 游客 2025-03-27 22:58 回复

    555

  9. 1 游客 2025-03-27 22:57 回复

    555

  10. 1 游客 2025-03-27 22:46 回复

    5553PB5ZMkh')) OR 569=(SELECT 569 FROM PG_SLEEP(15))--

  11. 1 游客 2025-03-27 22:45 回复

    5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z

  12. 1 游客 2025-03-27 22:44 回复

    555

  13. 1 游客 2025-03-27 22:42 回复

    555

  14. 1 游客 2025-03-27 22:41 回复

    555

  15. 1 游客 2025-03-27 22:37 回复

    555

  16. 1 游客 2025-03-27 22:37 回复

    555

  17. 1 游客 2025-03-27 22:36 回复

    555

  18. want to buy priligy in pakistan 游客 2024-09-05 14:44 回复

    It's actually a nice and useful piece of info.
    I'm happy that you simply shared this useful information with
    us. Please stay us informed like this. Thank you for sharing.

热门文章

最新评论

  • 1

    555fulIdEqZ' OR 160=(SELECT 160 FROM PG_SLEEP(15))--

  • 1

    555-1)) OR 58=(SELECT 58 FROM PG_SLEEP(15))--

  • 1

    555-1) OR 13=(SELECT 13 FROM PG_SLEEP(15))--

  • 1

    555-1 OR 475=(SELECT 475 FROM PG_SLEEP(15))--

  • 1

    555

  • 1

    555

  • 1

    5554FobGRsu') OR 696=(SELECT 696 FROM PG_SLEEP(15))--

  • 1

    555C9F0upP1' OR 504=(SELECT 504 FROM PG_SLEEP(15))--

  • 1

    555

  • 1-1; waitfor delay '0:0:15' --

    555

日历

2025年05月

    123
45678910
11121314151617
18192021222324
25262728293031

文章目录