HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言。它由各种标签组成,这些标签定义了网页的结构和内容。HTML的早期形式诞生于1989年,由CERN的物理学家Tim Berners-Lee发明,最初用于在科学家之间共享研究成果。1996年:HTML 4.0发布,引入了样式表、框架、表单等新特性,这个版本被广泛使用了很多年。这个HTML4.0就是我们经常说的HTML语言,而2014年,HTML5发布,这是自HTML 4.01以来最大的一次更新。HTML5引入了新的结构元素、表单控件、媒体播放功能以及对图形和交互性的支持。这个就是我们常说的H5。HTML不是编程语言,而是一种用于创建网页内容的标记语言。用通俗的语言来讲,HTML是一个可以被浏览器程序渲染展示界面的语言。这里还有一个概念就是CSS,CSS(层叠样式表,Cascading Style Sheets)是一种用于描述HTML文档外观和布局的语言。
为了方便大家理解,我们可以将HTML语言比作一个房屋,HTML里的标签元素就是房屋里的房间、大门、窗户、水管、电线、煤气管道。而CSS语言就是将这个毛坯房装修漂亮的工具,你可以设置房间墙壁的颜色、是否挂壁画、屋顶吊顶。HTML和CSS组合起来就可以构造一个非常漂亮网页了。
接下来我们先整体介绍一下html语言中有哪些常用的标签元素以及CSS中有哪些常用的属性以及这些属性如何与常用标签的匹配。
按照html标签元素的特性,我们将它们分为三类:块级元素(Block-level Elements)、行内元素(Inline Elements)、混合元素(可作为块级或行内)。
下面一张表格对比这三者的区别,以及每个类型的代表标签元素。
特性/元素类型 | 块级元素 | 行内元素 | 混合元素(如 ) |
---|---|---|---|
常见标签示例 | , ,
| , , | , |
宽度 | 宽度默认填满其父元素 | 宽度由内容决定 | 宽度可以自定义设置 |
高度 | 可以设置高度 | 高度由内容决定 | 可以设置高度 |
外边距和内边距 | 可以设置外边距和内边距 | 可以设置外边距和内边距 | 可以设置外边距和内边距 |
定位 | 可以被绝对定位或相对定位 | 可以被相对定位,但绝对定位和固定定位受限 | 可以被绝对定位或相对定位 |
浮动 | 可以设置浮动 | 不能设置浮动 | 可以设置浮动 |
块级格式化上下文 | 创建BFC | 不创建BFC | 根据CSS display 属性可能创建BFC |
可包含的子元素 | 可以包含块级和行内元素 | 只能包含行内元素 | 根据元素自身特性,可以包含行内元素或特定类型的子元素 |
布局 | 适合布局和结构化内容 | 适合文本和图片等小元素的排版 | 根据元素类型和CSS display 属性,可以用于特定布局或表单控件 |
换行 | 元素前后会自动换行 | 元素前后不会自动换行 | 根据 display 属性决定是否换行 |
CSS布局 | 可以使用所有CSS布局方式,如Flexbox和Grid | 主要用于文本和图片的布局,布局选项有限 | 根据 display 属性和元素类型,可以使用CSS布局或特定样式 |
做为初学者以上这些特性你可能还不太明白,这些特性会在后面继续讲解。
下图是一个web页面中各种标签存在的包含关系,我们可以大致了解html各个标签的包含关系。
我们浏览的网页至少包含这三个标签。还有一个表示文件类型的标签
以下代码是一个html的基本结构。
DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>页面标题title>
head>
<body>
body>
html>
上图可见<.head>元素可以包含四种元素:
具体示例
下面是一个具体示例,展示了优先级的实际应用:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Specificity Exampletitle>
<style>
p {
color: red; /* 权重 1 */
}
.intro {
color: blue; /* 权重 10 */
}
#main {
color: green; /* 权重 100 */
}
p {
color: orange; /* 权重 1,但在文档流中更靠后 */
}
p.intro {
color: purple; /* 权重 11 */
}
style>
head>
<body>
<p>This is a paragraph with low specificity.p>
<p class="intro">This is a paragraph with class.p>
<div id="main">
<p>This is a paragraph inside a div with id.p>
div>
body>
html>
在上述示例中,不同选择器的优先级将决定每个段落的最终颜色:
总结
CSS 优先级由 !important、内联样式、ID选择器、类选择器、伪类选择器、属性选择器、元素选择器和伪元素选择器的权重决定。当多个规则作用于同一元素时,优先级更高的规则将生效。理解并正确运用CSS优先级,有助于更有效地控制样式应用和解决样式冲突。
错误: 初学者常常忘记闭合标签或者标签嵌套不正确。
<p>This is a paragraph
<div>This is a divdiv>
正确示例:
<p>This is a paragraphp>
<div>This is a divdiv>
错误: 将块级元素放在行内元素内部。
<span><div>This is a div inside a spandiv>span>
正确示例:
<div><span>This is a span inside a divspan>div>
错误: 使用不合适的标签来标记内容。
<b>This is bold textb>
<i>This is italic texti>
正确示例: 现在推荐使用具有语义的标签。
<strong>This is bold textstrong>
<em>This is italic textem>
错误: 忘记在HTML文档开头声明文档类型。
<html>
<head>
<title>My Pagetitle>
head>
<body>
<p>Hello World!p>
body>
html>
正确示例:
DOCTYPE html>
<html>
<head>
<title>My Pagetitle>
head>
<body>
<p>Hello World!p>
body>
html>
错误: 错误地使用注释标签。
<-- This is incorrect -->
正确示例:
错误: 忘记在部分设置字符编码。
<head>
<title>My Pagetitle>
head>
正确示例:
<head>
<meta charset="UTF-8">
<title>My Pagetitle>
head>