XYCOVO CONSOLE KURISU · WEB 渗透 / AI 辅助攻防 ONLINE
#040 · 2023-10-25✓ PASS

HTML 与 CSS 笔记

HTML 与 CSS 前端开发学习笔记,涵盖 HTML 基础、CSS 选择器及常用样式属性。
前端htmlcss学习笔记AUTHOR: KURISU

学习前端开发时的 HTML 和 CSS 笔记,记录核心知识点和常用代码示例。


HTML 基础

HTML 简介

HTML(HyperText Mark-up Language,超文本标记语言)是目前网络上应用最广泛的技术之一,也是构成网页文档的主要基石。HTML 文本可以描述文字、图形、动画、声音、表格、链接等内容。

HTML 结构分为 头部(Head)主体(Body) 两大部分。头部描述浏览器所需信息,主体包含具体的显示内容。

HTML 不是编程语言,而是一种描述性语言,通过标签来描述内容在浏览器中的显示方式。

HTML 历史

  • 1990 年:Web 之父 Tim Berners-Lee 发布了《HTML 标签》论文,借用 SGML 的标记语法
  • IETF 时期:推出 HTML 2.0,逐步完善
  • W3C 时期:HTML 4.01(1999 年)成为里程碑版本,沿用至今
  • XHTML 1.0:以 XML 标准约束 HTML,语法严格但未增加新特性
  • HTML5:由 WAHTWG 组织(Opera/Apple/Mozilla)发起,W3C 跟进,现已被大部分浏览器兼容

HTML 特点

  • 简易性:语法简单,易于学习和使用
  • 可扩展性:标签可嵌套组合
  • 平台无关性:任何操作系统只要有浏览器即可运行

开发环境

HTML 开发只需要简单的编辑工具:

  • 简易编辑器:Notepad++、Sublime、VS Code
  • 专业 IDE:WebStorm、HBuilder、Eclipse
  • 学习阶段建议使用简单编辑器,熟练后可使用 IDE 提高效率

HTML 快速入门

第一个 HTML 页面

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我的第一个页面</title>
</head>
<body>
    <h1>Hello World</h1>
    <p>这是我的第一个 HTML 页面。</p>
</body>
</html>

文档结构说明

标签说明
<!DOCTYPE html>声明文档为 HTML5
<html>根元素,lang 属性指定语言
<head>头部信息,含编码、标题、样式等
<meta charset="UTF-8">字符编码声明
<title>浏览器标签页标题
<body>页面可见内容

常用 HTML 标签

文本标签

<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>

<p>这是一个段落。</p>

<strong>加粗强调</strong>
<em>斜体强调</em>

<br>  <!-- 换行 -->
<hr>  <!-- 水平线 -->

列表

<!-- 无序列表 -->
<ul>
    <li>项目一</li>
    <li>项目二</li>
    <li>项目三</li>
</ul>

<!-- 有序列表 -->
<ol>
    <li>第一步</li>
    <li>第二步</li>
</ol>

链接与图片

<a href="https://www.baidu.com">百度</a>
<a href="mailto:example@email.com">发送邮件</a>
<a href="#section1">页内跳转</a>

<img src="photo.jpg" alt="描述文字" width="300" height="200">

表格

<table border="1">
    <tr>
        <th>姓名</th>
        <th>年龄</th>
    </tr>
    <tr>
        <td>张三</td>
        <td>20</td>
    </tr>
</table>

表单

<form action="/login" method="post">
    <label>用户名:</label>
    <input type="text" name="username" placeholder="请输入用户名">

    <label>密码:</label>
    <input type="password" name="password">

    <input type="submit" value="登录">
    <input type="reset" value="重置">
</form>

input 常用类型

类型说明
text文本框
password密码框
radio单选按钮
checkbox多选框
file文件上传
submit提交按钮
reset重置按钮
email邮箱输入
date日期选择

CSS 基础

CSS 引入方式

1. 行内样式

<p style="color: red; font-size: 16px;">红色文字</p>

2. 内部样式表

<head>
    <style>
        p {
            color: red;
            font-size: 16px;
        }
    </style>
</head>

3. 外部样式表

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

推荐使用外部样式表,实现结构与样式分离。


CSS 选择器

基础选择器

标签选择器

p {
    color: red;
}

div {
    background-color: #f0f0f0;
}

ID 选择器

#header {
    height: 80px;
    background-color: #333;
}
<div id="header">顶部导航</div>

类选择器

.highlight {
    color: blue;
    font-weight: bold;
}
<p class="highlight">高亮文字</p>

通配符选择器

* {
    margin: 0;
    padding: 0;
}

组合选择器

子代选择器 —— 只选直接子元素

div > p {
    color: red;
}

后代选择器 —— 选所有后代

div p {
    font-size: 14px;
}

分组选择器 —— 多个选择器共享样式

h1, h2, h3 {
    font-family: 'Microsoft YaHei', sans-serif;
}

属性选择器

/* 含有 title 属性的 div */
div[title] {
    border: 1px solid red;
}

/* type 属性等于 text 的 input */
input[type="text"] {
    background: #f5f5f5;
}

/* type 属性包含 e 的 input */
input[type*="e"] {
    background: pink;
}

/* href 以 https 开头的链接 */
a[href^="https"] {
    color: green;
}

/* href 以 .pdf 结尾的链接 */
a[href$=".pdf"] {
    color: red;
}

伪类选择器

/* 未访问的链接 */
a:link { color: blue; }

/* 已访问的链接 */
a:visited { color: purple; }

/* 鼠标悬停 */
a:hover { color: red; text-decoration: underline; }

/* 激活状态 */
a:active { color: orange; }

/* 第一个子元素 */
li:first-child { font-weight: bold; }

/* 最后一个子元素 */
li:last-child { border-bottom: none; }

/* 第 n 个子元素 */
li:nth-child(2) { background: #eee; }
li:nth-child(odd) { background: #fafafa; }
li:nth-child(even) { background: #fff; }

伪元素选择器

/* 元素前插入内容 */
p::before {
    content: "提示:";
    color: red;
}

/* 元素后插入内容 */
p::after {
    content: "";
}

/* 首行 */
p::first-line {
    font-weight: bold;
}

/* 首字母 */
p::first-letter {
    font-size: 2em;
    color: red;
}

选择器优先级

当多个选择器作用于同一元素时,优先级规则为:

!important > 内联样式 > ID > 类/伪类/属性 > 标签/伪元素 > 通配符

计算规则(计算特异性值 a-b-c-d):

选择器示例权重
行内样式style="..."1,0,0,0
ID#header0,1,0,0
类/伪类/属性.box, :hover, [type]0,0,1,0
标签/伪元素div, ::before0,0,0,1
div.box           /* 标签+类   = 0,0,1,1 */
#content p        /* ID+标签   = 0,1,0,1 */
div #header .nav  /* 标签+ID+类 = 0,1,1,1 */

值越大优先级越高。值相同时,后写的覆盖先写的。


常用 CSS 属性

文本样式

color: #333;                    /* 文字颜色 */
font-size: 16px;                /* 字号 */
font-weight: bold;              /* 粗细 */
font-family: 'Microsoft YaHei'; /* 字体 */
text-align: center;             /* 水平对齐 */
text-decoration: none;          /* 装饰线(下划线/删除线) */
line-height: 1.5;               /* 行高 */
text-indent: 2em;               /* 首行缩进 */

背景

background-color: #f5f5f5;                  /* 背景色 */
background-image: url('bg.jpg');             /* 背景图 */
background-repeat: no-repeat;                /* 不平铺 */
background-size: cover;                      /* 覆盖 */
background-position: center;                 /* 居中 */

盒模型

width: 200px;           /* 宽度 */
height: 100px;          /* 高度 */
padding: 10px 20px;     /* 内边距(上下 左右) */
border: 1px solid #ccc; /* 边框 */
margin: 10px auto;      /* 外边距(上下10px 左右居中) */

box-sizing: border-box; 可以让宽高包含 padding 和 border,布局更直观。

← #039 HTML 常用标签…#041 Linux 基本命令… →