dio智能科技

标签: WebServer

  • CSS学习

    Web-CSS-Study


    <u> 作者:jason-wrj </u>

    <u> 分类:服务器/网络服务器/CSS </u>

    <u> 标签:Server, Web Server, CSS </u>

    <u> 更多:www.dioit.com——迪欧IT——dio智能科技 </u>

    <u> 更多:www.dioit.com——dioIT——嵌入式电子智能技术 </u>


    1 概述

    1.1 CSS 的基本概念

    CSS(Cascading Style Sheets,层叠样式表)是一种用于描述HTML或XML(包括 SVG、XHTML 等)网页结构化文档(外观和格式视觉表现)呈现方式的样式表语言,由W3C制定标准。

    CSS 通过定义网页元素的字体、间距、颜色、布局、动画等外观视觉属性,控制网页内容外观和布局,实现网页美化。

    CSS 通过将样式与内容分离,使得网页设计更加灵活、高效,并支持动态变化的布局和交互效果。

    CSS 是现代网页设计(前端开发)的核心技能之一,通过实践和参考优秀案例可以快速掌握。

    1.2 CSS 的发展历程

    • 1994年:由哈坤·利(Håkon Wium Lie)首次提出,旨在解决HTML样式与内容混杂导致的代码臃肿问题。

    • 1996年:CSS1成为W3C推荐标准,支持基础样式控制。

    • 1998年:CSS2增加浮动、定位等复杂布局功能。

    • 2010年:CSS3引入圆角、阴影、动画等现代特性,与HTML5共同成为网页开发主流。

    1.3 CSS 的版本演进

    • CSS3:当前主流版本,模块化引入弹性布局、动画、媒体查询等功能。

    • 向后兼容:新特性在不支持的老浏览器中可平稳降级。

    1.4 CSS 的应用场景

    • 网页设计

      • 网页视觉美化(字体、颜色、背景)。

      • 构建响应式网站,适配不同设备(手机、平板、桌面)。

      • 动态交互效果(悬停、点击反馈)。

      • 打印样式优化(@media print)。

      • 组件化开发(配合CSS-in-JS或CSS Modules)。

    • 实现复杂的 UI 组件

      • 如导航栏、卡片布局、模态框。

    • 主题与样式库

      • 开发可复用的 UI 框架(如 Bootstrap、Tailwind CSS)。

      • 动态切换主题(如暗色模式)。

    • 性能优化

      • 使用 CSS 压缩工具减少文件体积。

      • 利用缓存策略提升加载速度。

    • 国际化与无障碍

      • 通过逻辑属性支持多语言排版(如阿拉伯语的 RTL 布局)。

      • 确保样式兼容屏幕阅读器。

    1.5 CSS 的核心特点

    • 分离性

      内容与表现分离,HTML 专注结构,CSS 控制样式,便于维护和协作。CSS 将样式与 HTML 结构分离,提升代码可维护性。修改样式无需调整 HTML 结构,只需更新 CSS 文件。

    • 层叠性

      多个样式规则可叠加作用于同一元素,按优先级(如!important> 内联样式 > ID 选择器 > 类选择器 > 标签选择器)确定最终效果。

    • 继承性

      父元素的样式(如字体、颜色)可自动传递到子元素,减少重复代码。

    • 响应式设计

      通过媒体查询(Media Queries)适配不同设备屏幕(如手机、电脑),实现自适应布局。

    • 精准控制

      像素级调整元素位置、大小、边框等。

    • 样式复用

      一套样式可应用于多个页面,减少重复代码。

    • 性能优化

      支持外部样式表缓存,减少重复代码加载。

    • 丰富效果

      支持渐变、圆角、阴影、动画等现代视觉特性(CSS3)。

    • 可扩展性

      通过预处理器(如 Sass/Less)或后处理器(如PostCSS)增强功能。

    • 跨浏览器一致性

      通过标准化属性(如 display: flex)减少样式差异。

    1.6 CSS 的功能作用

    • 控制网页外观

      • 颜色表示:支持十六进制(如 #FFFF00 表示黄色)、RGB 等格式。

      • 文本样式:字体、颜色、对齐方式。

      • 排版控制 :可以精确地设置字体、字号、行距、字距等排版属性,实现丰富的文本排版效果,如不同的字体样式、大小写转换、文本阴影等。

      • 外观美化 :可设置元素的颜色、背景图像、边框样式、圆角、阴影等外观属性,使网页更具视觉吸引力。

    • 实现复杂的布局((Flexbox)弹性盒子、(Grid)网格布局、响应式设计)。

      • 布局设计 :通过定位属性(如 position)、盒模型(marginpaddingborderwidthheight 等)以及弹性布局(flex 布局)、网格布局(grid 布局)等技术,实现复杂的网页布局,如响应式布局、多列布局等。

    • 管理元素的动态状态(悬停效果、动画)。

      • 交互效果 :利用伪类和 CSS 动画(@keyframes)、过渡(transition)等特性,为网页添加交互效果,如按钮悬停效果、点击效果、元素的动画过渡、关键帧动画等。

    • 内容与样式的分离

      • 通过 CSS 将网页的结构(HTML)与表现(CSS 样式)解耦,实现内容(HTML)与样式(CSS)分离,便于维护和更新,提升代码可维护性和复用性。

      • 允许通过一个样式表文件统一管理多个页面的样式。

    1. 提升开发效率

      • 避免重复的 HTML 标签(如 <font> 或表格布局),减少代码冗余。

      • 支持继承和层叠规则,简化样式覆盖逻辑。

    1.7 CSS 的工作原理

    1. 解析 HTML,生成 DOM 树。

    2. 解析 CSS ,生成 CSSOM 树。

    3. 合并 DOM + CSSOM,构建渲染树。

    4. 布局与绘制,计算元素位置并渲染页面。

    1.8 CSS 的优势与局限

    • 优势

      • 性能优化:外部样式表可被浏览器缓存,减少重复加载。

      • SEO友好:结构清晰的HTML更易被搜索引擎抓取。

      • 维护便捷:全局样式可通过单一CSS文件统一调整。

    • 局限

      • 浏览器兼容性问题(如旧版IE不支持部分CSS3属性)。

      • 学习曲线较陡,需掌握选择器优先级、盒模型等复杂概念。

      • CSS 本身主要用于样式和布局,对于页面的结构和内容逻辑的控制能力较弱,通常需要与 HTML 和 JavaScript 配合使用来实现更复杂的网页功能。

      • 一些复杂的样式效果可能需要使用较多的代码和技巧来实现,并且在不同浏览器中可能存在兼容性问题,需要进行额外的测试和调整。


    2 CSS 引入方式与优先级

    2.1 外部样式表(最常用)

    外部样式表(External style sheet),编写在HTML文档中的<head> </head>头部元素之间,通过<link>元素标签引入独立 CSS 文件,方便实现多页面复用:

    <head>
        <link rel="stylesheet" href="style.css">
    </head>

    2.2 内部样式表

    内部样式表(Internal style sheet),通常编写在HTML文档中的<head> </head>头部元素之间的<style> </style>元素内,通过在<style>元素内,(且需要写在 link 外部样式表的后面,否则会被外部样式表优先覆盖内部样式表),直接定义 CSS 样式,仅当前页面有效:

    <style>
        body { background: #f0f0f0; }
    </style>

    2.3 内联样式表

    内联样式表(Inline style),直接写在 HTML 文档元素标签的style属性中,优先级最高但不利于维护:

    <p style="color: purple;">示例文本</p>

    2.4 样式表的优先级

    内联样式 > 内部样式 > 外部样式 > 浏览器默认样式。


    3 CSS 的基础语法

    3.1 CSS 样式规则

    由一系列规则集组成,规则集(ruleset)常简称为规则(rule)。每条规则集(ruleset)是由选择器(selector)声明块构成。如下所示:

    selector_1,     /* 选择器1 */
    selector_2,     /* 选择器2 */
    selector_n {    /* 选择器n */
      property_1: value_1; /* 声明块1 */ /* 属性名_1: 属性值_1 */
      property_2: value_2; /* 声明块2 */ /* 属性名_2: 属性值_2 */
      property_n: value_n; /* 声明块n */ /* 属性名_n: 属性值_n */
    }
    • 选择器

      选择器(Selectors)用于指定要应用样式的 HTML 或 XML 元素(如#id.classh1),例如: #id 用于选择具有特定 ID 的元素,.class 用于选择具有特定类的元素,p 用于选择所有段落元素等。

    • 声明块

      声明块(Declaration Block)由一对大括号 {} 包围,其中包含一条或多条(属性: 值;)声明(Declaration) 。每条声明都是由属性和值组成,用于指定元素的样式,例如( color: black;) 表示设置元素的文本颜色为黑色。

      • 属性(Property):是一个标识符,用可读的名称来表示其特性。如colorfont-sizemargin等样式属性(style attribute)。

      • 值(Value):属性的具体设置,每个属性都包含一个有效值的集合,它有正式的语法和语义定义。如red16pxauto等。(属性值与单位不能有空格,16 px是错误的,正确的写法是16px)。

    • 注释

      使用 /* 注释内容 */,添加 CSS 层叠样式表中的注释内容。

    3.2 CSS 样式选择器

    选择器(Selectors)至少要有一个,通过ID类名元素标签名等精准定位HTML元素,并指定要应用的样式(如 #id.classp),或通过属性伪类等实现动态样式。如果包含多个选择器的集合分组,则用逗号,分隔。

    #header { background-color: gray; } /* ID选择器 */
    .text-red { color: red; } /* 类选择器 */
    [type="text"] { border: 1px solid black; } /* 属性选择器 */
    :hover { } /* 伪类(状态) */
    ::before { } /* 伪元素(生成内容) */
    p { color: blue; } /* 元素标签选择器 */
    div p { margin: 10px; }      /* 关系组合选择器 */ /* 后代选择器 */
    div > p { padding: 5px; }    /* 关系组合选择器 */ /* 子选择器 */
    h1 + p { font-weight: bold; } /* 关系组合选择器 */ /* 相邻兄弟选择器 */

    常见的选择器类型,有以下几种:

    • ID 选择器

      使用唯一ID 标识符来选择元素,匹配具有同名 ID 属性值的元素,(ID 标识符不要以数字开头,个别浏览器不起作用)。ID 前需要加上(井号 #),如 #myId 只会选中页面上唯一具有 id="myId" 属性的元素。

      例如:

      • #bg1 { background: blue; },匹配具有 id 属性,且 id 属性值为 bg1 的所有元素 。

    • 类选择器

      使用类名来选择元素,匹配具有同名 class 属性值的元素,(类名不要以数字开头,个别浏览器不起作用)。类名前需要加上(点号 .),如 .myClass 会选中所有具有 class="myClass" 属性的元素。

      例如:

      • .text1 { font-size: 16px; },匹配具有 class 属性,且 class 属性值为 text1 的所有元素。

    • 属性选择器

      根据元素的属性及其来选择元素,如 [type="text"] 会选中所有具有 type="text" 属性的元素。

      例如:

      • [attribute] { background: red; } ,匹配具有 attribute 属性的所有元素。

      • [attribute1=value1] { background: red; } ,匹配具有 attribute1 属性,且 attribute1 属性值与 value1 等同的所有元素。

      • [attribute2^=value2] { background: red; },匹配具有 attribute2 属性,且 attribute2 属性值以 value2 开头的所有元素。

      • [attribute3$=value3] { background: red; },匹配具有 attribute3 属性,且 attribute3 属性值以 value3 结尾的所有元素。

      • [attribute4*=value4] { background: red; },匹配具有 attribute4 属性,且 attribute4 属性值包含 value4 的所有元素。

      • [attribute5~=value5] { background: red; },匹配具有 attribute5 属性,且 attribute5 属性值包含一个以空格分隔的值与 value5 等同的所有元素。即 attribute5 属性的值里,必须有 value5这个单词,并且value5要与其它单词之间有空格分隔。

      • [attribute6|=value6] { background: red; },匹配具有 attribute6 属性,且 attribute6 属性值与 value6 等同或以 value6 开头的所有元素。

    • 伪类选择器

      用于选择处于特定状态的元素,如 :hover 用于选择鼠标悬停在元素上时的状态,:active 用于选择鼠标点击元素时的状态等。例如:a:hover { color: green; }

      例如:

      • :first-child,结构性伪类选择器,匹配在一组兄弟元素中的第一个元素。

      • :last-child,结构性伪类选择器,匹配在一组兄弟元素中的最后一个元素。

      • :nth-child(n),结构性伪类选择器,根据元素在父元素内的子元素列表中的索引来匹配选择元素。n 表示元素在子元素列表中的第几个

      • :nth-last-child(n),结构性伪类选择器,匹配子元素列表中的倒数第 n 个子元素。

      • :nth-child(odd),结构性伪类选择器,根据元素在父元素内的子元素列表中的索引来匹配选择元素。odd 表示元素在兄弟元素列表中的位置是奇数:1、3、5……。

      • :nth-child(even),结构性伪类选择器,根据元素在父元素内的子元素列表中的索引来匹配选择元素。even 表示元素在兄弟元素列表中的位置是偶数:2、4、6……。

      • :only-child,结构性伪类选择器,匹配仅有一个子元素的元素。

      • :first-of-type,结构性伪类选择器,匹配在一组兄弟元素中其类型第一个元素。

      • :last-of-type,结构性伪类选择器,匹配在(它父元素的)子元素列表中,最后一个给定类型的元素。

      • :only-of-type,结构性伪类选择器,匹配任意一个元素,这个元素没有其他相同类型的兄弟元素。

      • :nth-of-type(n),结构性伪类选择器,匹配相同类型元素的第 n 个元素。

      • :nth-last-of-type(n),结构性伪类选择器,匹配相同类型元素的倒数第 n 个元素。

      • :checked,UI元素状态伪类选择器,匹配选中状态的元素,选择任何处于选中状态的radio(<input type="radio">),checkbox (<input type="checkbox">) 或 select 元素中的 ("option") 元素。即匹配任意被勾选/选中的 radio(单选按钮),checkbox(复选框),或者 option(select 中的一项) 。

      • :enabled,UI元素状态伪类选择器,匹配任何已启用的元素。如果元素可以被激活(例如被选择、单击、输入文本等),或者能够获得焦点,那么它就是启用的。

      • :disabled,UI元素状态伪类选择器,匹配任何被禁用的元素。如果一个元素不能被激活(如选择、点击或接受文本输入)或获取焦点,则该元素处于被禁用状态。

      • :in-range,UI元素状态伪类选择器,匹配指定范围以内值的元素。

      • :out-of-range,UI元素状态伪类选择器,匹配指定范围以外值的元素。

      • :optional,UI元素状态伪类选择器,匹配没有 “required” 属性的元素。

      • :required,UI元素状态伪类选择器,匹配有 “required” 属性的元素。

      • :invalid,UI元素状态伪类选择器,匹配无效的元素。

      • :read-only,UI元素状态伪类选择器,匹配只读状态的元素,表示元素不可被用户编辑的状态(如锁定的文本输入框)。

      • :read-write,UI元素状态伪类选择器,匹配可读可写状态的元素。

      • :focus,UI元素状态伪类选择器,匹配获得焦点的元素(如表单输入)。当用户点击或轻触一个元素或使用键盘的 Tab 键选择它时,它会被触发。

      • :link,UI元素状态伪类选择器,所有未访问链接。

      • :visited,UI元素状态伪类选择器,匹配在用户访问链接后生效。但由于出于隐私保护的原因,使用该选择器可以修改的样式非常有限。

      • :hover,UI元素状态伪类选择器,匹配在用户使用指针设备与元素进行交互时匹配,但不一定激活它。通常在用户将光标(鼠标指针)悬停在元素上时触发。

      • :active,UI元素状态伪类选择器,匹配被用户激活的元素。它让页面能在浏览器监测到激活时给出反馈。当用鼠标交互时,它代表的是用户按下按键和松开按键之间的时间。

      • :empty,UI元素状态伪类选择器,匹配没有子元素的元素。

    • 否定反选伪类选择器(negation pseudo-class)

      用来匹配不符合一组选择器的元素,它的作用是防止特定的元素被选中。

      例如:

      • :not(selectors),匹配与selectors选择器相反的所有元素。

    • 元素选择器

      直接使用 HTML 元素的名称作为选择器,如 p 会选中页面上所有的 <p> 元素。

      例如:

      • p { color: blue; },匹配所有p元素。

    • 伪元素选择器

      • ::first-letter,用于将样式应用于区块容器第一行的第一个字母,但仅当其前面没有其他内容(例如图像或行内表格)时才有效。

      • ::first-line,只能在块容器中,匹配在区块容器第一行应用样式。

      • ::before,会创建一个伪元素,作为所选中元素的第一个子元素。通常用于为具有 content 属性的元素添加修饰性的内容。此元素默认情况下是行级的。

      • ::after,会创建一个伪元素,作为所选中元素的最后一个子元素。通常用于为具有 content 属性的元素添加修饰性的内容。此元素默认情况下是行向布局的。

    • 关系组合选择器(combinator)

      包含祖先后代选择器(A B)、第一级父子元素选择器(A > B)、相邻兄弟选择器(A + B)、后续兄弟选择器(A ~ B)等。

      例如:

      • div p { color: blue; }祖先后代选择器,匹配所有 div 元素内的所有 p 元素。

      • .class1>p { color: blue; }第一级父子元素选择器,匹配具有 class 类属性,且类属性的值为 .class1 的所有元素下的第一级 p 子元素

      • h1+p { color: blue; }相邻兄弟选择器,匹配所有 h1 元素后面紧接相邻着的第一个 p 元素。

      • h2~p { color: blue; }后续兄弟选择器,匹配所有 h2 元素后面所有的 p 元素。

    • 通配选择器(universal selector)

      通配符选择器(*),用于匹配当前 HTML 文档中所有的元素。

      例如:

      • * { color: red; },匹配当前 HTML 文档中所有的元素,并设置颜色为红色。

    • 集合分组选择器

      上述所有选择器均可集合成同一分组选择器,通过(逗号 ,)分隔不同的选择器。

      例如:

      • div p, .class1>p, h1+p, h2~p { color: red; },集合匹配所有 div 元素内的所有 p 元素,集合匹配具有 class 类属性,且类属性的值为 .class1 的所有元素下的第一级 p 子元素,集合匹配所有 h1 元素后面紧接相邻着的第一个 p 元素,集合匹配所有 h2 元素后面所有的 p 元素。

    3.3 CSS 样式声明块

    包含一个或多个声明,用花括号 { } 包裹。每个声明由属性和值组成,不同声明用分号;分隔。

    • 样式属性与属性值

      • 样式属性(如colormargin),用于定义样式特性。如 background-color 用于设置元素的背景颜色,font-size 用于设置字体大小等。

      • 属性值(如red20px),为样式属性指定具体效果的值。如 background-color: #ff0000; 表示将背景颜色设置为红色,font-size: 16px; 表示将字体大小设置为 16 像素。

    • 声明缩写优化

      • margin: 10px 20px;(上下10px,左右20px)。

    3.4 CSS 的 at 规则

    以 @()开始,随后是标识符,一直到以分号或右大括号结束。

    每个 at 规则由其标识符定义,可能有它自己的语法。

    at 规则涵盖了 meta 信息(比如 @charset @import)、条件信息(比如 @media @document)、描述信息(比如 @font-face)。

    • @charset——定义样式表使用的字符集。

    • @import——告诉 CSS 引擎引入一个外部样式表。

    • @namespace——告诉 CSS 引擎必须考虑 XML 命名空间。

    • @layer ——声明了一个层叠层,同一层内的规则将级联在一起,这给予了开发者对层叠机制的更多控制。

    3.5 CSS 的语法示例

    body {
      background: #f0f0f0; /* 浅灰色背景 */
      font-family: "Microsoft YaHei"; /* 字体 */
    }
    
    h1 {
      color: #0A0000;      /* 深红色标题(RGB 10,0,0) */
    }
    
    /* 选择所有 <p> 标签,声明设置字体颜色和背景 */
    p {
      color: blue;
      background-color: #f0f0f0;
    }
    
    /* 选择 class 为 "highlight" 的元素,声明 */
    .highlight {
      font-weight: bold;
      border: 1px solid red;
    }
    
    /* 选择 id 为 "header" 的元素 */
    #header {
      text-align: center;
      padding: 20px;
    }

    4 核心组成

    4.1 盒模型(Box Model)

    定义元素的空间占用规则,每个元素在页面中都被视为一个矩形盒子,由内容区(content)、内边距(padding)、边框 (border)和 外边距(margin)组成),是布局的基础。

    从内部到外围,分别为:

    1. content(内容):盒子的内容,显示文本和图像。

    2. padding(内边距):清除内容周围的区域,内边距是透明的。

    3. border(边框):围绕在内边距和内容外的边框。

    4. margin(外边距):清除边框外的区域,外边距是透明的。

    .box {
      width: 300px;       /* 内容区宽度 */
      padding: 20px;      /* 内边距 */
      border: 1px solid black; /* 边框 */
      margin: 10px;       /* 外边距 */
      box-sizing: border-box; /* 宽度包含padding和border */
    }

    通过设置 box-sizing 属性,可分为两种盒模型

    • box-sizing: content-box;,设置为标准模式的盒模型,此种模式下,矩形盒子的总宽度和总高度,仅指内容区的宽度和高度。

    • box-sizing: border-box;,设置为怪异模式的盒模型,此种模式下,矩形盒子的总宽度和总高度,包含了(内容区+内边距+边框)的宽度和高度。

    /* 默认:width/height 仅指内容区域 */
    box-sizing: content-box;
    
    /* width/height 包含内容、内边距和边框 */
    box-sizing: border-box;

    4.2 布局系统

    • 浮动(Float)

      传统布局,通过 float 实现元素左右对齐,实现文字环绕效果,常用于早期的多列布局。可分为设置浮动(float)、清除浮动(clear)。

    .float-left { 
        float: left; /* 浮动(Float) */
    }
    .clearfix::after {
        content: " ";
        display: table;
        clear: both; /* 清除浮动 */
    }
    • 定位(Positioning)

      传统布局,通过 position: static/relative/absolute/fixed/sticky; 控制元素的绝对或相对位置。可分为默认状态(static)、相对定位(relative)、绝对定位(absolute)、固定定位(fixed)、粘性定位(sticky)。

      • 默认状态(static):HTML 元素的默认值,即没有定位。

        static 定位的元素不会受到 top、bottom、left、right 这4个属性影响。

      • 相对定位(relative):relative 定位的元素位置,是相对其正常位置。

        移动 relative 定位的元素,元素原本所占的空间(会保留)不会发生改变。

        relative 定位元素经常被用来作为绝对定位元素的容器块。

      • 绝对定位(absolute):absolute 定位的元素位置,是相对于已定位的父元素,如果没有已定位的父元素。那么absolute 定位的元素的位置,则是相对于 <html>

        absolute 定位的元素和其他元素重叠,与文档流无关,不占据空间。

      • 固定定位(fixed):fixed 定位的元素位置相对于浏览器窗口是固定位置。

        即使窗口是滚动的,fixed 定位的元素也不会移动。

        fixed 定位的元素和其他元素重叠,与文档流无关,不占据空间。

      • 粘性定位(sticky):sticky 定位的元素位置,是是依赖于用户的滚动位置来定位,且是在 relativefixed 定位之间切换。

        当页面滚动没有超出目标区域时(跨越特定阈值前),sticky 定位的行为,像 relative 。当页面滚动超出目标区域时(跨越特定阈值后),sticky 定位的表现,像 fixed,会固定在目标位置。

        这个特定阈值指的是 top、bottom、left、right 这4个属性之一,指定这4个属性阈值的其中任何1个,才会使粘性定位生效。否则其行为与相对定位相同。

      • 定位的重叠属性

        定位后的元素与文档流无关,定位元素可以覆盖页面上的其它元素。通过 z-index 属性,可以指定元素的堆叠顺序(即指定哪个元素在前面,哪个在后面)。

        一个元素可以有正数或负数的 z-index 堆叠顺序,具有更高堆叠顺序的元素总是在较低的堆叠顺序元素的前面。而如果两个定位元素重叠,没有指定 z - index 属性值,那么最后定位在 HTML 代码中的元素将被显示在最前面。

    .static {
        position: static; /* 默认状态 */
    }
    .relative {
        position: relative; /* 相对定位 */
    }
    .absolute {
        position: absolute; /* 绝对定位 */
        top: 10px; 
        left: 20px;
    }
    .fixed {
        position: fixed; /* 固定定位 */
        bottom: 0;
    }
    .sticky {
        position: sticky; /* 粘性定位 */
        top: 0;
    }
    • 定位相关属性

      属性 说明
      position 指定元素的定位类型。 staticrelative absolutefixed stickyinherit
      top 定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。 autolength %inherit
      right 定义了定位元素右外边距边界与其包含块右边界之间的偏移。 autolength %inherit
      bottom 定义了定位元素下外边距边界与其包含块下边界之间的偏移。 autolength %inherit
      left 定义了定位元素左外边距边界与其包含块左边界之间的偏移。 autolength %inherit
      z-index 设置元素的堆叠顺序。 numberauto inherit
      overflow 只工作于指定高度的块元素上,用于控制内容溢出元素框时显示的方式。 autohidden scrollvisible inherit
      overflow-x 指定如何处理右边/左边边缘的内容溢出元素的内容区域。 autohidden scrollvisible no-displayno-content
      overflow-y 指定如何处理顶部/底部边缘的内容溢出元素的内容区域。 autohidden scrollvisible no-displayno-content
      clip 剪辑一个绝对定位的元素。 shapeauto inherit
      cursor 显示光标移动到指定的类型。 autodefault pointercrosshair movewait texthelpurl e-resizene-resize nw-resizen-resize se-resizesw-resize s-resizew-resize
    • 弹性盒子(Flexbox)

      现代新式布局,设置一维弹性布局,用于简化响应式布局。适合简单对齐和空间分配。

      弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。

      通过设置 display属性的值为 flexinline-flex ,将显示布局定义为弹性容器。弹性容器内包含了一个或多个弹性子元素

      相关属性flexflex-basisflex-directionflex-flowflex-growflex-shrinkflex-wraporderalign-contentalign-itemsalign-selfjustify-contentplace-contentrow-gapcolumn-gapgap

      • flex-direction(指定弹性子元素在父容器中的位置):row | row-reverse | column | column-reverse;

        • row:横向从左到右排列(左对齐),默认的排列方式。

        • row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面。

        • column:纵向排列。

        • column-reverse:反转纵向排列,从后往前排,最后一项排在最上面。

      • flex-wrap(用于指定弹性盒子的子元素换行方式):nowrap | wrap | wrap-reverse | initial | inherit;

        • nowrap: 默认, 弹性容器为单行。该情况下弹性子项可能会溢出容器。

        • wrap:弹性容器为多行。该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行。

        • wrap-reverse:反转 wrap 排列。

      • flex-flow(设置或检索弹性盒模型对象的子元素排列方式):flex-direction flex-wrap|initial|inherit;

      • flex(设置弹性盒子的子元素如何分配空间):flex-grow flex-shrink flex-basis|auto|initial|inherit;

      • flex-grow(设置或检索弹性盒子的扩展比率):number | initial | inherit;

      • flex-shrink(flex 元素的收缩大小):number | initial | inherit;

      • flex-basis(设置或检索弹性盒伸缩基准值):number | auto | initial | inherit;

      • justify-content(沿着弹性容器的主轴线(横轴),进行内容对齐):flex-start | flex-end | center | space-between | space-around;

        • flex-start:弹性项目向行头紧挨着填充。这个是默认值。第一个弹性项的main-start外边距边线被放置在该行的main-start边线,而后续弹性项依次平齐摆放。

        • flex-end:弹性项目向行尾紧挨着填充。第一个弹性项的main-end外边距边线被放置在该行的main-end边线,而后续弹性项依次平齐摆放。

        • center:弹性项目居中紧挨着填充。(如果剩余的自由空间是负的,则弹性项目将在两个方向上同时溢出)。

        • space-between:弹性项目平均分布在该行上。如果剩余空间为负或者只有一个弹性项,则该值等同于flex-start。否则,第1个弹性项的外边距和行的main-start边线对齐,而最后1个弹性项的外边距和行的main-end边线对齐,然后剩余的弹性项分布在该行上,相邻项目的间隔相等。

        • space-around:弹性项目平均分布在该行上,两边留有一半的间隔空间。如果剩余空间为负或者只有一个弹性项,则该值等同于center。否则,弹性项目沿该行分布,且彼此间隔相等(比如是20px),同时首尾两边和弹性容器之间留有一半的间隔(1/2*20px=10px)。

      • align-items(设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式):flex-start | flex-end | center | baseline | stretch;

        • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。

        • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。

        • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。

        • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与’flex-start’等效。其它情况下,该值将参与基线对齐。

        • stretch:如果指定侧轴大小的属性值为’auto’,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照’min/max-width/height’属性的限制。

      • align-content(用于修改 flex-wrap 属性的行为):flex-start | flex-end | center | space-between | space-around | stretch;

        align-content 类似于 align-items, 但 align-content 不是设置弹性子元素的对齐,而是设置各个行的对齐。

        • stretch:默认。各行将会伸展以占用剩余的空间。

        • flex-start:各行向弹性盒容器的起始位置堆叠。

        • flex-end:各行向弹性盒容器的结束位置堆叠。

        • center:各行向弹性盒容器的中间位置堆叠。

        • space-between:各行在弹性盒容器中平均分布。

        • space-around:各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。

      • align-self(在弹性子元素上使用,覆盖容器的 align-items 属性):auto | stretch | center | flex-start | flex-end | baseline | initial | inherit;

        • auto:默认值。元素继承了它的父容器的 align-items 属性。如果没有父容器则为 “stretch”。

        • stretch:元素被拉伸以适应容器。

        • center:元素位于容器的中心。

        • flex-start:元素位于容器的开头。

        • flex-end:元素位于容器的结尾。

        • baseline:元素位于容器的基线上。

        • initial:设置该属性为它的默认值。

        • inherit:从父元素继承该属性。

      • order(设置弹性盒子的子元素排列顺序):number | initial | inherit;

    .flexbox-container {
        display: flex;           /* 创建弹性容器 */
        justify-content: center; /* 水平居中对齐 */
        /* justify-content: space-between; */ /* 主轴对齐方式 */
        align-items: center;     /* 垂直居中对齐 */
        /* align-items: center; */ /* 交叉轴对齐方式 */
    }
    • 网格布局(Grid)

      现代新式布局,设置二维网格布局,用于实现复杂页面结构。网格是一组相交的水平线和垂直线,分别定义网格的列和行。

      通过设置 display属性的值为 gridinline-grid ,将显示布局定义为网格容器。网格容器带有,可以更轻松地设计网页,而无需使用浮动和定位。

      网格引入了(fr 单位),可以创建灵活的网格轨道。一个(fr 单位)代表网格容器中可用空间的一等份。

      相关属性grid-template-columnsgrid-template-rowsgrid-template-areasgrid-templategrid-auto-columnsgrid-auto-rowsgrid-auto-flowgridgrid-row-startgrid-column-startgrid-row-endgrid-column-endgrid-rowgrid-columngrid-areagrid-row-gapgrid-column-gapgrid-gap

      • grid( CSS 所有网格容器的简写属性),可以用来设置以下属性:

        • 显式网格属性: grid-template-rowsgrid-template-columnsgrid-template-areas

        • 隐式网格属性: grid-auto-rowsgrid-auto-columnsgrid-auto-flow

        • 间距属性: grid-row-gapgrid-column-gap

      • grid-template(设置网格中行、列与分区):none | grid-template-rows/grid-template-columns | grid-template-areas | initial | inherit;

      • grid-template-rows(定义网格中的行):none | auto | max-content | min-content | length | initial | inherit;

      • grid-template-columns(定义网格中的列):none | auto | max-content | min-content | length | initial | inherit;

      • grid-template-areas(指定如何显示行和列,使用网格元素的名称来布局网格):none | itemnames;

      • grid-auto-rows(设置网格容器中行的默认大小):auto | max-content | min-content | length;

      • grid-auto-columns(设置网格容器中列的默认大小):auto | max-content | min-content | length;

      • grid-auto-flow(指定自动布局算法,精确指定自动布局的元素排列):row | column | dense | row dense | column dense;

      • grid-gap(同时设置行间距和列间距):grid-row-gap grid-column-gap

      • grid-row-gap(定义网格行间距):length | %

      • grid-column-gap(定义网格列间距):length | %

      • grid-row(同时指定网格元素行线的开始位置和结束位置):grid-row-start / grid-row-end;

      • grid-area(指定网格元素在网格布局中的大小和位置):grid-row-start / grid-column-start / grid-row-end / grid-column-end | itemname;

      • grid-row-start(指定网格元素行线的开始位置):auto | row-line;

      • grid-row-end(指定网格元素行线的结束位置):auto | row-line | span n;

      • grid-column(同时指定网格元素列线的开始位置和结束位置):grid-column-start / grid-column-end;

      • grid-column-start(指定网格元素列线的开始位置):auto | span n | column-line;

      • grid-column-end(指定网格元素列线的结束位置):auto | span n | column-line;

      • justify-content (用于对齐容器内的网格,设置如何分配顺着弹性容器主轴(或者网格行轴) 的元素之间及其周围的空间),网格的总宽度必须小于容器的宽度才能使 justify-content 属性生效。。

      • align-content(用于设置垂直方向上的网格元素在容器中的对齐方式),网格元素的总高度必须小于容器的高度才能使 align-content 属性生效。

    .grid-container {
        display: grid;                  /* 创建网格容器 */
        grid-template-columns: 1fr 2fr; /* 列宽比例 */
        /* grid-template-columns: repeat(3, 1fr);*/ /* 3 列等宽 */
        gap: 10px;                     /* 网格间隔 */
    }

    参考函数repeat()minmax()fit-content()

    相关术语:网格(Grid),网格线(Grid lines),网格轨道(Grid tracks),网格单元格(Grid cell),网格区域(Grid areas),网格间隙(Gutters),网格轴(Grid Axis),网格行(Grid row),网格列(Grid column)。

    • 弹性盒子网格布局的示例

    /* 示例:居中元素 */
    .container {
        display: flex;      /* 传统flex方案 */
        justify-content: center;
        align-items: center;
    }
    
    .container {
        display: grid;          /* 现代grid方案 */
        place-items: center; /* 一行代码实现居中 */
    }

    4.3 响应式设计

    • 媒体查询(Media Queries)

      使用@media媒体查询,适配不同设备尺寸,根据设备特性(如屏幕宽度)应用不同的样式,适配不同终端(PC/平板/手机)。

    @media screen and (max-width: 768px) { /* 屏幕宽度小于768px时应用 */
        body { 
            font-size: 14px; 
        }
        .container { 
            flex-direction: column; 
        }
    }
    • 多媒体类型

      • all:用于所有多媒体类型设备。

      • print:用于打印机。

      • screen:用于电脑屏幕,平板,智能手机等。

      • speech:用于屏幕阅读器。

    • 多媒体查询语法

    @media not|only mediatype and (expressions) {
        CSS 代码...;
    }
    /* not: not是用来排除掉某些特定的设备的。 */
    /* only: 用来定某种特别的媒体类型。 */
    • 在不同的媒体上使用不同的样式文件

    <link rel="stylesheet" media="mediatype and|not|only (expressions)" href="select.css">
    • 视口单位(Viewport Units)

      • vw(视口宽度)(视口宽度的百分比)。

      • vh(视口高度)(视口高度的百分比)。


    5 常用 CSS 样式

    5.1 文本相关样式

    • color(颜色):red | #ff0000 | rgb(255,0,0) | rgba(255,0,0,0.5)

    • font-size(字号):14px | 1em | 2rem | 100%

    • font-weight(字重):normal | light | bold | 500

    • font-style(字体样式):normal | italic | oblique

    • font-family(字体类型):"黑体", "宋体", "Microsoft Yahei", "Times New Roman"

    • direction(文本方向):ltr | rtl | inherit

    • unicode-bidi(文本是否被重写):normal | embed | bidi-override | initial | inherit

    • text-transform(文本转换):uppercase | lowercase | capitalize

    • text-decoration(文本装饰线):none | underline | overline | line-through

    • text-indent(文本缩进):16px | 2em | 1rem

    • text-shadow(文本阴影):h-shadow v-shadow blur color;

    • text-align(文本水平对齐):left | center | right | justify

    • vertical-align(非块级元素垂直对齐):top | middle | bottom

    • line-height(文本行高):16px | 32px

    • letter-spacing(字符间距):2px | -2px

    • word-spacing(字间距):12px | 22px

    • white-space(元素内空白):pre | pre-line | pre-wrap | nowrap

    5.2 盒模型相关样式

    • content(内容),用于在元素的 ::before::after伪元素中插入内容。使用 content 属性插入的内容都是匿名的可替换元素

    • padding(内边距),该属性为给定元素设置所有四个(上右下左)方向的内边距属性。

      单个设置值会统一应用于(所有边),两个设置值则应用于(上边下边左边右边),三个设置值则应用于(上边左边右边下边),四个设置值则分别按(顺时针方向)应用于(上边右边下边左边)。

      padding(内边距):length | %

      padding(内边距)可细分为:

      • padding-top(上方内边距):length | %

      • padding-right(右方内边距):length | %

      • padding-bottom(下方内边距):length | %

      • padding-left(左方内边距):length | %

    • border(边框),该属性最多只接受三个参数,分别是宽度风格颜色,这样会使得四条边的边框相同。也可以使用一个,两个或三个值来指定 border 属性,值的顺序无关紧要。(可按四边分为 border-topborder-rightborder-bottomborder-left)。

      border(边框):border-width border-style border-color

      可细分为:

      • border-width:边框宽度。(支持单值、双值、三值、四值分别设置四个边,也可按四边分为 border-top-widthborder-right-widthborder-bottom-widthborder-left-width)。

        border-width(边框宽度):thin | medium | thick | length

        • 值为thin:定义细的边框。

        • 值为medium:定义中等粗细的边框。

        • 值为thick:定义粗的边框。

        • 值为length:自定义边框的粗细宽度。

      • border-style:边框风格。(支持单值、双值、三值、四值分别设置四个边,也可按四边分为 border-top-styleborder-right-styleborder-bottom-styleborder-left-style)。

        outline-style(边框风格):none | dotted | dashed | solid | double | groove | ridge | inset | outset

        • 值为none:和关键字 hidden 类似,不显示边框。

        • 值为hidden:和关键字 none 类似,不显示边框。

        • 值为dotted:显示为一系列圆点,圆点半径是 border-width计算值的一半。

        • 值为dashed:显示为一系列短的方形虚线。

        • 值为solid:显示为一条实线。

        • 值为double:显示为一条双实线,宽度是 border-width

        • 值为groove:显示为三维沟槽雕刻效果的边框,样式与 ridge 相反。

        • 值为ridge:显示为三维脊状浮雕效果的边框,样式与 groove 相反。

        • 值为inset:显示为三维嵌入效果的边框,样式与 outset 相反。

        • 值为outset:显示为三维突出效果的边框,样式与 inset 相反。

      • border-color:边框颜色。(支持单值、双值、三值、四值分别设置四个边,也可按四边分为 border-top-colorborder-right-colorborder-bottom-colorborder-left-color)。

        border-color(边框颜色):color-name | hex-number | rgb-number | transparent

        • 值为color:指定背景颜色。

        • 值为transparent:指定边框的颜色是透明的。

      • border-radius:边框圆角。(支持单值、双值、三值、四值分别设置四个角,也可按四角分为 border-top-left-radiusborder-top-right-radiusborder-bottom-right-radiusborder-bottom-left-radius)。

        border-radius(边框圆角):(1-4个 length | %) / (1-4个 length | %)

        • 单值语法border-radius: length|%,这一个值表示所有的边框宽度。

        • 双值语法: border-radius: length|% length|%,第一个值表示 top-left 和 bottom-right 方向的角;第二个值表示 top-right 和 bottom-left 方向的角。

        • 三值语法border-radius: length|% length|% length|%,第一个值表示 top-left 方向的角,第二个值表示 top-right 和 bottom-left 方向的角,第三个值表示 bottom-right 方向的角。

        • 四值语法border-radius: length|% length|% length|% length|%,这四个值分别表示 top-left、top-right、bottom-right、bottom-left,即从 top-left 开始的顺时针顺序。

    • margin(外边距),该属性为给定元素设置所有四个(上右下左)方向的外边距属性。

      单个设置值会统一应用于(所有边),两个设置值则应用于(上边下边左边右边),三个设置值则应用于(上边左边右边下边),四个设置值则分别按(顺时针方向)应用于(上边右边下边左边)。

      margin(外边距):auto | length | %

      margin(外边距)可细分为:

      • margin-top(上方外边距):auto | length | %

      • margin-right(右方外边距):auto | length | %

      • margin-bottom(下方外边距):auto | length | %

      • margin-left(左方外边距):auto | length | %

    • outline(轮廓),绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。可按顺序设置(outline-color outline-style outline-width

      可细分为:

      outline-color(轮廓的颜色):color-name | hex-number | rgb-number | invert

      outline-style(轮廓的样式):none | dotted | dashed | solid | double | groove | ridge | inset | outset

      outline-width(轮廓的宽度):thin | medium | thick | length

    • box-shadow(阴影)。

    • width(宽度):100px | 1em | 2rem

    • height(高度):100px | 1em | 2rem

    5.3 显示相关样式

    • display(显示)用于设置元素是块级盒子(占用整行)或是行级盒子(仅需必要宽度,不强制换行)。display 也可用于设置子元素的布局,例如:文档流式布局弹性盒子布局网格布局

      display(显示)用于设置一个元素应如何显示,display:none;可以隐藏某个元素,且隐藏的元素不会占用任何空间。

      visibility(可见性)用于指定一个元素可见或隐藏。visibility:hidden;可以隐藏元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。

    /* 预组合值 */
    display: block; /* 块级 */
    display: inline; /* 行内 */
    display: inline-block; /* 行内块 */
    display: flex; /* 弹性盒子 */
    display: inline-flex;
    display: grid; /* 网格布局 */
    display: inline-grid;
    display: flow-root;
    
    /* 生成盒子 */
    display: none;
    display: contents;
    
    /* 多关键字语法 */
    display: block flex;
    display: block flow;
    display: block flow-root;
    display: block grid;
    display: inline flex;
    display: inline flow;
    display: inline flow-root;
    display: inline grid;
    
    /* 其他值 */
    display: table;
    display: table-row; /* 所有的 table 元素 都有等效的 CSS display 值 */
    display: list-item;
    
    /* 全局值 */
    display: inherit;
    display: initial;
    display: revert;
    display: revert-layer;
    display: unset;
    • 关键值可以被分组为六个种类:

      • display-outside外部表现,规定元素的外部显示类型。

      • display-inside内部表现,元素的内部显示类型,其定义了该内容布局时的格式上下文的类型。

      • display-listitem列表元素,为内容生成一个块级盒子和一个单独的列表元素行级盒子。

      • display-internal内部,一些布局模型,例如 tableruby 有一个复杂的内置结构,它们的子孙后代可以扮演几个不同的角色。

      • display-box,定义一个元素到底是否产生 display 盒。

      • display-legacy预组合,对相同布局模式的块级和行级变体需要单独的关键字。

    • position(定位):static | relative | absolute | fixed

      • static(静态定位),relative(相对定位)。absolute(绝对定位),fixed(固定定位)。

      • top(上坐标),right(右坐标),bottom(下坐标),left(左坐标)。

      • z-index(层叠)。

    • float(浮动):left | right

      • 清除浮动:overflowhidden

      • 清除浮动:clearleft | right | both

      • 设置父级盒子的固定高度:height

    5.4 背景相关样式

    • background:背景。

      样式设置语法:background:#颜色值 url("图像") 是否重复 固定或滚动 图像起始位置;

      可细分为如下5种样式。

      • background-color:背景颜色。

      • background-image:背景图像。

      • background-repeat:背景图像重复。

      • background-attachment:背景图像是否固定或者随着页面的其余部分滚动。

      • background-position:背景图像的起始位置。

    5.5 链接列表表格样式

    • 链接相关样式:

      1. a:link(未访问过的链接):可以用颜色、字体、背景等样式属性。

      2. a:visited(用户已访问过的链接):可以用颜色、字体、背景等样式属性。

      3. a:hover(当用户鼠标放在链接上时):可以用颜色、字体、背景等样式属性。

      4. a:active(链接被点击的那一刻):可以用颜色、字体、背景等样式属性。

    • 列表相关样式:

      • list-style(ul/ol列表样式):none | circle | disc | decimal

      • list-style-type(ul 列表项标记):circle、square

      • list-style-type(ol 列表项标记):lower-alpha、upper-roman

      • list-style-position(列表项标志的位置):inside | outside

      • list-style-image(作为列表项标记的图像):url('xxx.gif')

    • 表格相关样式:

      • border(边框)。

      • border-collapse(折叠边框):collapse

      • width(宽)。

      • height(高)。

      • text-align(水平对齐)。

      • vertical-align(垂直对齐)。

      • padding(内边距填充):10px

      • color(颜色)。

      • background-color(背景颜色)。

    5.6 元素尺寸样式

    • width(元素的宽度):auto | length | %

    • height(元素的高度):auto | length | %

    • max-width(元素的最大宽度):none | length | %

    • max-height(元素的最大高度):none | length | %

    • min-width(元素的最小宽度):length | %

    • min-height(元素的最小高度):length | %

    5.7 溢出和浮动样式

    • overflow(溢出)只工作于指定高度的块元素上,用于控制内容溢出元素框时显示的方式。

      • overflow:visible;:内容不会被修剪,会呈现在元素框之外。

      • overflow:hidden;:内容会被修剪,并且其余内容是不可见的。

      • overflow:scroll;:内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。

      • overflow:auto;:如果内容出现被修剪,则浏览器会显示滚动条以便查看其余的内容。

      • overflow:inherit;:从父元素继承 overflow 属性的值。

    • float(浮动)会使元素向左或向右移动,其周围的元素也会重新排列,通常是用于图像。

      float(浮动):none | left | right | inherit;

      • 在布局时,是水平方向浮动,元素只能左右移动而不能上下移动。

      • 一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。

      • 浮动元素之后的元素将围绕它(例如图像是左浮动,文本流将环绕在它右边)。

      • 如果把几个浮动的元素放到一起,且有空间的话,这几个浮动元素会彼此相邻。

    • clear(清除):不允许元素周围有浮动元素,即指定元素两侧不能出现浮动元素。

      clear(清除):none | left | right | both | inherit;


    6 颜色与单位

    6.1 颜色值

    .color-name { color: red; }           /* 颜色名称 */
    .hex-code { color: #FF0000; }         /* 十六进制 */
    .rgb-value { color: rgb(255, 0, 0); } /* RGB值 */
    .rgba-value { color: rgba(255, 0, 0, 0.5); } /* 带透明度 */

    6.2 单位

    .px-unit { font-size: 16px; }       /* 固定像素 */
    .em-unit { font-size: 1.5em; }      /* 相对于父元素 */
    .rem-unit { font-size: 1.2rem; }    /* 相对于根元素 */
    .percentage { width: 50%; }         /* 百分比 */
    .vw-vh { width: 50vw; }             /* 视口宽度的50% */

    7 关键特性

    7.1 优先级(Specificity)

    • 多个样式规则可叠加作用于同一元素,当多个样式规则冲突时,通过优先级规则(如特异性、来源顺序)确定最终应用的样式。CSS 样式有不同的优先级,优先级高的样式规则会覆盖优先级低的。

    • 优先级规则(从高到低):

      • !important(例外规则,强制覆盖)。应该尽量避免,因为这会破坏了样式表中的固有的级联规则 使得调试找 bug 变得更加困难了。

      • 行内样式(inline),在 HTML 元素的 style 属性中定义的样式。

      • ID 选择器(例如#example)。

      • 类选择器(例如.example),属性选择器(例如[type="radio"]),伪类(例如:hover)。

      • 元素标签选择器(例如h1),伪元素(例如::before)。

      • 继承样式(inheritance)。

      • 通配符选择器(*)。

    • 通配选择器(universal selector)(*)、关系选择器(combinator)(+>~" "||)和 否定伪类(negation pseudo-class)(:not())对优先级没有影响。但是,在 :not() 内部声明的选择器会影响优先级。

    • 优先级建议

      • 更好地利用 CSS 级联属性。

      • 使用更具体的规则。在你选择的元素之前,增加一个或多个其他元素,使选择器变得更加具体,并获得更高的优先级。

    7.2 继承(Inheritance)

    子元素自动继承父元素样式(如font-family),部分属性(如margin)不继承。

    • 当元素的一个继承属性(inherited property)没有指定值时,则取父元素的同属性的计算值。

    • 某些属性(如 colorfont-family)会从父元素自动继承到子元素。

    • 不可继承的属性(如 bordermargin)需要显式设置。

    7.3 层叠(Cascading)

    层叠是 CSS 的一个基本特征,它是一个定义了如何合并来自多个源的属性值的算法。它在 CSS 处于核心地位,CSS 的全称层叠样式表正是强调了这一点。

    • CSS 声明的来源

      • 用户代理样式:浏览器会有一个基本的样式表来给任何网页设置默认样式。

      • 页面作者样式:网页的作者可以定义文档的样式,这是最常见的样式表。大多数情况下此类型样式表会定义多个,它们构成网站的视觉和体验,即主题。

      • 读者用户样式:读者,作为浏览器的用户,可以使用自定义样式表定制使用体验。

    • 层叠顺序(从高到低

      假如层叠顺序相等,则使用哪个值取决于优先级(Specificity)。

      1. CSS 过渡 (CSS Transition)

      2. 用户代理样式的!important

      3. 读者用户样式的!important

      4. 页面作者样式的!important

      5. CSS 动画(CSS Animation)

      6. 页面作者样式

      7. 读者用户样式

      8. 用户代理样式

    • 重置样式

      当 CSS 对样式完成更改之后,也许会在某种情况下希望还原到一个已知样式上,这可能发生在动画、主题修改之类的情形中。CSS 属性 all能够快速地把(几乎)所有 CSS 属性设置到一个已知样式上。

    • 层叠层/级联层

      使用 @layer 声明了一个层叠层/级联层,同一层内的规则将级联在一起,这给予了开发者对层叠机制的更多控制。

      • 一个层叠层同样可以通过 @import来创建,规则存在于被引入的样式表内:@import (utilities.css) layer(utilities);

      • 可以创建带命名的层叠层,但不指定任何样式。例如,单一的命名层:@layer utilities;

      • 多个命名层也可以被同时定义。例如:@layer theme, layout, utilities;

        对于多个命名层的声明而言,如果同一声明在多个层叠层中被指定,最后一层中的将优先于其他层。因此,在上面的例子中,如果 theme 层和 utilities 层中存在冲突的规则,那么 utilities 层中的将优先被应用。

    • 层叠层的嵌套

      层叠层允许嵌套,例如:

    @layer framework {
        @layer layout {
            
        }
    }
    • 嵌套层的附加规则

      framework 层内部的 layout 层附加规则,只需用 . 连接这两层。

    @layer framework.layout {
        p {
            margin-block: 1rem;
        }
    }
    • 匿名层

      如果创建了一个层叠层但并未指定名字,则称为一个匿名层。除创建后无法向其添加规则外,该层和其他命名层功能一致。例如:

    @layer {
        p {
            margin-block: 1rem;
        }
    }

    7.4 格式化上下文(Formatting Context)

    • 行内格式化上下文(Inline Formatting Context),是一个网页的渲染结果的一部分。

      其中,各行内框(inline box)一个接一个地排列,其排列顺序根据书写模式(writing-mode)的设置来决定:

      • 对于水平书写模式,各个框从左边开始水平地排列。

      • 对于垂直书写模式,各个框从顶部开始水平地排列。

    • 区块格式化上下文(Block Formatting Context,BFC),是 Web 页面的可视 CSS 渲染的一部分,是块级盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

      区块格式化上下文(BFC)是一个独立的布局环境,BFC 内部的元素布局与外部互相不影响。BFC 有一套属于自己的规则

      • BFC 的区域不会与浮动 Box 重叠。

      • BFC 是一个独立容器,BFC 内部的元素布局与外部互相不影响

      • 计算 BFC 的高度时,浮动子元素也要参与计算。

      下列方式会创建区块格式化上下文:

      • 文档的根元素(<html>)。

      • 浮动元素(即 float值不为 none 的元素)。

      • 绝对定位元素(position值为 absolutefixed 的元素)。

      • 行内块元素(display值为 inline-block 的元素)。

      • 表格单元格(display值为 table-cell,HTML 表格单元格默认值)。

      • 表格标题(display 值为 table-caption,HTML 表格标题默认值)。

      • 匿名表格单元格元素(display值为 table(HTML 表格默认值)、table-row(表格行默认值)、table-row-group(表格体默认值)、table-header-group(表格头部默认值)、table-footer-group(表格尾部默认值)或 inline-table)。

      • overflow值不为 visibleclip 的块级元素。

      • display 值为 flow-root 的元素。

      • contain值为 layoutcontentpaint 的元素。

      • 弹性元素(display 值为 flexinline-flex 元素的直接子元素),如果它们本身既不是弹性网格,也不是表格容器。

      • 网格元素(display 值为 gridinline-grid 元素的直接子元素),如果它们本身既不是弹性网格,也不是表格容器。

      • 多列容器(column-countcolumn-width值不为 auto,且含有 column-count: 1 的元素)。

      • column-span 值为 all 的元素始终会创建一个新的格式化上下文,即使该元素没有包裹在一个多列容器中)

    • 格式化上下文影响布局,通常,我们会为定位和清除浮动创建新的 BFC,而不是更改布局,因为它将:

      • 包含内部浮动。

      • 排除外部浮动。

      • 阻止外边距重叠

    • 块级格式化上下文(BFC )的常用场景

      • 解决浮动元素使父级元素的高度坍塌问题。

      • 解决非浮动元素被浮动元素覆盖问题。

      • 解决盒子顶底外边距重合问题。

      • 两栏自适应布局,一侧是有固定宽度和浮动的固定栏,另一侧为开启 BFC 的不固定栏。

    7.5 变量(Custom Properties)

    定义和复用样式值(可复用的值):

    :root {
      --primary-color: #3498db;
    }
    button {
      background: var(--primary-color);
    }

    7.6 函数与运算

    1. 使用calc()

    2. 进行动态计算:

    width: calc(100% - 20px);

    7.7 逻辑属性(Logical Properties)

    基于书写模式(如左到右或右到左)自动适配布局:

    .text {
      margin-inline-start: 20px; /* 自动适配 LTR/RTL */
    }

    7.8 动画与过渡

    • 过渡(Transition)

      通过 transition ,平滑改变属性值,实现平滑动画效果,提升用户体验。使页面元素显示从一种样式转变到另一个的时候,无需使用 Flash 动画或 JavaScript 脚本。

      transition(过渡):property duration timing-function delay;

      可细分为:

      • transition-property(需要应用过渡的 CSS 属性名):`none | all | property

      • transition-duration(定义过渡效果需要花费的时间):time

      • transition-timing-function(规定过渡效果的时间曲线):linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier(n,n,n,n)

        • linear:匀速过渡效果。

        • ease:默认值,缓慢加速,然后缓慢减速的过渡效果。

        • ease-in:缓慢加速的过渡效果。

        • ease-out:缓慢减速的过渡效果。

        • ease-in-out:先缓慢加速,再缓慢减速的过渡效果。

        • cubic-bezier(n,n,n,n):自定义的贝塞尔曲线函数,通过四个值来定义曲线的控制点,分别对应 x1y1x2y2

      • transition-delay(过渡效果延迟开始的时间,默认是0):time

    .button {
        background-color: blue;
        transition: background-color 0.3s ease; /* 过渡 */
    }
    .button:hover { /* 悬停时颜色渐变 */
        background-color: red; 
    }
    
    .box {
        transition: transform 0.3s ease; /* 过渡 */
    }
    .box:hover { /* 悬停时颜色渐变 */
        transform: scale(1.1);
    }
    • 动画(Animation)

      通过 @keyframes 定义复杂动画,提升用户体验。CSS 动画可以取代许多网页动画图像、Flash 动画和 JavaScript 实现的效果。

      animation(动画):name duration timing-function delay iteration-count direction fill-mode play-state;

      • animation-name(指定要绑定到选择器的关键帧的名称):keyframename | none

      • animation-duration(指定动画需要多少秒或毫秒完成):time

      • animation-timing-function(设置动画将如何完成一个周期):linear | ease | ease-in | ease-out | ease-in-out | steps(int,start|end) | cubic-bezier(n,n,n,n)

        • linear:动画从头到尾的速度是相同的。

        • ease:默认。动画以低速开始,然后加快,在结束前变慢。

        • ease-in:动画以低速开始。

        • ease-out:动画以低速结束。

        • ease-in-out:动画以低速开始和结束。

        • steps(int,start|end):指定了时间函数中的间隔数量(步长)。

          int 指定函数的间隔数,该参数是一个正整数(大于 0)。

          start|end 表示动画是从时间段的开头连续(start 直接开始)还是末尾连续(end 戛然而止)。

        • cubic-bezier(n,n,n,n):在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。

      • animation-delay(设置动画在启动前的延迟时间):time

      • animation-iteration-count(定义动画的播放次数或无限次):n | infinite

      • animation-direction(指定是否应该轮流反向播放动画。):normal | reverse | alternate | alternate-reverse | initial | inherit

        • normal:默认值。动画按正常播放。

        • reverse:动画反向播放。

        • alternate:动画在奇数次(1、3、5…)正向播放,在偶数次(2、4、6…)反向播放。

        • alternate-reverse:动画在奇数次(1、3、5…)反向播放,在偶数次(2、4、6…)正向播放。

        • initial:设置该属性为它的默认值。

        • inherit:从父元素继承该属性。

      • animation-fill-mode(当动画不播放时、完成时,或有延迟未开始播放时,要应用到元素的样式):none | forwards | backwards | both | initial | inherit

        • none:默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。

        • forwards:在动画结束后(由 animation-iteration-count 决定),动画将应用该属性值。

        • backwards:动画将应用在 animation-delay 定义期间启动动画的第一次迭代的关键帧中定义的属性值。

        • both:动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性。

        • initial:设置该属性为它的默认值。

        • inherit:从父元素继承该属性。

      • animation-play-state(指定动画是否正在运行或已暂停):paused | running

    /* 关键帧动画 */
    @keyframes fadeIn {
        from { opacity: 0; }
        to { opacity: 1; }
    }
    .element {
        animation: fadeIn 2s forwards; 
    }
    
    @keyframes slide {
        0% {
            transform: translateX(0); 
        }
        100% {
            transform: translateX(100px); 
        }
    }
    
    .animate {
        animation: slide 2s infinite;
    }

    7.9 CSS 的外边距折叠

    区块的上下外边距有时会合并(折叠)为单个边距,其大小为两个边距中的最大值(或如果它们相等,则仅为其中一个),这种行为称为外边距折叠

    注意:有设定浮动绝对定位的元素不会发生外边距折叠。

    有三种情况会形成外边距折叠:

    • 相邻的兄弟元素

      相邻的同级元素之间的外边距会被折叠(除非后面的元素需要清除之前的浮动)。

    • 没有内容将父元素和后代元素分开

      如果没有设定边框(border)、内边距(padding)、行级(inline)内容,也没有创建区块格式化上下文间隙来分隔块级元素的上边距 margin-top 与其内一个或多个子代块级元素的上边距 margin-top

      或者没有设定边框、内边距、行级内容、高度 height 或最小高度 min-height 来分隔块级元素的下边距 margin-bottom 与其内部的一个或多个后代后代块元素的下边距 margin-bottom,则会出现这些外边距的折叠,重叠部分最终会溢出到父代元素的外面。

    • 空的区块

      如果块级元素没有设定边框、内边距、行级内容、高度height、最小高度min-height来分隔块级元素的上边距 margin-top 及其下边距 margin-bottom,则会出现其上下外边距的折叠。

    7.10 现代 CSS 新特性

    • 滚动条样式scrollbar-gutterscrollbar-color

    • Ruby 排版ruby-alignruby-position(用于注音文本)。

    • 锚点定位(Anchor Positioning):简化动态定位(如弹出框)。

    • 嵌套(Nesting):支持类似 Sass 的嵌套语法(需浏览器支持)。


    8 现代 CSS 技术

    8.1 CSS 预处理器

    如 Sass/Less,支持嵌套、变量、混合宏:

    $primary: #3498db;
    .button {
      background: $primary;
      &:hover { background: darken($primary, 10%); }
    }

    8.2 CSS 框架

    Bootstrap、Tailwind CSS 等提供预设组件与工具类。

    8.3 CSS-in-JS

    在 JavaScript 中编写 CSS(如Styled Components)。


    9 学习实践建议

    • 使用外部样式表:提升代码复用率与可维护性。

    • 避免滥用!important:防止优先级混乱。

    • 采用CSS预处理器:如 Sass/Less,支持变量、嵌套等高级功能。

    • 命名规范:使用BEM(Block__Element–Modifier)提高可维护性。

    • 性能优化

      • 减少选择器复杂度(避免div > ul > li

      • 使用 transform/opacity 触发GPU加速动画

    • 浏览器兼容性:通过 Autoprefixer 等工具自动添加厂商前缀(如-webkit-)。


    10 学习资源


    11 总结

    CSS 是前端开发的基石之一,与 HTML(结构)、JavaScript(行为)并称网页三剑客。

    CSS 作为网页设计的核心语言,通过简洁的语法实现对网页样式的精细控制。CSS 通过层叠、继承等机制实现样式与结构的分离,显著提升开发效率与用户体验。从基础的文本美化到复杂的响应式布局,其功能覆盖现代网页开发的全场景。掌握选择器、盒模型、布局技术等要点,是构建高性能、可维护网站的关键。

    CSS 通过推动响应式设计与动态效果的普及,不断演进(如 CSS3 模块化、变量 --var()、容器查询 @container),持续提升开发者对样式的底层控制能力,是构建现代 Web 界面的基石,是构建现代 Web 界面不可或缺的工具。


    内容目录


    迪欧IT——dio智能科技

  • HTML学习

    HTML5学习


    <u> 作者:jason-wrj </u>

    <u> 分类:服务器/网络服务器/HTML </u>

    <u> 标签:Server, Web Server, HTML </u>

    <u> 更多:www.dioit.com——迪欧IT——dio智能科技 </u>

    <u> 更多:www.dioit.com——dioIT——嵌入式电子智能技术 </u>


    1 HTML简介

    1.1 简介

    HTML的英文全称是(Hyper Text Markup Language),中文名称是超文本标记语言。HTML 是一种用于定义网页结构和内容的标记语言,而非编程语言,因为HTML 缺乏逻辑处理能力,不包含变量、循环等逻辑控制。

    HTML 是通过各种元素的标签(TAG)进行“标记”(Markup),以此来描述网页内容,在 Web 浏览器中显示。是万维网的通用标记语言。HTML 是万维网的核心技术之一,也是网页开发的基础。

    所有网页均基于 HTML 构建,浏览器通过解析 HTML 标签并渲染为可视化页面。

    1.2 特性

    • 超文本特性

      支持超链接(Hyperlink),实现文档间的跳转与资源关联。

    • 平台无关性

      可在(Windows、macOS等)任何操作系统的浏览器中解析显示。

    • 简单易学

      语法直白,标签易学。通过使用各种标签定义页面元素,描述页面结构(文档类型、根标签、头部、主体、标题、导航栏、侧边栏、段落、页脚)。

    • 可扩展性

      大多数 HTML 元素的标签可拥有属性,标签通过属性可以提供额外信息,增强元素功能。例如:

      • <a href="https://example.com">中的href指定链接地址。

      • <img src="image.jpg" alt="示例图片">中的srcalt指定源路径和替代文本。

      • <div class="container" id="main">中的classid用于样式选择和脚本操作。

    1.3 基本结构框架

    HTML 文档是由各种元素的标签嵌套而组成,所有 HTML 文档需包含以下基本框架:

    <!DOCTYPE html> <!-- 文档类型声明 DOCTYPE 标签:声明文档类型为HTML5标准 -->
    
    <html lang="zh-CN"> <!-- 根元素 html 标签,语言 lang 属性:定义语言为中文 -->
    
    <head> <!-- 头部元素 head 标签:定义元数据(字符集编码、标签页标题) -->
      <meta charset="UTF-8" /> <!-- 元数据信息 meta 标签,字符集 charset 属性:定义字符集编码为UTF-8 -->
      <meta name="description" content="网页描述" />
      <meta name="keywords" content="网页关键词" />
      <meta name="viewport" content="width=device-width"> <!-- 视口元素 viewport 可以确保页面以设备的视口宽度进行渲染,避免移动端浏览器以比视口更宽的宽度渲染内容,导致内容缩小。-->
      <title>标签页标题</title> <!-- 标题 title 标签:定义显示在浏览器标签页的标题 -->
      <base target="_blank" href="http://www.example.com/" /> <!-- 文档根 URL 元素:定义文档中相对 URL 地址的基础 URL -->
      <link rel="shortcut icon" href="favicon.ico" /> <!-- 连接 link 标签:设置网站图标 -->
      <link rel="alternate icon" type="image/svg+xml" href="favicon.svg" /> <!-- 连接 link 标签:设置网站图标 -->
      <link rel="stylesheet" type="text/css" href="MyStyle.css"> <!-- 连接 link 标签:引入外部 CSS 层叠样式表 -->
      <script type="text/JavaScript" src="MyScript.js" > <!-- 脚本 script 标签:引入外部 JavaScript 脚本 -->
    </head>
    
    <body> <!-- 主体元素 body 标签:包含所有用户可见元素(文本、图片、表单等) -->
      <h1>可见内容:主标题</h1> <!-- 一级标题 h1 标签:属于页面可见内容 -->
      <p>可见内容:段落文本</p> <!-- 段落 p 标签:属于页面可见内容 -->
      <img />
      <a> </a>
      <div> </div>
      <span> </span>
    </body>
    
    </html>
    1. DOCTYPE 声明: 使用 <!DOCTYPE html> 声明文档类型,通知浏览器这是一个 HTML5 标准的网页文档,为文档内容的正确呈现和验证奠定基础,使浏览器能按照标准模式来解析和显示页面。

    2. 根元素标签: 使用 <html></html> 包含整个页面(除声明文档类型标签之外)的其它所有元素标签,是其它所有 HTML 元素的根元素标签,其他 HTML 元素标签都应该嵌套在这个根元素标签内部。通过 lang 属性定义语言(如中文用 zh-CN )。

    3. 头部元素: 使用 <head></head> 包含网页文档的元数据,如字符编码声明、网页描述、网页关键词、标签页标题、 CSS 样式链接、JavaScript 脚本引用等信息,这些内容不会在网页的正文中显示。 可以添加在头部区域内的元素标签有:<meta><title><link><style><script><noscript><base>

      • <meta /> 元素标签,可以用于指定网页字符集、网页关键词、网页描述等元数据,这些元数据不会显示在页面上,但会被浏览器解析,关键词和描述有助于提升可读性、可访问性与 SEO 优化。例如:<meta name="keywords" content="HTML, CSS, JavaScript">

      • <title> </title> 元素标签,用于描述标签页的标题,会显示在浏览器的标签页。

      • <base /> 元素标签,用于定义文档中相对 URL 地址的基础 URL。放置在所有需要包含 href 属性的元素的最前面,且一份HTML文档中只能有一个 <base> 元素,放在 <link /> 元素或 <a> </a> 元素最前面。

      • <link /> 元素标签,规定了当前文档与某个外部资源的关系,常用于链接到外部 CSS 层叠样式表。也可以被用来创建站点图标,或加载外部资源。

    4. 主体元素: 使用 <body></body> 承载用户可见的网页主体内容部分,包括文本、图像、链接、列表、表格、音频、视频、表单等各种可见元素都放置在这个标签内,用于向用户展示实际的网页内容。

    5. 注释: 使用 <!----> 添加HTML代码注释。

    1.4 与 CSS 层叠样式表协同

    • 通过在 HTML 元素标签内直接使用 "style" 属性,可添加行内样式,进而控制网页的外观和布局。

    <p style="color:blue;margin-left:20px;">这是一个内联style样式属性的段落。</p>
    • 通过在 HTML 头部 <head> 元素标签区域内使用 <style> 标签,可添加内部层叠样式表,进而控制网页的外观和布局。

    <head>
        <style type="text/css"> 
            body { background-color: lightblue; } 
            p {color: red;}
        </style>
    </head>
    • 通过在 HTML 头部 <head> 元素标签区域内,使用 <link> 标签,可引用外部 CSS 层叠样式表文件,进而控制网页的外观和布局。

    <head>
        <link rel="stylesheet" type="text/css" href="MyStyle.css">
    </head>

    1.5 与 JavaScript 脚本协同

    • JavaScript 常用于图片操作、表单验证以及内容动态更新。通过使用 <script> 标签定义客户端脚本,可实现网页交互功能。<script> 标签既可直接包含脚本语句,也可通过 "src" 属性指向外部脚本文件。直接包含脚本语句,如下所示:

    <p>
        <script> alert("欢迎!"); </script>
    </p>
    • JavaScript 能够直接写入 HTML 输出流中:

    <script>
        document.write("<h1>一级标题</h1>");
        document.write("<p>文本段落。</p>");
    </script>
    • 通过 <noscript></noscript> 定义浏览器不支持脚本时,所需要输出的文本内容。

    <script>
        document.write("Hello World!")
    </script>
    <noscript>抱歉,你的浏览器不支持 JavaScript!</noscript>
    • 通过在 HTML 头部 <head> 元素标签区域内,使用 <script></script> 标签添加外部 JavaScript 脚本文件。

    <head>
      <script type="text/JavaScript" src="MyScript.js" > <!-- 脚本 script 标签:引入外部 JavaScript 脚本 -->
    </head>

    2 HTML语法

    2.1 元素标签说明

    HTML元素(Element)包含标签(Tag)和内容(Content)。

    HTML 各元素(Element)的标签(Tag)是由尖括号包围的关键词,比如标题 <h1> 、段落 <p>。HTML 标签可分为双标签单标签

    双标签是成对出现的,比如 <head></head>。标签对中的第一个标签是开始标签,第二个标签是结束标签双标签可以嵌套包含其它双标签或单标签。

    单标签标签不是成对的,比如 <img /><br /><hr />。这种只有开始标签,没有结束标签。单标签没有结束标签,因此建议标签编写时,在右侧右尖括号 > 前面增加反斜杠 / 符号,例如 <br > 编写为 <br />,即在开始标签中添加反斜杠,是关闭单标签的正确方法。单标签不能嵌套包含其它标签。

    2.2 标签语法规则

    属于双标签的 HTML 元素可以嵌套包含其他 HTML 元素,HTML 文档是由相互嵌套的 HTML 元素标签构成。且要求双标签的每一对开始标签(Opening tag)和结束标签(Closing tag)必须正确闭合,(如 <div> <p> 内容 Content </p> </div>),禁止出现双标签不成对的交叉嵌套

    例如 <html></html> 元素定义了整个HTML文档,内部包含了 <body></body> 元素,而 <body></body> 元素可以包含 <p></p> 元素。

    • 行内元素与块级元素

      • HTML内联元素在浏览器显示时,后面的元素不会以新行开始。例如以下元素标签: <span><b><td><a><img>

      • HTML块级元素在浏览器显示时,默认占用一整行,后面的元素会以新行来开始和结束。例如以下元素标签: <div><h1><p><ul><ol><table>

    • 元素的属性格式

      大多数 HTML 元素标签拥有属性,属性总是 name="value" 这样的(名称/值对)形式写在开始标签内,name 是属性的名称,value 是属性的值。属性值用引号包围(如 <img src="image.jpg" alt="描述">)。

      属性值被包围在引号内。双引号是最常用的,不过使用单引号也可以使用。在某些个别的情况下,比如属性值本身就含有双引号,那么必须使用单引号。又比如属性值本身就含有单引号,那么必须使用双引号

    • 代码大小写规范

      HTML 标签里的元素名不区分大小写,但推荐使用小写,在未来 (X)HTML 版本中强制使用小写。

    2.3 元素标签的常用属性

    HTML 元素标签通过属性值的设置,可以提供需要额外添加的信息,用于定义元素的内容、样式、行为或其他特性,增强元素功能。

    下面所列出的属性,适用于大多数 HTML 元素。

    • 适用所有元素的属性

      • 全局属性

        idclassstyletitle

      • 自定义属性

        data-*

    • 适用特定元素的属性

      hrefsrcalttypevaluecheckedplaceholdertarget

    • 事件处理属性

      onclickonmouseoveronchange

    • 布尔属性

      disabledreadonlyrequiredautoplay

    属性的详细说明,如下表所示:

    属性名 适用元素 说明
    class 所有元素 为元素指定一个或多个类名,用于 CSS 或 JavaScript 选择。
    data-* 所有元素 用于存储自定义数据,通常通过 JavaScript 访问。
    id 所有元素 为元素指定唯一的标识符。
    onclick 所有元素 当用户点击元素时触发 JavaScript 事件。
    onmouseover 所有元素 当用户将鼠标悬停在元素上时触发 JavaScript 事件。
    style 所有元素 用于直接在元素上应用 CSS 样式。
    title 所有元素 为元素提供额外的提示信息,通常在鼠标悬停时显示。
    target <a>, <form> 指定链接或表单提交的目标窗口或框架(如 _blank 表示新标签页)。
    href <a>, <link> 指定链接的目标 URL。
    autoplay <audio>, <video> 自动播放媒体。
    alt <img> 为图像提供替代文本,当图像无法显示时显示。
    src <img>, <script>, <iframe> 指定外部资源(如图片、脚本、框架)的 URL。
    checked <input type="checkbox">, <input type="radio"> 指定复选框或单选按钮是否被选中。
    type <input>, <button> 指定输入控件的类型(如 text, password, checkbox 等)。
    value <input>, <button>, <option> 指定元素的初始值。
    placeholder <input>, <textarea> 在输入框中显示提示文本。
    disabled 表单元素 禁用元素,使其不可交互。
    onchange 表单元素 当元素的值发生变化时触发 JavaScript 事件。
    readonly 表单元素 使输入框只读。
    required 表单元素 指定输入字段为必填项。

    2.4 基本框架标签

    1. 文档类型标签

      • 使用 <!DOCTYPE> 定义文档类型。

    2. HTML 根元素标签

      • 使用 <html 属性> 内容 </html> 定义一个 HTML 文档。

    3. HTML 头部元素标签

      • 使用 <head> 内容 </head> 定义关于文档的头部信息。

      • 使用 <title> 内容 </title> 为文档定义一个标题。

      • 使用 <meta /> 定义关于 HTML 文档的元数据信息、关键词、描述。

      • 使用 <base /> 定义页面中所有链接的默认地址或默认目标。默认链接地址定义后,其它链接可以用相对地址,即相对于默认链接的地址。

      • 使用 <link /> 定义一个文档和外部资源之间的关系,可用于链接外部层叠样式表。

      • 使用 <style 属性> 内容 </style> 定义HTML文档的样式文件。

      • 使用 <script 属性> 内容 </script> 定义客户端的脚本文件。

    4. HTML 主体元素标签

      • 使用 <body> 内容 </body> 定义 HTML 文档的可见内容主体。

      • 使用 <h1> 内容 </h1><h2> 内容 </h2><h3> 内容 </h3><h4> 内容 </h4><h5> 内容 </h5><h6> 内容 </h6> 定义网页的内容标题(Heading)。在标题h1~h6(Header 1 ~ Header 6)中,<h1> </h1> 是最高级标题,字号最大,<h2> </h2> 次之,依此类推,<h6> </h6> 是最低级标题,字号最小。

      • 使用 <p 属性> 内容 </p> 创建一个文本段落(Paragraph),<p> </p>块级元素标签,块级元素默认占用一整行,会在段落前后添加一些默认的空白距离,使文本内容更具可读性。创建文本段落中,如果有连续的空格或空行都会被算作一个空格。

      • 使用 <hgroup> H标题 P副标题/关联内容 <hgroup> 创建文档标题和与标题相关联的内容,将一个 <h1>–<h6> 元素与一个或多个 <p> 元素组合在一起。

      • 使用 <br /> 定义简单的折行(Break),在文本中强制换行。不添加额外的空白距离,常用于诗句、地址等需要换行的地方。

      • 使用 <hr /> 定义水平线(Horizontal Rule)。

    5. 注释标签

      • 使用 <!-- 注释内容 --> 添加代码注释。

    2.5 块级布局元素标签

    1. 分隔符区块容器分组元素标签

      使用 <div 属性> 内容 </div> (Division),定义 HTML 页面中的一个分隔区块。区块容器分组标签,属于块级元素,且默认占用一整行<div> </div> 主要是用于组合其他 HTML 元素的块级容器分组标签,以便通过CSS 层叠样式表来对这些组合元素进行格式化。

    2. 语义化区块容器分组元素标签

      推荐优先使用下面所列出的各种语义化标签替代 <div> </div> 标签定义区块分组内容,以便提升可读性、可访问性与 SEO 优化。区块容器分组标签,属于块级元素,且默认占用一整行。语义化标签如下所示:

    • 使用 <header 属性> 内容 <header> ,定义文档页面或者文档的一部分区域的顶部页眉内容,该元素标签应该作为介绍内容或者导航链接栏的容器。 注意<header> 标签不能被放在 <footer><address> 或者另一个 <header> 元素内部。

    • 使用 <nav 属性> 内容 </nav> ,定义页面的导航链接(navigation)。

    • 使用 <main 属性> 内容 </main> ,定义文档的主体部分。在一个文档中,不能出现多个<main>元素。

    • 使用 <footer 属性> 内容 </footer> ,定义文档页面或者文档的最近的祖先区域的底部页脚内容。一般情况下,该元素用于包含文档创作者的姓名、文档的版权信息、使用条款的链接、联系信息等。联系信息,可以在 <footer> 元素内使用 <address> 标签。

      • 使用 <address> 内容 </address> ,定义文档作者的联系信息。

    • 使用 <article 属性> 内容 </article> ,定义页面的文章内容,该元素标签的内容本身必须是有意义的且必须是独立于文档的其余部分。表示文档、页面、应用或网站中具有独立分发或复用意义的自包含内容块。

    • 使用 <aside 属性> 内容 </aside> ,表示文档中内容仅与主内容间接相关的部分,页面所处内容之外的内容,该元素标签的内容应该与附近的内容相关,通常以侧边栏或提示框的形式呈现。

    • 使用 <section 属性> 内容 </section> ,定义页面的某个区域、内容区块。比如章节、头部、底部,没有更具体的语义元素来表示,可包含(Heading)标题元素。

    • 使用 <details 属性> 内容 </details> ,定义页面的补充细节,用户可见的内容或者隐藏的需求。与 <summary> 标签配合使用可以为 <details> 元素定义标题。标题是可见的,用户点击标题时,才会显示出 <details> 元素的具体内容。<details> 元素的内容默认对用户是不可见的,除非设置了open属性。

      • 使用 <summary> 标题 </summary> ,嵌套在 <details> </details> 里面,<summary> 标签为 <details> 元素定义一个可见的标题,当点击标题时才会显示出详细信息。 注意<summary> 元素标签应该是 <details> 元素的第一个子元素标签。

    • 使用 <dialog 属性> 内容 </dialog> ,定义一个对话框或者窗口。一般设置open属性,如 <dialog open="open">会话窗口内容</dialog>

    2.6 行内布局元素标签

    使用 <span 属性> 内容 </span> ,对文档中的行内元素进行组合,该标签可以将文本的一部分或者文档的一部分独立出来。

    <span> 应用样式时,才会产生视觉上的变化。如果不对 <span> 应用样式,那么 <span> 元素中的文本与其他文本不会任何视觉上的差异。

    <span> 元素包含的文本,可以使用 CSS 对它定义样式,或者使用 JavaScript 对它进行操作。

    例如:<p>背景是<span style="color:red">红色</span> 的。</p>

    2.7 链接元素标签

    • 使用 <a 属性> 内容 </a> ,定义一个超链接(anchor),用于创建从一个网页到另一个网页资源的链接,包括其他网页、图片、文件等。该元素标签的格式为 <a href="url">链接文本</a>。其主要属性有:

      • href 属性,是最重要的属性,用于指定链接的的目标 URL 地址,可以是绝对路径或相对路径,建议在子目录 subdirectory 后面添加斜杠符号 / 。例如:<a href="https://example.com/subdirectory/">访问示例网站</a>

      • target 属性,用于设置在何处打开目标 URL。常用值有 _self(在当前窗口打开,也是默认值)、_blank(在新窗口或新标签页中打开)、_parent(在父框架中打开链接)、_top(在整个窗口中打开链接,取消任何框架)。例如:<a href="https://example.com" target="_blank">在新窗口打开示例网站</a>

      • download 属性,用于下载链接目标而不是导航到该目标。如果指定文件名,浏览器会提示下载并保存为指定的文件名。例如:<a href="/document_file.pdf" download="file_name.pdf">下载文件</a>

      • id 属性,用于描点链接。例如:<a id="tips">提示部分</a> <a href="#tips">跳到提示部分</a>

    • 使用 <link 属性 /> ,定义文档与外部资源的关系,最常见的用途是链接外部样式表,且应存在于 <head> </head> 元素内部。

    2.8 图像元素标签

    • 使用 <img 属性 /> (image),用于在网页中嵌入图像。格式为 <img src="图片地址" alt="替代文本" width="128" height="128">。其主要属性有:

      • src 属性:指定图像的源路径,可以是本地路径或网络路径。例如:<img border="1" src="image.jpg" alt="描述图像的替代文本" width="256" height="512">

      • border 属性:为图像定义外边框粗细。

      • alt 属性:为图像提供替代文本,当图像无法显示时,浏览器会显示这个替代文本,对搜索引擎和屏幕阅读器也很重要。

      • widthheight 属性:设置图像的宽度和高度,单位可以是像素或百分比。养成指定图像高度和宽度的习惯,避免加载页面时可能会破坏HTML页面的整体布局。

    • 使用 <picture> <source /> <img /> </picture> 包含零或多个 <source> 元素和一个 <img> 元素来为不同的显示/设备场景提供图像版本。浏览器会选择最匹配的子 <source> 元素,如果没有匹配的,就选择 <img> 元素的 src 属性中的 URL。

    • 使用 <map 属性> 内容 </map> ,定义图像映射,图像映射指的是带有可点击区域的图像。常添加id和name属性。

      • 使用 <area /> ,定义图像映射内部的区域,该标签始终嵌套在 <map> 元素标签内部。

    • 使用 <canvas 属性> 内容 </canvas> ,通过 JavaScript 脚本(Canvas API 或 WebGL API)绘制图形及图形动画(比如图表和其他图像)。该元素标签只是图形容器,必须使用脚本来绘制图形。

    • 使用 <figure 属性> 内容 </figure> ,定义独立的流内容(图像、图表、照片、代码),对其它元素进行组合。<figure> 元素的内容应该与主内容相关,同时元素的位置相对于主内容是独立的。即使被删除,也不应对文档流产生影响。

      • 使用 <figcaption> figure标题 </figcaption> ,定义一个 <figure> 元素标题。<figcaption> 元素应该放置在 <figure> 元素的第一个或最后一个子元素的位置。

    2.9 媒体元素标签

    • 使用 <audio 属性> 内容 </audio> (音频),定义声音,比如音乐或其他音频流。该元素标签支持MP3、Wav、Ogg格式的音频。<audio> 元素标签,除全局属性外,还支持的属性有:

      • accesskey 属性:用于设置访问元素的键盘快捷键。

      • contenteditable 属性:用于规定是否可编辑元素的内容。

      • contextmenu 属性:用于指定一个元素的上下文菜单。当用户击该元素,出现上下文菜单。

      • dir 属性:用于设置元素中内容的文本方向。

      • draggable 属性:用于指定某个元素是否可以拖动。

      • dropzone 属性:用于指定是否将数据复制,移动,或链接,或删除。

      • hidden 属性:用于属性规定对元素进行隐藏。

      • lang 属性:用于设置元素中内容的语言代码。

      • spellcheck 属性:用于检测元素是否拼写错误。

      • tabindex 属性:用于设置元素的 Tab 键控制次序。

      • translate 属性:用于指定是否一个元素的值在页面载入时是否需要翻译。

    • 使用 <video 属性> 内容 </video> (视频),定义一个视频,比如电影片段等视频流。该元素标签支持MP4、WebM、Ogg格式的视频。<video> 元素标签,除全局属性外,还支持的属性有:

      • autoplay 属性:出现该属性时,则视频在就绪后马上播放。

      • controls 属性:出现该属性时,则向用户显示控件,比如播放按钮。

      • width 属性:用于设置视频播放器的宽度pixels。

      • height 属性:用于设置视频播放器的高度pixels。

      • loop 属性:出现该属性时,则当媒介文件完成播放后再次开始播放。

      • muted 属性:出现该属性时,视频的音频输出为静音。

      • poster 属性:用于设置视频正在下载时显示的图像URL,直到用户点击播放按钮。

      • preload 属性:出现该属性时,则视频在页面加载时进行加载,并预备播放。

      • src 属性:用于设置要播放的视频的 URL。

    • 使用 <source 属性> 内容 </source> ,定义media元素 (<video><audio>)的媒体资源。

    • 使用 <track 属性> 内容 </track> ,为媒体(<video><audio>)元素定义外部文本轨道。

    2.10 文本元素标签

    • <b></b> 之间用于定义粗体字(Bold)。

    • <em></em> 之间用于定义着重文字_斜体字(Emphasized)。

    • <i></i> 之间用于定义斜体字(Italic)。

    • <small></small> 之间用于定义小号字(small)。

    • <strong></strong> 之间用于定义加重语气_粗体字(strong)。

    • <sub></sub> 之间用于定义下标字(Subscripted)。

    • <sup></sup> 之间用于定义上标字(Superscripted)。

    • <ins></ins> 之间用于定义插入字(Inserted)。

    • <del></del> 之间用于定义删除字(Deleted)。

    • <mark></mark> 之间用于定义带有记号的文本。

    • <meter></meter> 之间用于定义已知最大和最小值的标量值或分数值

    • <progress></progress> 之间用于定义运行中的任务进度(进程)

    • <rp></rp> 之间用于定义不支持 ruby 元素的浏览器所显示的内容。

    • <rt></rt> 之间用于定义字符(中文注音或字符)的解释或发音

    • <ruby></ruby> 之间定义 ruby 注释(中文注音或字符)。

    • <time></time> 之间定义一个日期/时间

    • <data> 和 </data> 之间将一个指定内容和机器可读的翻译联系在一起。但如果内容是与时间或者日期相关的,则一定要使用 <time>

    • <wbr><wbr> 之间规定在文本中的何处适合添加换行符。

    • <s></s> 之间使用删除线来渲染文本。

    2.11 列表元素标签

    • <ul></ul> (Unordered List)用于创建无序列表,列表项用 <li></li> ,列表项前通常以圆点符号作为标记。例如:

    <ul>    <!-- Unordered List -->
      <li>苹果</li> <!--  List Item -->
      <li>橙子</li>
      <li>香蕉</li>
    </ul>
    • <ol></ol> (Ordered List)用于创建有序列表,列表项用 <li></li> ,列表项前会自动添加数字编号。例如:

    <ol>    <!-- Ordered List -->
      <li>第一步</li>
      <li>第二步</li>
      <li>第三步</li>
    </ol>
    • <dl></dl> (Definition List)用于创建自定义列表,每个自定义列表项<dt></dt> ,而每个自定义列表项的定义描述说明<dd></dd>

    <dl> <!-- Definition List -->
    <dt>自定义列表项a</dt> <!-- Definition Term -->
    <dd>自定义列表项a的定义描述说明</dd> <!-- Definition Description -->
    <dt>自定义列表项b</dt>
    <dd>自定义列表项b的定义描述说明</dd>
    </dl>
    • <menu></menu> 用于定义菜单列表。<menu> 元素在 HTML 规范中被描述为 <ul> 的语义替代,但浏览器视其与 <ul> 没有区别。

    • <command></command> 定义用户可能调用的命令(比如单选按钮、复选框或按钮)。

    2.12 表格元素标签

    表格标签包含 <table> (表格)、 <caption> (标题)、 <tr> (行)、 <th> (表头)、 <td>(单元格)、 <thead> (表头)、 <tbody> (主体)、 <tfoot> (表注脚注)、 <col> (列)、 <colgroup> (列组)。

    表格可以嵌套包含另一个表格元素或列表元素。

    • <table> (表格):表格标签,用于创建表格来组织和展示数据,如产品列表、时间表等。例如:

    <table width="80%" border="1" cellpadding="5" cellspacing="5" align="center"> 
    <!-- width用于定义表格整体宽度占比 -->
    <!-- border用于定义边框粗细 -->
    <!-- cellpadding用于定义单元格边距,增加单元格内容与其边框之间的距离。 -->
    <!-- cellspacing用于定义单元格间距,增加单元格与其它单元格之间的距离。 -->
    <!-- align用于定义单元格对齐方式 -->
    <caption>表格标题</caption>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th height="60" >职业</th> <!-- height用于定义单元格高度 -->
            <th colspan="2">备注1</th> <!-- colspan用于定义单元格横跨n列 -->
            <th rowspan="3">备注2</th> <!-- rowspan用于定义单元格竖跨n行 -->
        </tr>
        <tr>
            <td>李四</td>
            <td>27</td>
            <td>程序员</td>
            <td>备注描述</td>
        </tr>
        <tr>
            <td>张三</td>
            <td>28</td>
            <td>设计师</td>
            <td>备注描述</td>
        </tr>
    </table>
    • <caption> </caption> :用于定义表格的标题。

    • <colgroup> </colgroup> (列组):用于定义表格中供格式化的列组。

      • <col /> (列):用于定义表格中一个或多个列的属性值。

    • <thead> </thead> (表头):用于定义义表格中的表头内容。

    • <tbody> </tbody> (主体):用于定义表格中的主体内容。

    • <tfoot> </tfoot> (表注脚注):用于定义表格中的表注内容(脚注)。

    • <tr> </tr> (table row行):表格行标签,用于定义表格中的一行,一个表格可以包含多行。

    • <th> </th> (table header表头):表格表头单元格标签,用于定义表格的表头内容,通常会以加粗、居中等样式显示,用于描述表格列的标题。

    • <td> </td> (table data单元格):表格数据单元格标签,用于定义表格中的单元格内容,放置实际的数据信息。

    2.13 表单元素标签

    表单标签用于用户输入,包含 <form><label><input><select><option><textarea><fieldset><legend><optgroup><button><datalist><keygen><output>等。

    <form action="demo_form.php" method="post"> <!-- method="get" -->
        <fieldset>  
        <legend>information:</legend>
            <input type="text" name="email" size="40" maxlength="50">
            <input type="password"> <br>
    
            <input type="checkbox" name="checkbox[]" value="A" > A <br>
            <input type="checkbox" name="checkbox[]" value="B" checked="checked"> B <br>
    
            <input type="radio" name="sex" value="male"> Male <br>
            <input type="radio" name="sex" value="female" checked="checked"> Female <br>
    
            <input type="submit" value="Send">
    
            <input type="reset">
    
            <input type="hidden">
            <select>
                <option>香蕉</option>
                <option selected="selected">樱桃</option>
                <option>苹果</option>
            </select>
    
            <textarea name="comment" rows="10" cols="20"></textarea>  
        </fieldset>
    </form>
    • <form> :表单标签,用于创建用户输入数据的表单,以便收集用户信息并提交到服务器进行处理。其主要属性有:

      • action :指定表单提交的服务器目标 URL 地址,即表单数据将被发送到哪里进行处理。

      • method :指定表单提交的方法,常用值为 get(将表单数据附加在 URL 后面进行提交)和 post(将表单数据放在请求体中进行提交)。

    • <fieldset> :用于定义一组相关的表单元素,并使用外框包含起来,也包括 <label> 元素。

    • <legend> :用于定义 <fieldset> 元素的标题。

    • <label> :用于为 <form> 表单元素添加标签,提高可读性。

    • <input> :输入框标签,用于创建各种类型的输入框,如文本框、密码框、单选按钮、复选框等。其主要属性有:

      • type :指定输入框的类型,如 radio(单选按钮)、 checkbox(复选框)、 button(按钮)、 submit(提交按钮)、 reset(f复位按钮)、 search(搜索按钮)、 text(文本框)、 password(密码框)、 number(数字框)、 tel(电话号码框)、 email(邮件地址框)、 url(网页地址框)、 image(图像)、 file(选择文件)、 range(输入范围)、 color(选择颜色)、 datetime-local(选择日期时间)、 date(选择日期)、 time(选择时间)、 month(选择月份)、 week(选择星期) 等。

      • name :指定输入框的名称,用于标识表单数据中的字段名称,提交表单时会将字段名称和用户输入的值一起发送到服务器。

      • value :指定输入框的默认值或提交时的值。

      • id :ID属性用于关联 <label> 元素标签。

    • <select> :下拉列表标签,用于创建下拉选择框,用户可以从预定义的选项中选择一个或多个选项。

    • <option> :用于定义 <select> 下拉列表中的选项。例如:

    <select name="城市">
        <option value="北京">北京</option>
        <option value="上海">上海</option>
        <option value="广州" selected>广州</option>
        <!-- selected用于定义默认预选项 -->
        <option value="深圳">深圳</option>
    </select>
    • <optgroup> :用于定义选项组,为 <select> 元素中的选项创建分组。

    • <textarea> :多行文本输入框标签,用于创建一个较大面积的文本输入区域,用户可以在其中输入多行文本信息。

      其中 rows 属性指定文本框的行数, cols 属性指定文本框的列数。例如:

    <textarea name="留言" rows="4" cols="50">在此输入留言内容...</textarea>
    • <button> :用于定义一个点击按钮。

    • <datalist> :包含了一组 <option> 元素,用于指定一个预先定义的输入控件选项列表。

    • <keygen> :定义了表单的密钥对生成器字段。

    • <output> :用于定义一个计算结果或用户操作结果。

    2.14 程序元素标签

    • <script> :用于定义客户端脚本。

    • <noscript> :用于定义针对不支持客户端脚本的用户的替代内容。

    • <embed> :定义一个容器,将外部内容嵌入文档中的指定位置,用来嵌入外部应用程序或其他交互式内容源(插件)。

    • <object> :定义嵌入的对象,可引入一个外部资源。这个资源可能是一张图片,一个嵌入的浏览上下文,亦或是一个插件所使用的资源。

    • <param> :定义对象的参数。

    2.15 框架元素标签

    • <iframe></iframe> (Inline frame)是内嵌框架标签,用于标记一个内联框架。通过使用框架,可以在同一个浏览器窗口中显示不止一个页面。

    <iframe src="demo_iframe.htm" width="20" height="20" frameborder="0"> </iframe>
    <!-- width和height可以是像素单位,也可以按百分比数值 -->
    <!-- frameborder="0",表示不显示边框 -->
    • 可以使用 <iframe> 来显示 <a> 链接的页面,例如:

    <iframe src="demo_iframe.htm" name="iframe_a"></iframe>
    <p><a href="https://www.baidu.com" target="iframe_a" rel="noopener">百度</a></p>
    • <fencedframe></fencedframe> 是围栏框架元素标签,用于将另一个 HTML 页面嵌入到当前页面中。

    2.16 HTML 计算机输出元素标签

    • <code></code> 之间用于定义计算机代码,表明其中的文本是一段简短的计算机代码的样式。默认情况下,内容文本使用用户代理默认的等宽字体显示。。

    • <kbd></kbd> 之间用于定义键盘码(Keyboard)。

    • <samp></samp> 之间用于定义计算机程序输出样本(Sample)。

    • <var></var> 之间用于定义变量(Variable)。

    • <pre></pre> 之间用于定义预定义格式文本(Preformatted)。 被包围在 <pre></pre> 之间的文本通常会保留空格和换行符,紧跟在 <pre> 开始标签后的换行符也会被省略。

    2.17 HTML 引文引用定义元素标签

    • <abbr></abbr> 之间用于定义词语缩写(Abbreviation)。

    • <address></address> 之间用于定义地址<address></address> 通常用来表示作者/所有者的联系信息,并建议被包含在 <footer> 元素里面。

    • <bdi></bdi> 是双向隔离元素,在其标签之间用于设置一段文本,使其脱离其父元素的文本方向设置,当网站动态插入一些文本且不知道所插入文本的方向性时,此功能特别有用。

    • <bdo></bdo> 是双向文本覆盖元素,在其标签之间用于修改文字方向

    <p> <bdo dir="rtl">段落文字从右到左显示。</bdo> </p>
    • <blockquote></blockquote> 是块级引用元素,在其标签之间的文字是引用内容。通常在渲染时,这部分的内容会有一定的缩进。若引文来源于网络,则可以将原内容的出处 URL 地址设置到 cite 属性上。若要以文本的形式告知读者引文的出处时,可以通过 <cite> 元素。

      • cite 属性:标注引用的信息的来源文档或者相关信息的 URL 。

    • <q></q> 之间用于定义短引用(Quotation)。

    • <cite></cite> 之间用于定义引用、引证

    • <dfn></dfn> 之间用于定义一个定义项目(Defines a Definition Term)。

    2.18 HTML 其它元素

    • <search></search> 通用搜索元素,是一个容器,代表文档或应用程序中包含与执行搜索或过滤操作相关的表单控件或其他内容的部分。<search> 元素在语义上标识了元素内容的用途——具有搜索或过滤功能。搜索或过滤功能可以针对网站或应用程序、当前网页或文档,也可以针对整个互联网或其子部分。

    2.19 HTML 颜色定义

    HTML 颜色由一个十六进制符号来定义,这个符号由红色、绿色和蓝色的值组成(RGB)。每种颜色的最小值是0(十六进制:#00),最大值是255(十六进制:#FF)。

    如下表所示:

    颜色(Color) 颜色十六进制(Color HEX) 颜色RGB(Color RGB)
    黑色 #000000 rgb(0,0,0)
    红色 #FF0000 rgb(255,0,0)
    黄色 #FFFF00 rgb(255,255,0)
    绿色 #00FF00 rgb(0,255,0)
    青色 #00FFFF rgb(0,255,255)
    蓝色 #0000FF rgb(0,0,255)
    洋红色 #FF00FF rgb(255,0,255)
    白色 #FFFFFF rgb(255,255,255)
    灰色 #C0C0C0 rgb(192,192,192)

    通过 <style> 元素标签,可以定义文本段落的背景颜色,如下所示 :

    <p style="background-color:rgb(255,255,0)">
    通过 rbg 值设置背景颜色
    </p>
    <p style="background-color:rgba(255,0,255,0.3)">
    通过 rbga 值设置背景颜色, a表示颜色透明度。
    </p>

    2.20 HTML 字符实体

    1. HTML 中的预留字符必须用字符实体来替换显示。

    • &lt; 表示小于号< (less than) 。

    • &gt; 表示大于号> (greater than)。

    • &amp; 表示与号& (ampersand)。

    • &apos; 表示单引号' (apostrophe) 。

    • &quot; 表示双引号" (quotation mark)。

      例如需要显示(<小于号),我们必须写成 &lt; 这样的字符实体名称,或 &#60; / &#060; 这样的字符实体编号

    1. 一些在键盘上找不到的字符可以使用字符实体来替换显示。

      例如需要显示(© 版权图标),我们必须写成&copy;这样的字符实体名称,或 &#169; 这样的字符实体编号

    2. 不间断空格也需要使用字符实体来替换显示。

      空格的字符实体名称&nbsp; ,字符实体编号&#160;

    2.21 HTML 的 URL 说明

    URL 是统一资源定位器(Uniform Resource Locators)的缩写,用来表示一个网页地址。

    一个网页地址的语法规则为 scheme://host.domain:port/path/filename ,各代码的描述说明如下:

    • scheme :表示因特网服务的类型。最常见的类型是 http、https、ftp、file

    • host :表示域主机(http 的默认主机是 www

    • domain :表示因特网域名。

    • :port :表示主机上的端口号(http 的默认端口号是 80

    • path :表示服务器上的路径(如果省略,则文档必须位于网站的根目录中)。

    • filename :定义说明文档/资源的名称

    3 HTML 文档的后缀名

    HTML文档支持两种后缀名,如下所示,没有区别,都可以使用。

    • .html(推荐统一采用 .html )

    • .htm

    4 浏览器作用

    浏览器的作用是解析HTML各元素标签,并渲染成可视化网页,但不显示标签本身

    5 学习建议

    5.1 掌握核心标签

    文本、链接、图片、列表、表格。

    5.2 浏览器调试网页

    • 打开浏览器,在想学习的网页,右击鼠标,选择“查看页面源代码” 或 “查看网页源代码”。

    • 打开浏览器,右键鼠标,选择“检查”,或按“ F12 功能键”,可以打开调试界面,进行代码调试。

    5.3 实践工具

    使用编辑器(如 VS Code)创建 .html 文件。

    VS Code 编辑器可以安装 Live Server 插件 或 Live Preview 插件来实时预览编写的代码,是否达到预期的显示效果。

    5.4 实践简单页面

    <!DOCTYPE html>
    <html>
    <head>
        <title>我的第一个网页</title>
    </head>
    <body>
        <h1>这是用HTML创建的一级标题。</h1>
        <p>这是用HTML创建的段落。</p>
        <p>Hello World!</p>
    </body>
    </html>

    5.5 进阶内容

    • 表单设计

      复杂控件(文件上传、验证)。

    • HTML5 API

      地理定位、拖放操作、 Web Workers 。

    • 语义化布局

      使用 <article><section> 等标签替代传统 <div>

    • 结合 CSS 实现布局,用 JavaScript 添加交互

    • 关键技能

      响应式设计(媒体查询)、Flex box / Grid 布局、表单验证。

    5.6 实践建议

    5.6.1 语义化编码

    优先使用 <header><footer><section><article><aside><details><dialog><summary><main><nav> 等语义化标签替代 <div> ,以便提升可读性、可访问性与 SEO 优化。

    5.6.2 响应式设计

    通过CSS媒体查询适配不同设备(如手机、平板)。

    5.6.3 性能优化

    压缩图片、使用 CDN 加速资源加载、按需加载 JavaScript 。

    5.6.4 持续学习

    关注 HTML 新特性(如 Web Components 、 Shadow DOM)及框架更新。

    5.7 学习资源

    官方文档

    MDN Web Docs(权威指南)。

    • https://developer.mozilla.org/zh-CN/docs/Web/HTML

    • https://developer.mozilla.org/en-US/docs/Web/CSS

    • https://developer.mozilla.org/en-US/docs/Web/JavaScript

    6 应用场景

    • 网页开发

      与 CSS (样式)、 JavaScript (交互)构成前端技术栈。

    • 电子邮件模板

      使用 HTML 定制化邮件内容。

    • 静态网站生成

      配合静态站点生成器,创建博客、文档站点。

    7 总结

    HTML 是 Web 开发的基石,其核心价值在于结构化内容实现资源互联

    HTML (内容结构)是前端开发的基础,结合 CSS (样式控制)和 JavaScript (交互逻辑)协同工作,可以创建出功能丰富、视觉精美的网页,共同实现现代网页的视觉效果与动态功能。


    内容目录


    迪欧IT——dio智能科技

     

    dioIT.迪欧IT.dio智能科技

    迪欧智慧

     

     

粤ICP备2021093735号

粤公网安备44522402000161号