<!DOCTYPE>在html中的使用

本文介绍了HTML中<!DOCTYPE>的相关知识。<!DOCTYPE>是声明页面HTML版本的,位于文档最前,能让浏览器决定渲染模式、验证文档规则。还说明了不同HTML版本中<!DOCTYPE>的使用方法,强调在文档开头用适当声明可启用标准模式,保证CSS样式统一。

什么是 <!DOCTYPE>

<!DOCTYPE>是一个用来告诉web浏览器当前页面使用了哪个版本的html的声明,它需要位于文档的最开始的位置,也就是位于<html>标签之前。

当声明了正确的doctype以后:
1.浏览器可以决定使用哪一种渲染模式去展示页面
2.Markup validators可以决定使用哪些规则来验证当前文档
以上这两点都将影响html页面在不同浏览器中的正常显示。

“浏览器本身分为两种模式,一种是标准模式(Standards mode),一种是怪异模式(Quirks mode),浏览器通过doctype来区分这两种模式,doctype在html中的作用就是触发浏览器的标准模式,如果html中省略了doctype,浏览器就会进入到Quirks模式的怪异状态,在这种模式下,有些样式会和标准模式存在差异,而html标准和dom标准值规定了标准模式下的行为,没有对怪异模式做出规定,因此不同浏览器在怪异模式下的处理也是不同的,所以一定要在html开头使用doctype。”——知乎

如何使用<!DOCTYPE>

在 HTML 4.01 中,<!DOCTYPE> 声明需引用 DTD (文档类型声明),因为 HTML 4.01 是基于 SGML (Standard Generalized Markup Language 标准通用标记语言)。DTD 指定了标记语言的规则,确保了浏览器能够正确的渲染内容。

HTML5 不是基于 SGML,因此不要求引用 DTD。

HTML5中只定义了一种声明:
<!DOCTYPE html>
在这里插入图片描述

HTML 4.01 规定了三种不同的 <!DOCTYPE> 声明,分别是:Strict、Transitional 和 Frameset。
Strict模式:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
Transitional模式:<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
Frameset模式:<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN” “http://www.w3.org/TR/html4/frameset.dtd”>
在html4.01的声明中最重要的两部分分别是两对引号括起来的内容,以strict模式为例: “-//W3C//DTD HTML 4.01//EN” 代表这个DTD文档是由W3C发布的,用来描述html4.01,语言是英文;“http://www.w3.org/TR/html4/strict.dtd” 是这个声明所引用的DTD的URL。

总结:

只有在html文档的开头使用适当的doctype才能确保浏览器解析页面的时候启用标准模式(Standards mode),以此才能确保在不同浏览器中得到一个统一的css样式。

引用:

https://www.w3.org/wiki/Choosing_the_right_doctype_for_your_HTML_documents
https://zhuanlan.zhihu.com/p/32609899
http://www.runoob.com/tags/tag-doctype.html

### 实现 CSS 盒模型练习的 HTML 页面 为了实现一个完整的 CSS 盒模型练习页面,可以按照以下方式编写 HTMLCSS 代码。通过设置 `box-sizing` 属性为 `content-box` 或 `border-box` 来展示两种不同的盒模型效果。 #### HTML 结构 以下是用于演示 CSS 盒模型的 HTML 骨架结构: ```html &lt;!DOCTYPE html&gt; &lt;html lang="zh-CN"> &lt;head> &lt;meta charset="UTF-8"> &lt;title>CSS 盒模型练习&lt;/title> &lt;style> /* 设置全局样式 */ body { font-family: Arial, sans-serif; margin: 20px; } .container { display: flex; gap: 20px; } .box { width: 200px; height: 100px; background-color: lightblue; text-align: center; line-height: 100px; color: white; } /* content-box 的样式 */ .content-box-example { box-sizing: content-box; padding: 20px; border: 10px solid black; } /* border-box 的样式 */ .border-box-example { box-sizing: border-box; padding: 20px; border: 10px solid red; } &lt;/style> &lt;/head> &lt;body> &lt;h1>CSS 盒模型练习&lt;/h1> &lt;div class="container"> &lt;!-- Content-box 示例 --> &lt;div class="box content-box-example">Content-box&lt;/div> &lt;!-- Border-box 示例 --> &lt;div class="box border-box-example">Border-box&lt;/div> &lt;/div> &lt;p>注意观察两个盒子的实际尺寸差异。&lt;/p> &lt;/body> &lt;/html&gt; ``` --- #### 关键点解析 1. **Box-Sizing 属性的作用** - 当 `box-sizing` 被设置为 `content-box` 时,元素的宽度和高度仅适用于内容区域(即 `content`),而不包括 `padding` 和 `border`[^3]。 - 如果未指定 `box-sizing`,默认行为就是 `content-box`,此时需要手动计算实际占用的空间[^2]。 2. **Border-Box 行为** - 使用 `box-sizing: border-box` 后,元素的宽度和高度将包含 `padding` 和 `border` 的值。这意味着即使设置了相同的宽度和高度,最终显示的效果也会因为 `padding` 和 `border` 不再额外增加而保持一致[^3]。 3. **视觉对比** - 在上面的例子中,`.content-box-example` 的实际宽度为 `260px`(200px 内容区 + 40px 左右内边距 + 20px 边框)[^3]。 - `.border-box-example` 则严格遵循设定的 `200px` 宽度,其中 `padding` 和 `border` 占用了内部空间而不是扩展外部边界。 --- ### 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值