HTML语法分析

 


什么是HTML#

htyper text markup language 即超文本标记语言HTML是一个网页的主体部分,也是一个网页的基础。因为一个网页可以没有样式,可以没有交互,但是必须要有网页需要呈现的内容。所以HTML部分是整个前端的基础
超文本: 就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。
标记语言: 标记(标签)构成的语言.

它是一种用于创建网页的标记语言。标记语言是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的计算机文字编码。与文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行标识

1
2
3
网页==HTML文档,由浏览器解析,用来展示的
静态网页:静态的资源,如xxx.html
动态网页:html代码是由某种开发语言根据用户请求动态生成的

什么是标签#

HTML作为一门标记语言,是通过各种各样的标签来标记网页内容的。

HTML标签#

标签的属性#

!DOCTYPE标签#

由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同。在

W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility 
Mode);由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars
mode),这就是二者最简单的区别。

这样浏览器渲染上就产生了Quircks mode和Standars mode,两种渲染方法共存在一个浏览器上

window.top.document.compatMode:
//BackCompat:怪异模式,浏览器使用自己的怪异模式解析渲染页面。 
//CSS1Compat:标准模式,浏览器使用W3C的标准解析渲染页面

这个属性会被浏览器识别并使用,但是如果你的页面没有DOCTYPE的声明,那么compatMode默认就是BackCompat,

这也就是恶魔的开始 -- 浏览器按照自己的方式解析渲染页面,那么,在不同的浏览器就会显示不同的样式。

如果你的页面添加了<!DOCTYPE html>那么,那么就等同于开启了标准模式,那么浏览器就得老老实实的按照W3C的

标准解析渲染页面,这样一来,你的页面在所有的浏览器里显示的就都是一个样子了。

这就是<!DOCTYPE html>的作用

HTML文档结构#

固定结构#

上面的代码解释如下:

首先,<!DOCTYPE HTML>是文档声明,必须写在HTML文档的第一行,位于<html>标签之前,表明该文档是HTML5文档

HTML文档包含了HTML标签及文本内容,不同的标签在浏览器上会显示出不同的效果,所以我们需要记住最常见的标签的特性

HTML注释#

无论我们学习什么编程语言,一定要重视的就是注释,注释的重要性不言而喻,我们在此不再啰嗦,下面我们说一下HTML中注释的格式

1
2
3
<!-- 注释 -->
<br>在sublime中的快捷键
win -- ctrl + /

注意:注释中可以直接使用回车换行。并且我们习惯用注释的标签把HTML代码包裹起来

1
2
3
<!-- xxx部分 开始
    这里放你xxx部分的HTML代码
   xxx部分 结束 -->

注释的注意事项#

1
2
HTML注释不支持嵌套
HTML注释不能写在HTML标签中

HTML标签属性#

设置标签属性#

属性一般以键值对的方式写在开始标签中

为什么能设置属性#

你可以这样简单理解,因为最终我们这些标签会通过css去美化,通过javascript来操作,那么这些标签我们可以看成是一个对象,对象就应该有它自己的属性和方法。那么你像上面说到input标签,type=‘button’就是它的属性,onclick=‘addclick()’就是它的方法

注意事项#

标签分类#

HTML中标签元素三种不同类型:块状元素,行内元素,行内块状元素。

常用的块状元素#

1
<div>   <p>   <h1>~<h6>   <ol>   <ul>   <table>  <form>   <li>

block特点#

常用的行内元素#

inline特点#

常用的行内块状元素#

1
<img>   <input>

inline-block特点#

注意:

我们可以通过display属性对块级元素、行内元素、行内块元素进行转换,为后面页面布局做好了准备

标签嵌套规则#

块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素

块级元素不能放在p标签里面

有几个特殊的块级元素只能包含内嵌元素,不能再包含块级元素,这几个特殊的标签是

1
h1、h2、h3、h4、h5、h6、p

li元素可以嵌入ul,ol,div等标签

第一个HTML页面#

基本标签
#

常用标签#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<hn>: n的取值范围是1~6; 从大到小. 用来表示标题.
  
<p>: 段落标签. 包裹的内容被换行.并且也上下内容之间有一行空白.
  
<b> <strong>: 加粗标签.
  
<strike>: 为文字加上一条中线.
  
<em>: 文字变成斜体.
  
<sup>和<sub>: 上角标 和 下角表.
  
<br>:换行.
  
<hr>:水平线
  
<div> <span>

块级标签:<p> <h1>  <table> <ol> <ul> <form> <div>

内联标签:<a> <input> <img> <sub> <sup> <textarea> <span>

特殊字符#

&lt; &gt; &quot; &copy; &reg;
1
< > " © ®

实现简单的换行符#

<br>可插入一个简单的换行符。    <br />

<br>标签是空标签(意味着它没有结束符,因此下面的这个是错误的:<br></br>)

HTML中块级标签和内联标签的区别#

块级元素 行内元素
独占一行,默认情况下,其宽度自动填满其父元素宽度 相邻的行内元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容而变化
可以设置width,height属性 行内元素设置width,height属性无效
可以设置margin和padding属性 行内元素起边距作用的只有margin-left、margin-right、padding-left、padding-right,其它属性不会起边距效果。
对应于display:block 对应于display:inline;

head标签#

我们首先来介绍一下head标签的主要内容和作用,文档的头部描述了文档的各种属性和信息,包括文档的标题、编码方式及URL等信息,这些信息大部分是用于提供索引,辩认或其他方面的应用(移动端)等

title标签#

<title></title>标签之间的文字内容是网页的标题信息,它会显示在浏览器标签页的标题栏中。可以把它看成是一个网页的标题。主要用来告诉用户和搜索引擎这个网页的主要内容是什么,搜索引擎可以通过网页标题,迅速的判断出当前网页的主题

meta标签#

元素可提供有关页面的原信息(mata-information),针对搜索引擎和更新频度的描述和关键词。

标签位于文档的头部,不包含任何内容。

提供的信息是用户不可见的。 meta标签的组成:meta标签共有两个属性,它们分别是http-equiv属性和name属性,不同的属性又有不同的参数值,这些不同的参数值就实现了不同的网页功能

name属性

 

 

http-equiv属性

它用来向浏览器传达一些有用的信息,帮助浏览器正确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变量值

name属性#

主要用于页面的关键字和描述,是写给搜索引擎看的,关键字可以有多个用 ‘,’号隔开,与之对应的属性值为content,content中的内容主要是便于搜索引擎机器人查找信息和分类信息用的。

body标签#

想要在网页上展示出来的内容一定要放在body标签中。 把我们之前海燕那一段HTML代码贴过来,保存到一个HTML格式的文件中

标题标签#

<h1> - <h6> 标签可定义标题。<h1> 定义最大的标题。<h6> 定义最小的标题。 由于 h 元素拥有确切的语义,因此请您慎重地选择恰当的标签层级来构建文档的结构。因此,请不要利用标题标签来改变同一行中的字体大小。相反,我们应当使用css来定义来达到漂亮的显示效果。 标题标签通常用来制作文章或网站的标题

h1~h6标签的默认样式

文本样式标签主要用来对HTML页面中的文本进行修饰,比如加粗,斜体,线条样式等等

在浏览器中<em>默认会用斜体表示,<strong>会用粗体来表示。两个标签相比,我们通常会推荐大家使用<strong>表示强调

段落标签#

<p>,paragraph的简写。定义段落

<body>
        <p>我们大多数都是想法太多实践太少,或者简单点说就是想不劳而获</p>
        <p>为了改变自己,我决定好好学习,多做事情,少说话</p>

</body>

link标签#

<link> 标签定义文档与外部资源的关系。

<link> 标签最常见的用途是链接样式表。

利用link做一个小图标

超链接标签#

超级链接<a>标记代表一个链接点,是英文anchor(锚点)的简写。它的作用是把当前位置的文本或图片连接到其他的页面、文本或图像

锚点使用实例

链接其他表现形式#

列表标签#

网站页面上一些列表相关的内容比如说物品列表、人名列表等等都可以使用列表标签来展示。通常后面跟<li>标签一起用,每条li表示列表的内容

<ul>:unordered lists的缩写 无序列表 

<ol>:ordered listsde的缩写 有序列表

ol标签的属性

type:列表标识的类型

  • 1:数字
  • a:小写字母
  • A:大写字母
  • i:小写罗马字符
  • I:大写罗马字符

列表标识的起始编号

  • 默认为1

ul标签的属性

type:列表标识的类型

  • disc:实心圆(默认值)
  • circle:空心圆
  • square:实心矩形
  • none:不显示标识

盒子标签#

<div>可定义文档的分区 division的缩写 译:区 <div> 标签可以把文档分割为独立的、不同的部分,请看下面代码我们将他们进行分区

分析上面代码可以下面的层次结构

我们将文档放在一个父级的区(div)中,它里面包含四块区(div)域,浏览器查看效果,你会发现每小块区域都是独占一行的,所以div是块级元素。另外,每块区域表示独立的一块,id属性和class属性其实很简单,你可以看成给这个区域起个名字。id是唯一的,一个页面中不能有两个重复的id,跟身份证号码一样,class可以设置同样的属性值,并且可以设置多个,例如class=’para n1‘

图片标签#

一个网页除了有文字,还会有图片。我们使用<img/>标签在网页中插入图片。#

语法

1
<img src="图片地址" alt="图片加载失败时显示的内容" title = "提示信息" />

注意:

使用

与行内元素在一行内显示

可以设置宽度和高度

span标签可以单独摘出某块内容,结合css设置相应的样式

表格标签#

表格由<table> 标签来定义。每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由<td>标签定义)。字母 td 指表格数据(table data),即数据单元格的内容。数据单元格可以包含文本、图片、列表、段落、表单、水平线、表格等等

重要属性#

表格样式#

表格使用#

多行文本垂直居中#

表单标签 #

表单form是一个包含表单元素的区域
表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、输入框(input)、单选框()

表单的作用#

表单用于显示、手机信息,并将信息提交给服务器

语法

1
<form>允许出现表单控件</form>

表单标签<form>

表单用于向服务器传输数据。

表单能够包含input元素,比如文本字段、复选框、单选框、提交按钮等等。

表单还可以包含textarea、select、fieldset和label元素

表单属性#

HTML 表单用于接收不同类型的用户输入,用户提交表单时向服务器传输数据,从而实现用户与Web服务器的交互。表单标签, 要提交的所有内容都应该在该标签中.

action: 表单提交到哪. 一般指向服务器端一个程序,程序接收到表单提交过来的数据(即表单元素值)作相应处理,比如https://www.sogou.com/web

method: 表单的提交方式

post/get 默认取值 就是 get(信封)

       get      1.提交的键值对.放在地址栏中url后面. 2.安全性相对较差. 3.对提交内容的长度有限制.

       post    1.提交的键值对 不在地址栏. 2.安全性相对较高. 3.对提交内容的长度理论上无限制.

get/post是常见的两种请求方式.

表单元素

<input>  标签的属性和对应值

上传文件注意两点

 1 请求方式必须是post

 2 enctype="multipart/form-data"

 <select> 下拉选标签属性

 <textarea> 文本域              

name:    表单提交项的键.
cols: 文本域默认有多少列
rows: 文本域默认有多少行

 <label>    

<fieldset>

常用表单运用实例#

系统标签#

其他标签#

原生标签pre#

换行标签 br
#

<br>标签用来将内容换行,其在HTML网页上的效果相当于我们平时使用word编辑文档时使用回车换行。

分割线 hr
#

<hr>标签用来在HTML页面中创建水平分隔线,通常用来分隔内容

文档中的区段section#

空格#

浏览器在显示的时候会移除源代码中多余的空格和空行。 所有连续的空格或空行都会被算作一个空格。需要注意的是,HTML代码中的所有连续的空行(换行)也被显示为一个空格

所以HTML代码对缩进的要求并不严格,我们通常使用缩进来让我们的代码结构更清晰,仅此而已

特殊字符#

在上一个实例中,我们演示了HTML中输入空格、回车都是没有作用的。要想输入空格,需要用特殊符号 -- &nbsp;

HTML特殊符号对照表

特殊符号 命名实体 十进制编码 特殊符号 命名实体 十进制编码 特殊符号 命名实体 十进制编码
Α &Alpha; &#913; Β &Beta; &#914; Γ &Gamma; &#915;
Δ &Delta; &#916; Ε &Epsilon; &#917; Ζ &Zeta; &#918;
Η &Eta; &#919; Θ &Theta; &#920; Ι &Iota; &#921;
Κ &Kappa; &#922; Λ &Lambda; &#923; Μ &Mu; &#924;
Ν &Nu; &#925; Ξ &Xi; &#926; Ο &Omicron; &#927;
Π &Pi; &#928; Ρ &Rho; &#929; Σ &Sigma; &#931;
Τ &Tau; &#932; Υ &Upsilon; &#933; Φ &Phi; &#934;
Χ &Chi; &#935; Ψ &Psi; &#936; Ω &Omega; &#937;
α &alpha; &#945; β &beta; &#946; γ &gamma; &#947;
δ &delta; &#948; ε &epsilon; &#949; ζ &zeta; &#950;
η &eta; &#951; θ &theta; &#952; ι &iota; &#953;
κ &kappa; &#954; λ &lambda; &#955; μ &mu; &#956;
ν &nu; &#957; ξ &xi; &#958; ο &omicron; &#959;
π &pi; &#960; ρ &rho; &#961; ς &sigmaf; &#962;
σ &sigma; &#963; τ &tau; &#964; υ &upsilon; &#965;
φ &phi; &#966; χ &chi; &#967; ψ &psi; &#968;
ω &omega; &#969; ϑ &thetasym; &#977; ϒ &upsih; &#978;
ϖ &piv; &#982; &bull; &#8226; &hellip; &#8230;
&prime; &#8242; &Prime; &#8243; &oline; &#8254;
&frasl; &#8260; &weierp; &#8472; &image; &#8465;
&real; &#8476; &trade; &#8482; &alefsym; &#8501;
&larr; &#8592; &uarr; &#8593; &rarr; &#8594;
&darr; &#8595; &harr; &#8596; &crarr; &#8629;
&lArr; &#8656; &uArr; &#8657; &rArr; &#8658;
&dArr; &#8659; &hArr; &#8660; &forall; &#8704;
&part; &#8706; &exist; &#8707; &empty; &#8709;
&nabla; &#8711; &isin; &#8712; &notin; &#8713;
&ni; &#8715; &prod; &#8719; &sum; &#8722;
&minus; &#8722; &lowast; &#8727; &radic; &#8730;
&prop; &#8733; &infin; &#8734; &ang; &#8736;
&and; &#8869; &or; &#8870; &cap; &#8745;
&cup; &#8746; &int; &#8747; &there4; &#8756;
&sim; &#8764; &cong; &#8773; &asymp; &#8773;
&ne; &#8800; &equiv; &#8801; &le; &#8804;
&ge; &#8805; &sub; &#8834; &sup; &#8835;
&nsub; &#8836; &sube; &#8838; &supe; &#8839;
&oplus; &#8853; &otimes; &#8855; &perp; &#8869;
&sdot; &#8901; &lceil; &#8968; &rceil; &#8969;
&lfloor; &#8970; &rfloor; &#8971; &loz; &#9674;
&spades; &#9824; &clubs; &#9827; &hearts; &#9829;
&diams; &#9830;   &nbsp; &#160; ¡ &iexcl; &#161;
¢ &cent; &#162; £ &pound; &#163; ¤ &curren; &#164;
¥ &yen; &#165; ¦ &brvbar; &#166; § &sect; &#167;
¨ &uml; &#168; © &copy; &#169; ª &ordf; &#170;
« &laquo; &#171; ¬ &not; &#172;   &shy; &#173;
® &reg; &#174; ¯ &macr; &#175; ° &deg; &#176;
± &plusmn; &#177; ² &sup2; &#178; ³ &sup3; &#179;
´ &acute; &#180; µ &micro; &#181 " &quot; &#34;
< &lt; &#60; > &gt; &#62; '   &#39;
posted @   鲸鱼的海老大  阅读(905)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示
CONTENTS