HTML重点总结

HTML与CSS基础
本文介绍了HTML和CSS的基础知识,包括二者的关系、HTML的结构、块级元素与内联元素的区别、HTML语义化的重要性以及href与src的区别。

1. HTML(超文本标记语言)和CSS(层叠样式表)的关系

(1)CSS用来修饰HTML样式,改变HTML标签本身的默认样式。

(2)HTML+CSS构成了我们网页的基本页面结构和样式。

2.HTML的结构:

<!DOCTYPE html>

(文档类型声明。它告诉游览器应该以html5的文档类型定义来解析文档,因为不同的渲染模式会影响游览器对CSS代码甚至JavaScript脚本的解析。<!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前)

<html>    (标识HTML文档)

<head>    (这个元素是一个容器,它包含了所有你想包含在HTML页面中但不想在HTML页面中显示的内容。描述了文档的各种属性和信息,包括文档的标题等)

常用的有:

(1) title标签,定义网站的标题,它是 head 部分中唯一必需的元素。

(2) meta 标签,由 name content 属性定义,提供了 HTML 文档的元数据

<meta charset="UTF-8">  设置当前文件字符编码类型 )

<meta name="keywords" content="关键词" /> 设置网页关键词,为搜索引擎提供服务)

<meta name="description" content="页面描述内容" /> 设置页面描述内容)

 (<meta http-equiv="refresh" content="3;url=”重定向网站”/> 页面重定向和刷新)

(content里面写了两个参数,3表示三秒后,第二个参数是要重定向到的资源位置(可以是其他域名,也可以是本地资源。)

(<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 适配移动端,可以控制视口的大小和比例)

(3)link标签,用来指向某一资源

常用的格式<link rel=""   href=""   type=""></link>

rel:该资源与本网页的关系,href:该资源的地址,type:该资源的MIME类型。

常用rel分类如下:rel = "stylesheet"  (外部样式表)

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

rel = "shortcut icon"  (网站图标)

<link rel="shortcut icon" type="image/x-icon" href="xxx.ico"></link>

rel = "dns-prefetch"  (dns预解析)( 将域名转化为 IP 地址,节省时间)

<link rel="dns-prefetch" href="//www.baidu.com"></link>

(4)script标签:<script> 标签用于定义客户端脚本,比如 JavaScript。

<script type="text/javascript" src="myscripts.js"></script>

(5)style标签:<style> 标签用于为 HTML 文档定义样式信息。

<style type="text/css">h1 {color: red} p {color: blue} </style>

</head>

<body>   (网页主体)

</html></body>

3.块级元素和内联元素(行内元素)区别

块级元素内联元素
独占一行,默认情况下,其宽度自动填满其父元素宽度相邻的内联元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容而变化
可以设置width,height属性内联元素设置width,height属性无效
可以设置margin和padding属性行内元素起边距作用的只有margin-left、margin-right、padding-left、padding-right,其它属性不会起边距效果。
对应于display:block对应于display:inline;
元素有:div ul ol li dl dt dd h1 h2 h3 h4 h5 h6 p元素有:a b span img input select strong

4.HTML的语义化

在我们身边的任何地方都要依赖语义学,我们依靠以前的经验就知道日常事物都代表什么,当我们看到什么,我们就会知道它代表什么。语义化,指对文本内容的结构化(内容语义化),选择合乎语义的标签(代码语义化),便于开发者阅读,维护和写出更优雅的代码的同时,让浏览器的爬虫和辅助技术更好的解析。

通过使用恰当语义的HTML标签,让页面具有良好的结构与含义,可以有效提高:

  1. 可访问性:帮助辅助技术更好的阅读和转译你的网页,利于无障碍阅读;
  2. 可检索性:有了良好的结构和语义,可以提高搜索引擎的有效爬取,提高网站流量;
  3. 国际化:通用的语义化标签可以让各国开发者更容易弄懂你网页的结构;
  4. 互用性:增强了可读性,减少网页间的差异性,帮助其他开发者了解你网页的结构,方便后期开发和维护;

为了实现语义化标记,HTML 提供了明确一些区段的专用标签,例如:

<header>:页眉。  <nav>:导航栏。  <main>:主内容。  主内容中还可以有各种子内容区段,可用<article><section> 和 <div> 等元素表示。  <aside>:侧边栏,经常嵌套在 <main> 中。  <footer>:页脚。

有时你会发现,对于一些要组织的项目或要包装的内容,现有的语义元素均不能很好对应。有时候你可能只想将一组元素作为一个单独的实体来修饰来响应单一的用CSSJavaScript。为了应对这种情况,HTML提供了<div><span>元素。<div> 非常便利但容易被滥用。由于它们没有语义值,会使 HTML 代码变得混乱。要小心使用,只有在没有更好的语义方案时才选择它,而且要尽可能少用, 否则文档的升级和维护工作会非常困难。

5. 宽松的代码

宽松是什么意思呢?通常写错代码会带来以下两种主要类型的错误:

语法错误:由于拼写等语法错误导致程序无法运行。通常熟悉语法并理解错误信息后很容易修复。

逻辑错误:不存在语法错误,但代码无法按预期运行。通常逻辑错误比语法错误更难修复,因为无法得到指向错误源头的信息。

HTML 本身不容易出现语法错误,因为浏览器是以宽松模式运行的,这意味着即使出现语法错误浏览器依然会继续运行。浏览器通常都有内建规则来解析书写错误的标记,所以即使与预期不符,页面仍可显示出来。当然,是存在隐患的。

6.href和src的区别:

href标识超文本引用,用在link和a等元素上,href是在当前元素和引用资源之间建立联系。

src表示引用资源,表示替换当前元素,用在img,script,iframe上 ,是指向外部资源的位置,指向的内部会迁入到文档中当前标签所在的位置;在请求src资源时会将其指向的资源下载并应用到当前文档中,例如js脚本,img图片和frame等元素。

<think>嗯,用户想了解CRC32校验算法的实现和使用方法。我需要先回顾一下CRC32的基本原理,然后考虑如何用简单易懂的中文解释清楚。首先,CRC32是基于循环冗余校验的一种算法,主要用于检测数据传输或存储中的错误。用户可能希望知道它的具体步骤,比如如何初始化、处理数据、异或操作以及最终得到校验值。 根据提供的引用资料,CRC32的核心是多项式除法,但实际中通过查表法优化速度。需要解释生成多项式,比如常见的0xEDB88320,以及初始值、输入输出是否反转这些参数。用户提供的代码片段中有两个版本,一个是逐位计算,另一个是查表法,这可能需要在回答中对比说明,突出查表法的效率优势。 接下来,用户可能关心具体怎么使用这个算法,比如在C语言中的实现步骤,或者如何应用到实际项目中,比如文件校验或网络传输。要分步骤讲解,从初始化到处理每个字节,再到最终计算,可能需要示例代码来辅助说明。同时,注意用户要求行内数学表达式用$...$,比如多项式应该写成$0xEDB88320$这样的格式。 另外,用户的问题里提到生成相关问题,我需要考虑相关的问题可能涉及性能优化、不同生成多项式的影响,或者CRC32与其他校验算法的比较。这些可以作为相关问题放在最后,帮助用户进一步探索。 需要确保回答结构清晰,先讲原理,再讲实现步骤,然后使用方法,最后附上相关问题。同时,引用提供的资料,比如引用[^1]和[^2]来支持解释。要避免技术术语过于复杂,保持语言通俗易懂,同时满足LaTeX格式要求,比如多项式用$符号包裹。检查是否有遗漏的步骤,比如输入反转和输出反转的处理,这在代码示例中有所体现,需要解释清楚这些参数的作用。</think>### CRC32校验算法实现及使用方法 #### 一、CRC32基本原理 CRC32通过多项式除法生成32位校验值,用于检测数据传输或存储中的错误。其核心是生成多项式$G(x)$,常用标准为$0xEDB88320$(反向多项式形式)[^1]。算法流程如下: 1. **初始化**:设置32位寄存器初值为$0xFFFFFFFF$ 2. **数据输入**:逐字节与寄存器异或运算 3. **位移处理**:根据多项式进行循环移位和异或操作 4. **结果取反**:最终值与$0xFFFFFFFF$异或 #### 二、算法实现(C语言) ```c // 查表法实现(高效) uint32_t crc32_table[256]; void init_crc32_table() { for (int i = 0; i < 256; i++) { uint32_t crc = i; for (int j = 0; j < 8; j++) { crc = (crc >> 1) ^ ((crc & 1) ? 0xEDB88320 : 0); } crc32_table[i] = crc; } } uint32_t calc_crc32(uint8_t *data, size_t len) { uint32_t crc = 0xFFFFFFFF; while (len--) { crc = (crc >> 8) ^ crc32_table[(crc ^ *data++) & 0xFF]; } return crc ^ 0xFFFFFFFF; } ``` 此实现通过预先生成的256元素查找表,将时间复杂度从$O(n \cdot 8)$优化到$O(n)$。 #### 三、使用场景及方法 1. **文件校验**:计算文件CRC32值验证完整性 ```bash $ crc32 filename.txt ``` 2. **网络传输**:在数据帧尾部附加4字节校验码 3. **存储系统**:RAID、ZFS等文件系统使用CRC32校验数据块 #### 四、参数配置 | 参数 | 说明 | 标准值 | |---------------|---------------------------|-----------------| | 初始值 | 寄存器初始状态 | 0xFFFFFFFF | | 多项式 | 生成多项式 | 0xEDB88320 | | 输入/输出反转 | 字节处理顺序 | 通常需要反转 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值