《前端技术基础》第02章 CSS基础【合集】

简介: 层叠样式表(Cascading Style Sheets,简称CSS)是一种用于描述网页视觉表现的语言。该语言与HTML协同工作,其中HTML负责构建网页的结构,而CSS则负责定义网页的外观和格式。CSS通过一系列规则来实现样式的应用,这些规则由选择器(Selectors)和声明块(Declaration Blocks)构成。选择器的作用是明确指出哪些HTML元素将受到特定样式规则的影响,而声明块则包含了具体的样式声明,这些声明定义了元素的视觉属性和相应的值。

目录😋

第一节 在HTML中使用CSS

1.1内联样式(Inline Styles)

1.2内部样式表(Internal Stylesheet)

1.3外部样式表(External Stylesheet)

1.4导入样式表(Importing Stylesheets)

第二节 选择器

2.1标签选择器

2.2 类选择器

2.3 id选择器

2.4 属性选择器

2.5 选择器的优先级

第三节 复杂选择器

3.1 组合选择器

3.2 子元素伪类选择器

3.3 伪元素选择器

3.4 UI 伪类选择器


层叠样式表(Cascading Style Sheets,简称CSS)是一种用于描述网页视觉表现的语言。该语言与HTML协同工作,其中HTML负责构建网页的结构,而CSS则负责定义网页的外观和格式。CSS通过一系列规则来实现样式的应用,这些规则由选择器(Selectors)和声明块(Declaration Blocks)构成。选择器的作用是明确指出哪些HTML元素将受到特定样式规则的影响,而声明块则包含了具体的样式声明,这些声明定义了元素的视觉属性和相应的值。

第一节 在HTML中使用CSS

在HTML文档中引入CSS(层叠样式表)有几种不同的方法,每种方法都有其特定的使用场景和优势。以下是几种常见的方法:

1.1内联样式(Inline Styles)

内联样式是直接在HTML元素中使用style属性来添加CSS规则。这种方法适用于单个元素的样式定制,但不推荐用于大规模的样式定义,因为它缺乏复用性且难以维护。

示例1-1:
<p style="color: blue; font-size: 14px;">这是一个内联样式的段落。</p>

image.gif

运行结果:

image.gif 编辑

1.2内部样式表(Internal Stylesheet)

内部样式表是将CSS规则放在HTML文档的<head>部分内的<style>标签中。这种方法适用于单个页面的样式定义,可以对页面上的多个元素进行样式控制。

示例1-2:
<!DOCTYPE html>
<html>
<head>
    <style>
        body {
            background-color: #f0f0f0;
        }
        h1 {
            color: #333;
            text-align: center;
        }
    </style>
</head>
<body>
    <h1>这是一个内部样式表的标题</h1>
</body>
</html>

image.gif

运行结果:

image.gif

1.3外部样式表(External Stylesheet)

外部样式表是将CSS规则保存在一个单独的.css文件中,然后通过HTML文档的<head>部分中的<link>标签引入。这是最推荐的方法,因为它允许在多个页面间共享样式,有助于保持代码的组织和可维护性。

示例1-3:
/* 在index.html文件中 */
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8"/>
    <title>1-3 外部样式</title>
    <link rel="stylesheet" type="text/css" href="./styles.css">
</head>
<body>
<h1>这是一个外部样式表的标题</h1>
</body>
</html>

image.gif

/* 在styles.css文件中 */
body {
    background-color: #f0f0f0;
}
h1 {
    color: #333;
    text-align: center;
}

image.gif

运行结果:

image.gif

1.4导入样式表(Importing Stylesheets)

除了上述三种方法之外,还可以使用@import规则在CSS文件内部导入其他CSS文件。这种方法通常用于将多个样式表合并为一个,或者在样式表中导入第三方样式库。

示例1-4:
/* 在styles.css文件中 */
@import url("reset.css");
@import url("bootstrap.css");
body {
    background-color: #f0f0f0;
}
h1 {
    color: #333;
    text-align: center;
}

image.gif

请注意,虽然@import可以在CSS文件中使用,但不推荐在HTML文档的<style>标签中使用@import,因为它会导致页面加载时出现额外的延迟。

第二节 选择器

选择器是CSS语言中至关重要的组成部分,它决定了样式规则将应用于哪些元素。选择器的使用是网页设计和开发中不可或缺的一环,它允许开发者精确地控制页面上各个元素的外观和布局。通过选择器,我们可以指定哪些HTML元素应该被特定的样式所影响,从而实现丰富的视觉效果和用户交互体验。

CSS中存在多种类型的选择器,每种选择器都有其特定的用途和优势。包括:标签选择器、类选择器、id选择器、属性选择器、伪类选择器等。通过这些选择器,CSS能够以一种非常灵活的方式控制网页的样式,从而实现复杂的布局和视觉效果。

2.1标签选择器

当需要对HTML文件中的某一类标签进行统一样式的定义时,应该选择实用标签选择器,其语法格式为:

tagName{
    property: value;
}

image.gif

示例2-1:在以下代码中,我们可以尝试将背景颜色修改为红色,将文字颜色设置为黄色。
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <title>2-1 标签选择器</title>
        <style>
            body {
                background-color: red;
            }
            h2 {
                color: yellow;
            }
        </style>
    </head>
    <body>
        <h2>我爱我的祖国</h2>
    </body>
</html>

image.gif

运行结果:

image.gif

2.2 类选择器

类选择器根据标签中添加的class属性来选择元素,使用点号.后跟类名来选择具有特定类属性的元素。一个类可以被应用到多个元素上,这使得类选择器非常适合于复用样式。类选择器的基本语法如下:

.className {
    property: value;
}

image.gif

这里,.className 是选择器,它会匹配所有具有 class="className" 属性的HTML元素。

示例2-2:在以下代码中,我们可以尝试为家庭成员中的女士添加一个 class="female"属性,将文字颜色设置为红色。
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <title>2-2 类选择器</title>
        <style>
            .female {
                color: red;
            }
        </style>
    </head>
    <body>
        我爱我家,我们的家庭成员有:
        <ul>
            <li>爸爸</li>
            <li class="female">妈妈</li>
            <li></li>
            <li class="female">妹妹</li>
        </ul>
    </body>
</html>

image.gif

运行结果:

image.gif

2.3 id选择器

id 选择器根据标签中添加的 id 属性来选择元素。使用方法和类选择器相似,但是在定义 id 选择器时,需要用 #号和 id 名来定义选择器。但是id选择器并不像类选择器一样适用于复用样式,因为规范要求中,在同一个HTML文档中,id是必须是唯一的。id选择器的基本语法如下:

#idName {
    property: value;
}

image.gif

示例2-3:在以下代码中,我们可以尝试为“我”增加一个 id="me"的属性,并将其文字颜色修改为蓝色。
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <title>2-3 id选择器</title>
        <style>
            .female {
                color: red;
            }
            #me {
                color: blue;
            }
        </style>
    </head>
    <body>
        我爱我家,我们的家庭成员有:
        <ul>
            <li>爸爸</li>
            <li class="female">妈妈</li>
            <li id="me"></li>
            <li class="female">妹妹</li>
        </ul>
    </body>
</html>

image.gif

运行结果:

image.gif

2.4 属性选择器

CSS 属性选择器是一种特殊的选择器,它允许你根据 HTML 元素的属性及其值来选择元素。属性选择器非常强大,可以让你对页面上的元素进行更精确的控制。属性选择器用中括号[ ]结合特殊的匹配规则来选择元素,以下是 CSS 中一些常见的属性选择器:

选择器

描述

[attr]

选择具有 attr 属性的元素

[attr=value]

选择具有 attr 属性、且其值value 的元素

[attr~=value]

选择具有 attr 属性、且其值是以空白分隔的单词列表、其中之一为 value 的元素

[attr|=value]

选择具有 attr 属性、且其值value 或以 value- 开头的元素

[attr^=value]

选择具有 attr 属性、且其值value 开头的元素

[attr$=value]

选择具有 attr 属性、且其值value 结尾的元素

[attr*=value]

选择具有 attr 属性、且其值包含 value 的元素

示例2-4:在以下代码中,我们可以使用精确匹配规则来为图片添加背景颜色和边框。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>2-4 属性选择器之一</title>
    <style>
        [src] {
            height: 200px;
        }
        /*不生效,属性当且唯一等于时生效*/
        [title=male] {
            background-color: #f0e62f;
        }
        /*生效*/
        [alt=female] {
            background-color: #f0e62f;
        }
        /*生效,属性中包含时生效*/
        [title~=t1] {
            border: 2px solid blue;
        }
    </style>
</head>
<body>
<img src="images/male.png" title="t1 male" alt="male"/>
<img src="images/female.png" title="t1 female" alt="female"/>
</body>
</html>

image.gif

运行结果:

image.gif

示例2-5:在以下代码中,我们可以使用模糊匹配规则来为图片添加背景颜色和边框。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>2-5 属性选择器之二</title>
    <style>
        [src^=imag] {
            height: 200px;
        }
        [src$=png] {
            background-color: yellow;
        }
        [title*=my-test] {
            border: 2px solid blue;
        }
        [title|="my"] {
            transform: rotate(10deg);
        }
    </style>
</head>
<body>
<img src="images/male.png" title="male my-test" alt="male"/>
<img src="images/female.png" title="my-test female" alt="female"/>
</body>
</html>

image.gif

运行结果:

image.gif

需要特别注意的是[attr|=value]选择器,它所匹配的必须是完整的属性值,或者匹配使用横线-命名的属性值的前缀部分。示例2-5中第一幅图片中的my-test属性放在了空格之后,也没有被选择器正确选取。

2.5 选择器的优先级

CSS选择器的优先级(也称为CSS特异性)决定了当多个规则应用于同一个元素时,哪个规则将被采用。优先级是根据选择器的类型和数量来计算的,遵循以下原则:

  1. 内联样式:直接在HTML元素上使用style属性定义的样式具有最高的优先级,因为它们是直接应用于元素的。
  2. ID选择器:使用#id选择器指定的样式优先级高于类选择器、属性选择器和伪类选择器。
  3. 类选择器、属性选择器和伪类选择器:这些选择器的优先级相同,高于元素选择器和伪元素选择器。
  4. 标签选择器和伪元素选择器:使用标签名(如div, p等)或伪元素(如::before, ::after等)的选择器具有最低的优先级。
  5. 通用选择器(*):不具有任何优先级。

当两个选择器具有相同的优先级时,通常后定义的规则会覆盖先前的规则。记住,特异性只在选择器针对同一个元素时才起作用。如果选择器针对不同的元素,那么它们的特异性是独立计算的,不会相互影响。

示例2-6: 通过下面的代码,让我们来测试一下到底哪个选择器生效了。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8"/>
    <title>2-6 选择器的优先级(特异性)</title>
    <style>
        #idSelector {
            color: blue; /* 蓝色 */
        }
        .classSelector {
            color: green; /* 绿色 */
        }
        h1 {
            color: red; /* 红色 */
        }
    </style>
</head>
<body>
<h2 id="idSelector" class="classSelector">选择器的优先级(特异性)</h2>
</body>
</html>

image.gif

运行结果:

image.gif

思考:这种既定的优先级规则是否具备可变性?

答案是肯定的。在样式声明中引入 !important 规则,将提升该样式声明的优先级。

示例2-7:注意下面代码中的 !important书写规范。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8"/>
    <title>2-7 !important</title>
    <style>
        #idSelector {
            color: blue; /* 蓝色 */
        }
        .classSelector {
            color: green; /* 绿色 */
        }
        h2 {
            color: red !important; /* 红色 */
        }
    </style>
</head>
<body>
<h2 id="idSelector" class="classSelector">选择器的优先级(特异性)</h2>
</body>
</html>

image.gif

运行结果:

image.gif

第三节 复杂选择器

3.1 组合选择器

在CSS中,组合选择器的运用使我们得以依据元素间特定的关系来选取相应的元素。此类选择器可细分为若干类别,涵盖了子元素选择器、相邻兄弟选择器、通用兄弟选择器以及后代选择器等多种类型。

1. 子元素选择器

子元素选择器通过使用大于号(>)连接两个选择器,从而实现对第一个选择器所指定元素的直接子元素的选取。例如:

div > p {
  color: blue;
}

image.gif

本段CSS代码将针对所有<div>元素的直接子<p>元素进行样式定义,具体操作为将这些子元素的文本颜色属性设置为蓝色。

2. 后代选择器

后代选择器通过空格连接两个选择器,以选取第一个选择器所指定元素的所有后代元素,而不仅限于直接子元素。例如:

div p {
  color: blue;
}

image.gif

本段CSS代码将针对所有位于<div>元素内部的<p>元素,不论其为直接子元素抑或更深层次的后代元素,均进行文字颜色的调整,设定为蓝色。

3. 相邻兄弟选择器

相邻兄弟选择器通过使用加号(+)连接两个选择器,以选取紧随第一个指定元素之后的同级元素。例如:

div + p {
  color: blue;
}

image.gif

本段CSS代码将针对所有紧跟在<div>标签之后的<p>标签内的元素,对其文字颜色属性进行调整,具体操作为将文字颜色设置为蓝色。

4. 通用兄弟选择器

通用兄弟选择器采用波浪号(~)作为连接符,连接两个选择器。此选择器将选取第一个指定元素之后的所有同级元素。例如:

div ~ p {
  color: blue;
}

image.gif

该段CSS代码将针对所有位于<div>元素之后的<p>元素,不论其间存在多少其他元素,均会将其文本颜色调整为蓝色。

示例3-1: 通过下面的代码,来更深入的了解组合选择器的具体作用。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>2-8 组合选择器</title>
    <style>
        /* 子元素选择器 */
        .title > p {
            color: red;
        }
        /* 后代选择器 */
        .box p {
            color: blue;
        }
        /* 相邻兄弟选择器,注意两者顺序 */
        p + div {
            color: green;
        }
        /* 通用兄弟选择器 */
        .tips ~ p {
            background-color: #f0e62f;
        }
    </style>
</head>
<body>
<h1>2-8</h1>
<div class="title">
    <p>欢迎来到我们的208寝室</p>
    <div><p>这是我们寝室的成员:</p></div>
</div>
<div class="box">
    <div class="contain">
        <div class="tips">四个:</div>
        <p><span>张三</span></p>
        <p><span>李四</span></p>
        <p><span>王二</span></p>
        <p><span>麻子</span></p>
    </div>
</div>
<p></p>
</body>
</html>

image.gif

运行结果:

image.gif

除上述四种常见的选择器组合使用方法外,不同类型的选择器之间亦存在多种多样且丰富的组合用法,大家可以自行发掘。

3.2 子元素伪类选择器

在 CSS 中,子元素伪类选择器可精准针对元素特定状态下的子元素进行样式控制,其基于元素的特殊状态或相对位置关系发挥作用。

1. :first-child 伪类选择器

:first-child 用于选取指定元素的第一个子元素。例如:

ul li:first-child {
font-weight: bold;
}

image.gif

本段CSS代码将针对所有无序列表<ul>中的第一个列表项<li>内的元素,对其文字属性进行调整,具体操作为将这些子元素的文本字体加粗。

2. :last-child 伪类选择器

:last-child 用于选取指定元素的最后一个子元素。例如:

ol li:last-child {
color: green;
}

image.gif

本段CSS代码将针对所有有序列表<ol>中的最后一个列表项<li>内的元素,对其文字属性进行调整,具体操作为将文字颜色设置为绿色。

3. :nth-child (n) 伪类选择器

:nth-child (n) 灵活性强,其中 n 可为具体数字、表达式或关键词。

  • n 为具体数字,如 :nth-child (3),选取指定元素的第三个子元素。例如:
div p:nth-child (3) {
background-color: yellow;
}

image.gif

本段CSS代码将针对所有元素<div> 中的第三个直接子元素 <p> ,对其背景属性进行调整,具体操作为将背景颜色设置为黄色。

  • n 为表达式,如 :nth-child (2n) 表示选取偶数位置的子元素,:nth-child (2n + 1) 则选取奇数位置的子元素。例如:
table tr:nth-child (2n) {
background-color: lightgray;
}

image.gif

本段CSS代码将针对所有表格<table> 中的偶数行 <tr> ,对其背景属性进行调整,具体操作为将背景颜色设置为浅灰色。

  • n 为关键词,如 :nth-child (even) 等同于 :nth-child (2n):nth-child (odd) 等同于:nth-child (2n + 1)。例如:
table tr:nth-child (odd) {
background-color: pink;
}

image.gif

本段CSS代码将针对所有表格<table> 中的奇数行 <tr> ,对其背景属性进行调整,具体操作为将背景颜色设置为粉色。

4. :only-child 伪类选择器

:only-child 用于当某个元素是其父元素唯一子元素时,对其应用样式。例如:

section > p:only-child {
text-align: center;
}

image.gif

本段CSS代码将针对所有仅有一个直接子元素 <p><section> 元素,对其文本对齐属性进行调整,具体操作为将文本设置为居中对齐。

示例 3-2:通过下面的代码,深入了解子元素伪类选择器的具体作用。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>3-2 子元素伪类选择器</title>
    <style>
        /* :first-child 示例 */
        .list ul li:first-child {
            border-top: 2px solid red;
        }
        /* :last-child 示例 */
        .list ol li:last-child {
            border-bottom: 2px solid blue;
        }
        /* :nth-child(n) 示例 */
        .content div p:nth-child(2) {
            font-size: 18px;
        }
        .table table tr:nth-child(odd) {
            background-color: lavender;
        }
        /* :only-child 示例 */
        .single>p:only-child {
            padding: 10px;
        }
    </style>
</head>
<body>
    <div class="list">
        <ul>
            <li>第一项</li>
            <li>第二项</li>
            <li>第三项</li>
        </ul>
        <ol>
            <li></li>
            <li></li>
            <li></li>
        </ol>
    </div>
    <div class="content">
        <div>
            <p>普通段落 1</p>
            <p>普通段落 2</p>
            <p>普通段落 3</p>
        </div>
    </div>
    <div class="table">
        <table>
            <tr>
                <td>单元格 1</td>
                <td>单元格 2</td>
            </tr>
            <tr>
                <td>单元格 3</td>
                <td>单元格 4</td>
            </tr>
            <tr>
                <td>单元格 5</td>
                <td>单元格 6</td>
            </tr>
            <tr>
                <td>单元格 7</td>
                <td>单元格 8</td>
            </tr>
        </table>
    </div>
    <div class="single">
        <p>独自的段落</p>
    </div>
</body>
</html>

image.gif

运行结果:

image.gif

子元素伪类选择器极大丰富了 CSS 样式设计时对元素的精细控制,大家可根据实际项目需求巧妙运用,创造出更具个性与美感的页面效果。

3.3 伪元素选择器

在 CSS 领域中,伪元素选择器具备独特的功能,能够为页面样式设计创造出在 HTML 结构中不存在,但对视觉呈现具有重要意义的元素样式。

1. ::before 伪元素选择器

::before 可在被选元素的内容前插入生成的内容。例如:

p::before {
content: "前置提示:";
color: gray;
}

image.gif

本段CSS代码将针对所有<p>元素,在其内容开头插入灰色的 前置提示:字样。

2. ::after 伪元素选择器

与 ::before 相对应,::after 用于在被选元素的内容之后插入内容。比如:

span::after {
content: "补充信息: ";
font-style: italic;
}

image.gif

本段CSS代码将针对所有<span>元素,在其内容末尾插入斜体样式的补充信息:字样。

3. ::first-letter 伪元素选择器

::first-letter 专注于选取元素文本的首字母,并对其单独设置样式。例如:

h1::first-letter {
font-size: 2em;
color: red;
}

image.gif

本段CSS代码将针对所有 <h1>标题元素中的首字母,对其文字属性进行调整,具体操作为将首字母的字体大小变为两倍并显示为红色。

4. ::first-line 伪元素选择器

::first-line 能够选取元素文本的首行并施加样式。像这样:

article p::first-line {
background-color: lightyellow;
font-weight: bold;
}

image.gif

本段CSS代码将针对所有 <article>元素中的 <p> 段落,对其背景属性和文字属性进行调整,具体操作为将首行背景被设置为浅黄色,文本字体加粗。

示例 3-3:通过下面的代码,深入了解伪元素选择器的具体作用。
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>3-3 伪元素选择器</title>
    <style>
        /* ::before 示例 */
        .intro p::before {
            content: "重要提醒:";
            background-color: lightgreen;
            padding: 3px;
        }
        /* ::after 示例 */
        .detail span::after {
            content: " - 详情请看";
            color: blue;
        }
        /* ::first-letter 示例 */
        .title h2::first-letter {
            float: left;
            font-size: 30px;
            color: purple;
        }
        /* ::first-line 示例 */
        .text article p::first-line {
            text-decoration: underline;
            font-size: 16px;
        }
    </style>
</head>
<body>
    <div class="intro">
        <p>这是一段重要的文本内容。</p>
    </div>
    <div class="detail">
        <span>关键信息</span>
    </div>
    <div class="title">
        <h2>精彩标题</h2>
    </div>
    <div class="text">
        <article>
            <p>这里是一篇文章的开篇段落,包含诸多有用信息。</p>
            <p>后续段落继续阐述相关要点。</p>
        </article>
    </div>
</body>
</html>

image.gif

运行结果:

image.gif

伪元素选择器赋予了 CSS 强大的扩展能力,开发者可依据页面布局与设计需求,灵活运用它们,打造出更加精致、富有层次感的网页界面。

3.4 UI 伪类选择器

在 CSS 技术体系里,UI 伪类选择器能够精准捕捉用户与界面元素交互时的各种状态,并据此赋予元素相应的独特样式,以此提升网页的交互性与用户体验。

1. :hover 伪类选择器

:hover 的功能是在鼠标指针悬浮于元素上方时,触发特定样式的呈现。例如:

img:hover {
transform: scale (1.1);
box-shadow: 0 0 10px rgba (0, 0, 0, 0.3);
}

image.gif

当鼠标移至 <img> 图片元素之上,图片会以中心为基准放大 1.1 倍,同时出现一个半透明的黑色阴影。

2. :active 伪类选择器

:active 着重于体现元素被激活的那一瞬间状态,常见于鼠标点击的操作场景。比如:

div:active {
background-color: darkgray;
outline: 2px solid black;
}

image.gif

当鼠标点击 <div> 区域时,该区域的背景色会切换为深灰色,并且出现一个 2 像素宽的黑色边框。

3. :focus 伪类选择器

:focus 专注于处理获取焦点的元素样式变化,在表单操作流程里应用广泛。例如:

textarea:focus {
border-color: skyblue;
padding: 5px;
}

image.gif

当鼠标点击 <textarea> 文本域准备输入内容时,文本域边框颜色会变为天蓝色,同时内边距增加到 5 像素。

4. :disabled 伪类选择器

:disabled 用于界定那些处于不可用状态的元素外观样式。像下面这样:

select:disabled {
background-color: lightgray;
color: gray;
pointer-events: none;
}

image.gif

<select> 下拉菜单被禁用,它将呈现浅灰色背景,文本颜色也变为灰色,且鼠标指针移至其上时不再触发任何交互事件。

示例 3-4:通过下面的代码,深入了解 UI 伪类选择器的具体作用。
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>3-4 UI 伪类选择器</title>
    <style>
        /* :hover 示例 */
        .icon:hover {
            opacity: 0.8;
            rotate: 30deg;
        }
        /* :active 示例 */
        .button:active {
            background-color: #ccc;
            border-radius: 5px;
        }
        /* :focus 示例 */
        .input:focus {
            caret-color: green;
            font-size: 16px;
        }
        /* :disabled 示例 */
        .checkbox:disabled {
            opacity: 0.6;
            border: none;
        }
    </style>
</head>
<body>
    <div class="icon">
        <img src="icon.png" alt="图标">
    </div>
    <div class="button">
        <button>确认</button>
    </div>
    <div class="input">
        <input type="text" placeholder="请输入内容">
    </div>
    <div class="checkbox">
        <input type="checkbox" id="agreement" disabled>
        <label for="agreement">已阅读协议</label>
    </div>
</body>
</html>

image.gif

运行结果:

image.gif

UI 伪类选择器如同为网页注入了灵动的交互灵魂,大家熟练运用它们,就能依据各类交互情景,细腻雕琢元素样式,构建出极具吸引力、便捷易用的用户界面。


目录
相关文章
|
6天前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
128536 10
|
14天前
|
弹性计算 人工智能 安全
对话 | ECS如何构筑企业上云的第一道安全防线
随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
201925 14
对话 | ECS如何构筑企业上云的第一道安全防线
|
3天前
|
供应链 监控 安全
|
6天前
|
SQL 安全 前端开发
预编译为什么能防止SQL注入?
SQL注入是Web应用中常见的安全威胁,攻击者通过构造恶意输入执行未授权的SQL命令。预编译语句(Prepared Statements)是一种有效防御手段,它将SQL代码与数据分离,确保用户输入不会被解释为SQL代码的一部分。本文详细介绍了SQL注入的危害、预编译语句的工作机制,并结合实际案例和多语言代码示例,展示了如何使用预编译语句防止SQL注入,强调了其在提升安全性和性能方面的重要性。
|
9天前
|
搜索推荐 物联网 PyTorch
Qwen2.5-7B-Instruct Lora 微调
本教程介绍如何基于Transformers和PEFT框架对Qwen2.5-7B-Instruct模型进行LoRA微调。
417 34
Qwen2.5-7B-Instruct Lora 微调
|
1月前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
9940 29
|
3天前
|
机器学习/深度学习 存储 人工智能
【科普向】我们所说的AI模型训练到底在训练什么?
人工智能(AI)模型训练类似于厨师通过反复实践来掌握烹饪技巧。它通过大量数据输入,自动优化内部参数(如神经网络中的权重和偏置),以最小化预测误差或损失函数,使模型在面对新数据时更加准确。训练过程包括前向传播、计算损失、反向传播和更新权重等步骤,最终生成权重文件保存模型参数,用于后续的应用和部署。理解生物神经网络的工作原理为人工神经网络的设计提供了灵感,后者广泛应用于图像识别、自然语言处理等领域。
|
2天前
|
人工智能 算法 搜索推荐
阿里云百炼xWaytoAGI共学课开课:手把手学AI,大咖带你从零搭建AI应用
阿里云百炼xWaytoAGI共学课开课啦。大咖带你从零搭建AI应用,玩转阿里云百炼大模型平台。3天课程,涵盖企业级文本知识库案例、多模态交互应用实操等,适合有开发经验的企业或独立开发者。直播时间:2025年1月7日-9日 20:00,地点:阿里云/WaytoAGI微信视频号。参与课程可赢取定制保温杯、雨伞及磁吸充电宝等奖品。欢迎加入钉钉共学群(群号:101765012406),与百万开发者共学、共享、共实践!
|
15天前
|
机器学习/深度学习 人工智能 安全
通义视觉推理大模型QVQ-72B-preview重磅上线
Qwen团队推出了新成员QVQ-72B-preview,这是一个专注于提升视觉推理能力的实验性研究模型。提升了视觉表示的效率和准确性。它在多模态评测集如MMMU、MathVista和MathVision上表现出色,尤其在数学推理任务中取得了显著进步。尽管如此,该模型仍存在一些局限性,仍在学习和完善中。

热门文章

最新文章

下一篇
开通oss服务