📖前言
在当今前端面试中,HTML早已不是简单的"标签记忆题"。阿里、腾讯等大厂真题数据显示:90%的候选人因忽视语义化标签被扣分、75%的开发者对
<article>与<section>的区别表述模糊、60%的页面布局问题源于块级/行内元素特性误解。本文直击大厂考核要点,本文结构分为:元素分类---前端工程师的布局思维、HTML5---现代Web开发的基石、最佳实战---最佳开发模板。相信阅读完本文,一定会让你对HTML有个更深层次的认识!
🧩一、元素分类:前端工程师的布局思维
在HTML中,有各种各样的元素,因此,我们可以按照显示特性分类和按照功能分类。
1️⃣按照显示特性分类,
⬛块级元素:
块级元素:例如div,ul,p,h1等等,下面我们来介绍一些块级元素的特点。
- 块级元素是独占一整行的,默认占父级元素的100%。果在同一个父级元素内,一个块级元素a旁边放着另一个块级元素b,则b会被a给挤到下一行
<div class="a">块级元素</div>
<div class="b">跨级元素b</div>
- 块级元素可以设置宽高背景色,因为块级元素是用来存放内容的嘛,就像书架里面装各种各样的书一样,咱们当然可以通过设计,来改变这个书架的长度,宽度,背景颜色呀。
.a {
width: 200px;
height: 200px;
background-color: red;
}
.b {
width: 100px;
height: 100px;
background-color: blue;
}
PS:这里你也能发现,咱们添加了背景颜色之后是不是就显示的更明显了,我们更能很好地观察到这两个块级元素的特点,其实偷偷告诉你,专业前端开发人员,在调试页面的时候,通常都是会使用这种背景颜色大法哦!
➖行内元素:
行内元素:例如<a>、<span>、<em>等,下面我们来介绍一下行内元素的特点
-
行内元素是一个乖巧的孩子,他不像块级元素一样,去主动地占用很多位置,它的宽高是由内容撑开的,由内容的大小来决定行内元素的大小。
-
行内元素一般是放在父级的块级元素中,就像书架里的书一样,所以两个行内元素一般是不会换行的。
<span>我是行内元素</span>
<span>我的大小由内容撑开呀</span>
2️⃣按照显示功能分类:
🏗️结构类:
传统三剑客:<html>、<head>、<body>
我们都知道,在HTML的结构中,少不了这三个结构,一般html就是指整个html文件,head可以存放一些声明信息,例如引入哪些文件、字符串编码等,而body里面则是全文内容。
HTML5语义化标签:
在传统的HTML中,我们经常使用div来区分全文的结构,把整个文章结构分成各个部分的盒子,但是这样做会存在一些问题,我们总是不能很好地区分,每个div代表着哪一部分:用各个.class和#id又会让整个html显得杂乱无章
于是乎,HTML5引入了语义化标签,解决了许许多多的问题:
<header> <footer> <main> <section>
<article> <aside> <nav> <figure>
1.可读性可维护性: 我们能够通过语义化标签的名字,见名知意,很好地增加了我们书写的html的可读性。同时,当你把这份代码交给后人时,后人也能通过你的语义化标签,更好地维护你的html代码。明显增加了可维护性
2.SEO优势: 有了语义化标签,能够显著提升搜索引擎优化的效果,使得爬虫更容易理解和索引网页内容,从而提高网页的排名
//传统的div和大量的class来划分结构
<div class="header">...</div>
<div class="nav">...</div>
<div class="main-content">...</div>
<div class="footer">...</div>
//使用语义化标签让结构更直观
<header>...</header>
<nav>...</nav>
<main>...</main>
<footer>...</footer>
📋数据收集类:
<form>+<input>体系(文本框/单选/文件上传)
特别是在后来的移动端时代,表单已经成为了html必不可少的一部分,通过表单与用户交互,同时与JavaScript“配合”,使得可以很好地实现用户的互动功能。
表格三要素:<table>、<tr>、<td>,表格使得我们文本的表现更为生动
超链接与文本:<a>标签的href与target属性:曾经的HTML中,a标签的重要程度是最高的,因为通过它能够链接到其它网页,特别是曾经没有ajax时和JavaScirpt,我们就会频繁使用a标签。
🌐二、HTML5:现代Web开发的基石
📄<!DOCTYPE html>:文档类型声明
❓<!DOCTYPE html>的含义
我相信程序员在写前端页面的时候,肯定会经常见到<!DOCTYPE html> ,平常我们就直接一键生成了,没有去在意他到底是什么含义。
其实呀,!<!DOCTYPE html>是 HTML5 文档类型声明,就如它的名字,DOC是文档,TYPE是类型,它的主要作用是告诉浏览器当前文档使用的是 HTML5 标准进行编写,从而让浏览器以正确的模式(标准模式)渲染页面。
如果没有<!DOCTYPE html>,浏览器可能识别不了文档为HTML5,随之可能会按照旧版的标准来渲染,导致出现一些不可预料的问题,所以为了标准型,现在web开发都会声明<!DOCTYPE html>,使得能够标准化,确保现代HTML/CSS的规范能被正确支持
⚠️<!DOCTYPE html>的注意事项
注意事项:
- 必须放在 HTML 文档的第一行(之前不能有任何内容,包括空格或注释)。
- 不是 HTML 标签,而是一个指令(浏览器预处理指令)。
<!DOCTYPE html>
<html>
<head>
<title>页面标题</title>
</head>
<body>
<!-- 页面内容 -->
</body>
</html>
🕰️了解旧版HTML4的文档类型声明
HTML4 基于 SGML(标准通用标记语言),其 DOCTYPE 声明需要指定具体的 DTD(文档类型定义),而HTML5 不再基于 SGML,因此简化了声明:
| 特性 | HTML4 | HTML5 |
|---|---|---|
| 语法复杂度 | 复杂(需指定 DTD 和 URL) | 极简(仅 <!DOCTYPE html>) |
| 版本依赖 | 明确指定版本(如 4.01) | 无版本声明 |
| SGML 依赖 | 是(依赖 DTD 验证) | 否(独立标准) |
| 兼容性模式 | 根据 DTD 触发不同模式 | 统一触发标准模式 |
| 大小写敏感 | 是(DOCTYPE 必须大写) | 否(不区分大小写) |
🌟HTML5作为最新标准的核心优势
🏷️语义化标签革命
HTML5 引入了语义化标签,使代码更易读且对搜索引擎更友好:提升代码可维护性:开发者一眼即可理解页面结构。增强 SEO:搜索引擎能更精准识别内容权重。辅助无障碍访问:屏幕阅读器能更准确解析内容。
🎥多媒体原生支持(audio/video)
HTML5 直接支持音视频播放,无需依赖 Flash 或 Silverlight:
<video src="movie.mp4" controls>不支持视频时显示此文本</video>
<audio src="audio.mp3" controls></audio>
🌍跨平台兼容性
HTML5 被设计为跨平台兼容:
- 桌面浏览器(Chrome、Firefox、Safari、Edge)。
- 移动端(iOS、Android)。
- 嵌入式设备(智能电视、车载系统)。
- 通过 Electron、React Native 等技术可构建跨平台应用
✨三、最佳实战:最佳开发模板
首先,我们知道,HTML5,引入了语义化标签,所以,现代开发基本上都是用语义化标签来定义各个结构的,下文的最佳实战也是完全用语义化标签替代传统的div结构:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=s, initial-scale=1.0">
<title>Document</title>
<style>
.header, .nav, .main, .footer {
border-radius: 10px;
background-color: green;
margin-bottom:10px;
color: white;
min-height: 50px;
text-align: center;
}
.main {
display: flex;
}
.article {
flex: 1;
margin-right: 10px;
background-color: pink;
}
.aside {
width: 30%;
background-color: red;
}
</style>
</head>
<body>
<!-- 头部标签 -->
<header class="header">
header
</header>
<!-- 导航标签 -->
<nav class="nav">nav</nav>
<!-- 主体标签 -->
<main class="main">
<!-- 文章标签 -->
<article class="article">
<h1 class="title">什么是html5语义化标签</h1>
<ul>
<li>标签语义化有助于构架良好的HTML结构,有利于搜索引擎的建立索引、抓取。简单来说,试想在H1标签中匹配到的关键词和在div中匹配到的关键词搜索引擎会吧那个结果放在前面。</li>
<li>有利于不同设备的解析(屏幕阅读器,盲人阅读器等)满是div的页面这些设备如何区分那些是主要内容优先阅读?</li>
<li>有利于构建清晰的机构,有利于团队的开发、维护。</li>
</ul>
<!-- 新区块 -->
<section class="section">
comments
</section>
</article>
<!-- 侧边栏 -->
<aside class="aside">
aside
</aside>
</main>
<!-- 尾部 -->
<footer class="footer">
footer
</footer>
</body>
</html>
- header:是指文章的头部,一般用来声明全文的一级标题,和放网站的logo和一些文章摘要
- nav:导航部分,通常可以给用户选择,每个导航部分对应着不同的内容,可以存放多个列表嵌套a标签来实现
- article:正文内容,文章的内容就可以存放在这一部分,可能是新闻列表,商品卡片,论坛帖子,根据不同的场景存放即可
- section:除了正文的其余部分,会放一些评论、产品功能模块展示
- aside:侧边栏同样可以放一些想要放的内容,可以是广告、推荐等内容
- footer:底部栏,通常可以用来声明版权信息,备案信息,或者一些重要注意点。
✅总结
本文通过从面试的角度,深度剖析了一些HTML的一些大厂面试可能会考的点,分为三个点:元素的分类,我们介绍了HTML中各个元素的不同分类标准,然后就是HTML5的一些新特性的介绍,最后给大家带来了一个HTML5语义化的一些最佳实战的用法。希望大家阅读完本文后,能对HTML有一个更深刻的认识。
🌇结尾
感谢你看到最后,最后再说两点~
①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
我是3Katrina,一个热爱编程的大三学生
(文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)
作者:3Katrina
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。