50-Web基础-HTML
1、什么是HTML?
HTML 是用来描述网页的一种语言。
- HTML 指的是超文本标记语言 (Hyper Text Markup Language)
- HTML 不是一种编程语言,而是一种标记语言 (markup language)
- 标记语言是一套标记标签 (markup tag)
- HTML 使用标记标签来描述网页
- HTML 文档描述网页
- HTML 文档包含 HTML 标签和纯文本
- HTML 文档也被称为网页,Web 浏览器的作用是读取 HTML 文档,并以网页的形式显示出它们。浏览器不会显示 HTML 标签,而是使用标签来解释页面的内容。
2、标签
2.1 基础概念
- HTML标签是HTML语言中最基本的单位,标签不区分大小写,由尖括号包裹关键字构成,例如<html>test</html> 叫做html标签,<div>test</div>叫做div标签,以此类推。
- 类似<meta>这种就叫做自闭合标签,类似<a></a>就叫做主动闭合标签。
- 标签可以嵌套,例如<div><div></div></div>。
- 标签存在的意义:定位操作、CSS操作、让JS操作更简单。
- 所有的标签分为块级标签和行内标签(又叫做内联标签)
- 块级标签:占满一行,如常见的H系列标签,P标签,div标签。
- 行内标签(内联标签):只占元素长度大小,如span标签。
2.2 常用的标签
<!DOCTYPE> 定义遵循的文档类型,如<!DOCTYPE html> 则代表遵循html文档规范。
2.2.1 head中的常见标签:
1 <head> 2 <meta charset="UTF-8"> <!-- meta为自闭合标签, charset属性定义字符编码 --> 3 <meta http-equiv="Refresh" content="3"> <!-- 3秒自动刷新 --> 4 <meta http_equiv="Refresh" content="3;Url=http://edu.51cto.com"> <!-- 3秒自动跳转百度 --> 5 <meta name="keywords" content="吃鸡,关键字2,关键字3"> <!-- 给搜索引擎用的关键字 --> 6 <meta name="description" content="网站描述信息"> <!-- 描述当前网站是干嘛的 --> 7 <meta http_equiv="X-UA-Compatible" content="IE=EmulateIE8;IE=IE7"> <!-- 主动兼容IE8和IE7 --> 8 <title>标签</title> <!-- head内部的标签只有title可见 --> 9 <link rel="shortcut icon" href="image/favicon.ico"> <!-- 小图标显示 --> 10 </head>
2.2.2 body中的常见标签:
2.2.2.1 <h>-</h>标签:h标签用来定义标题
<body> <h1>Druid</h1> <!-- h标签用来定义标题,字体从上至下依次缩小 --> <h2>Druid</h2> <h3>Druid</h3> <h4>Druid</h4> <h5>Druid</h5> <h6>Druid</h6> </body>
2.2.2.2 <p>-</p>标签:p标签用来定义段落
1 <body> 2 <p>第一段落</p> <!-- p标签用来控制段落,段落间有间距 --> 3 <p>第二段落</p> 4 <p>第三段落</p> 5 </body>
2.2.2.3 <span>-</span>标签:span标签为白板标签(行内标签)
1 <body> 2 <span>第一行</span> <!-- 行内标签(内联标签) --> 3 <span>这里紧跟第一行,不会换行</span> 4 </body>
2.2.2.4 <div>-</div>标签:div标签为白板标签(块级标签)
1 <body> 2 <div>第一行</div> <!-- 块级标签 --> 3 <div>这里就要换行了</div> 4 </body>
2.2.2.5 <a>-</a>标签:a标签用来定义链接和锚
用来定义链接:单击文字即可跳转至链接
<body> <a href="http://www.baidu.com" target="_blank">百度</a> <!-- target="_blank"在新的标签页打开百度,若不加则在原页打开 --> </body>
用来定义锚:作为锚点,单击文字即可跳转至对应的ID处。什么是锚?通俗的讲,我们想要让页面跳转到的位置,就是锚点。锚点是一种超链接,只不过它是页面内部的超链接,
它指向页面特定的部分。
要使用锚点定位,需要两个部分组成:1、锚点; 2、指向锚点的链接
方法一:使用id属性作为锚点,a标签作为指向锚记的链接,俗称“id”定位,代码如下所示:
1 <body> 2 <a href="#1">第一章</a> <!-- #为关键字符,创建指向锚点的链接,id后面的字符要和跳转地方id属性值保持一致 --> 3 <a href="#2">第二章</a> 4 <a href="#c">第三章</a> 5 <div style="height: 600px;" id="1"> <!-- 创建的锚点 --> 6 第一章的内容 7 </div> 8 <div style="height: 600px;" id="2"> <!-- 创建的锚点 --> 9 第二章的内容 10 </div> 11 <div style="height: 600px;" id="c"> <!-- 创建的锚点 --> 12 第三章的内容 13 </div> 14 </body>
方法二:既使用a标签的name属性作为锚点,又使用a标签作为指向锚点的链接,俗称“name”定位,代码如下所示:
1 <body> 2 <a href="#1">第一章</a> <!-- #为关键字符,创建指向锚的链接,#后面的字符要和跳转地方name属性值保持一致 --> 3 <a href="#2">第二章</a> 4 <a href="#c">第三章</a> 5 <p></p> 6 <a style="display:inline-block; height: 600px; width: 100%" name="1"> <!-- 创建锚点;inline-block为行内块,因此需要设置宽度 --> 7 <p>第一章的内容</p> 8 </a> 9 <a style="display:block; height: 600px;" name="2"> <!-- 创建锚点;block为块元素,因此不需要设置宽度 --> 10 第二章的内容 11 </a> 12 <a style="display:inline-block; height: 600px; width: 100%" name="c"> <!-- 创建锚点 --> 13 第三章的内容 14 </a> 15 </body>
2.2.2.6 <img />标签:img标签用来定义图片
1 <body> 2 <img src="1.png" /> 3 </body>
1 <body> 2 <a href="http://www.baidu.com"> 3 <img src="1.png" title="图片" style="height: 300px;width: 300px" alt="图片"/> 4 </a> <!-- 单击图片直接跳转至指定url;title属性用于鼠标悬浮显示信息;alt属性在图片不能显示的时候显示对应的文字信息 --> 5 6 </body>
2.2.2.7 <br />标签:<br /> 元素是一个空的 HTML 元素,用来换行
1 <body> 2 <div>换行<br />测试</div> 3 </body>
2.2.2.8 <form> </form>标签:HTML表单用于收集用户输入,form标签用来定义HTML表单。HTML表单又包含表单元素:input、select和textarea。
<input />标签(元素):
1 <body> 2 <form action="" method=""> <!-- form为表单标签,用来向后台提交数据;action属性用来指定服务器url;method用来指定get或者post --> 3 <input type="text" /> <!-- 单行文本输入框 --> 4 <br /> 5 <input type="password" /> <!-- 会隐藏真实字符 --> 6 <input type="button" value="没用" /> <!-- button默认情况下无用 --> 7 <input type="submit" value="登录" /> <!-- submit才能提交表单 --> 8 </form> 9 </body>
1 <body> 2 <form action="http://localhost:8888/index" method="post"> <!-- get会将输入内容拼接成url提交给后台,post会将内容放到数据中提交给后台 --> 3 <input type="text" name="user" /> <!-- name属性用来定义字典的key --> 4 <br /> 5 <input type="password" name="pwd" /> 6 <!-- 打包成字典{"user": "用户输入的用户名", "pwd": "用户输入的密码"}发给后台 --> 7 <input type="button" value="没用" /> 8 <input type="submit" value="登录" /> 9 </form> 10 </body>
<body> <form enctype="multipart/form-data"> <!-- enctype="multipart/form-data"该属性用来上传文件 --> <div> 用户名:<input type="text" name="user" /> <p>请选择性别:</p> 男:<input type="radio" name="sex" value="1" checked="checked" /> <!-- radio为单选框,如果没有name或者name不相同,那么就可以多选 --> 女:<input type="radio" name="sex" value="2" /> <!-- 这里的value用于给后台传数据;checked用来设置默认值 --> <p>爱好:</p> 篮球:<input type="checkbox" name="favor" value="1" /> <!-- checkbox为复选框 --> 足球:<input type="checkbox" name="favor" value="2" /> <!-- 这里的name用于后台批量获取数据 --> 羽毛球:<input type="checkbox" name="favor" value="3" /> 台球:<input type="checkbox" name="favor" value="4" /> 网球:<input type="checkbox" name="favor" value="5" /> <p>技能:</p> 写代码:<input type="checkbox" name="skill" value="1" checked="checked" /> 修车:<input type="checkbox" name="skill" value="2" /> <p>上传文件:</p> <input type="file" name="filename" /> <!-- type="file"用来上传文件,真实的传文件依赖form表单属性enctype --> </div> <input type="reset" value="重置" /> <!-- 重置除默认值以外的值 --> <input type="submit" value="提交" /> </form> </body>
<select> </select>标签(元素):select标签定义下拉列表,option标签定义待选项,列表通常会把首个选项显示为被选选项,能够通过添加 selected 属性来定义预定义选项。
value属性规定在表单被提交时被发送到服务器的值。<option> 与 </option> 之间的值是浏览器显示在下拉列表中的内容,而value属性中的值是表单被提交时被发送到服务器的值。
如果没有指定value属性,<option> 与 </option> 之间的值则会在表单被提交时发送到服务器。
1 <body> 2 <form> 3 <div> 4 <select name="city"> 5 <option value="1">北京</option> 6 <option value="2">上海</option> 7 <option value="3">广东</option> 8 <option value="4">深圳</option> 9 <option value="5" selected="selected">成都</option> 10 </select> <!-- selected="selected"为默认值 --> 11 <input type="submit" value="提交" /> 12 </div> 13 <div> 14 <select name="city" size="10"> 15 <option value="1">北京</option> 16 <option value="2">上海</option> 17 <option value="3">广东</option> 18 <option value="4">深圳</option> 19 <option value="5" selected="selected">成都</option> 20 </select> <!-- size用来设置显示的行数 --> 21 <input type="submit" value="提交" /> 22 </div> 23 <div> 24 <select name="city" size="10" multiple="multiple"> 25 <option value="1">北京</option> 26 <option value="2">上海</option> 27 <option value="3">广东</option> 28 <option value="4">深圳</option> 29 <option value="5" selected="selected">成都</option> 30 </select> <!-- multiple属性用于多选 --> 31 <input type="submit" value="提交" /> 32 </div> 33 <div> 34 <select name="city"> 35 <optgroup label="北京市"> 36 <option value="1" selected="selected">北京</option> 37 </optgroup> 38 <optgroup label="四川省" /> 39 <option value="2" selected="selected">成都</option> 40 <option value="3">绵阳</option> 41 </optgroup> 42 <optgroup label="河北省" /> 43 <option value="4" selected="selected">石家庄</option> 44 <option value="5">保定</option> 45 </optgroup> 46 </select> <!-- optgroup属性用于组合相关选项 --> 47 <input type="submit" value="提交" /> 48 </div> 49 </form> 50 </body>
<label></label>标签: 标签为 input 元素定义标注(标记)。label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在 label 元素内点击文本,就会触发此控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。<label> 标签的 for 属性应当与相关元素的 id 属性相同。
1 <html> 2 <body> 3 4 <p>请点击文本标记之一,就可以触发相关控件:</p> 5 6 <form> 7 <label for="male">Male</label> 8 <input type="radio" name="sex" id="male" /> 9 <br /> 10 <label for="female">Female</label> 11 <input type="radio" name="sex" id="female" /> 12 </form> 13 14 </body> 15 </html>
<textarea> </textarea>标签(元素):textarea标签用来定义多行输入
1 <body> 2 <div> 3 <textarea name="key"> 4 这里的文本作为默认值 5 </textarea> <!-- textarea标签用来定义多行输入,name还是作为Key --> 6 </div> 7 </body>
2.2.2.9 HTML列表:HTML支持有序、无序列表和定义列表
无序列表是一个项目的列表,此列项目使用粗体圆点(典型的小黑圆圈)进行标记。无序列表始于 <ul> 标签。每个列表项始于 <li>。列表项内部可以使用段落、换行符、图片、链接以及其他列表等等。
1 <body> 2 <ul> 3 <li>第一行</li> 4 <li>第二行</li> 5 <li>第三行</li> 6 </ul> <!-- ul样式为圆点 --> 7 </body>
1 <body> 2 <h1>一个嵌套列表:</h1> 3 <ul> 4 <li>咖啡</li> 5 <li>茶 6 <ul> 7 <li>红茶</li> 8 <li>绿茶</li> 9 </ul> 10 </li> 11 <li>牛奶</li> 12 </ul> 13 </body>
有序列表也是一列项目,列表项目使用数字进行标记。有序列表始于 <ol> 标签。每个列表项始于 <li> 标签。列表项内部可以使用段落、换行符、图片、链接以及其他列表等等。
1 <body> 2 <ol> 3 <li>第一行</li> 4 <li>第二行</li> 5 <li>第三行</li> 6 </ol> <!-- ol样式为数字 --> 7 </body>
1 <body> 2 <h1>数字列表:</h1> 3 <ol> 4 <li>苹果</li> 5 <li>香蕉</li> 6 <li>柠檬</li> 7 <li>桔子</li> 8 </ol> 9 10 <h1>字母列表:</h1> 11 <ol type="A"> 12 <li>苹果</li> 13 <li>香蕉</li> 14 <li>柠檬</li> 15 <li>桔子</li> 16 </ol> 17 18 <h1>小写字母列表:</h1> 19 <ol type="a"> 20 <li>苹果</li> 21 <li>香蕉</li> 22 <li>柠檬</li> 23 <li>桔子</li> 24 </ol> 25 26 <h1>罗马字母列表:</h1> 27 <ol type="I"> 28 <li>苹果</li> 29 <li>香蕉</li> 30 <li>柠檬</li> 31 <li>桔子</li> 32 </ol> 33 34 <h1>小写罗马字母列表:</h1> 35 <ol type="i"> 36 <li>苹果</li> 37 <li>香蕉</li> 38 <li>柠檬</li> 39 <li>桔子</li> 40 </ol> 41 </body>
自定义列表不仅仅是一列项目,而是项目及其注释的组合。自定义列表以 <dl> 标签开始。每个自定义列表项以 <dt> 开始。每个自定义列表项的定义以 <dd> 开始。定义列表的列表项内部可以使用段落、换行符、图片、链接以及其他列表等等。
1 <body> 2 <dl> 3 <dt>标题行</dt> 4 <dd>缩进行1</dd> 5 <dd>缩进行2</dd> 6 <dt>标题行</dt> 7 <dd>缩进行1</dd> 8 <dd>缩进行2</dd> 9 </dl> 10 </body>
让列表元素横向排列
1 <head> 2 <meta charset="UTF-8"> 3 <title>Title</title> 4 <style> 5 li{ 6 width:100px; 7 height:20px; 8 float:left; 9 list-style: none; <!-- 不显式任何列表符号 --> 10 } 11 </style> 12 </head> 13 <body> 14 <ul > 15 <li>列表内容</li> 16 <li>列表内容</li> 17 <li>列表内容</li> 18 </ul> 19 </body>
2.2.2.10:table表格标签,用来定义HTML表格
1 <body> 2 <table> 3 <tr> 4 <td>第一行,第一列</td> 5 <td>第一行,第二列</td> 6 <td>第一行,第三列</td> 7 </tr> <!-- tr表示一行 td表示一列--> 8 <tr> 9 <td>第二行,第一列</td> 10 <td>第二行,第二列</td> 11 <td>第二行,第三列</td> 12 </tr> 13 </table> 14 <table border="1"> 15 <tr> 16 <td>第一行,第一列</td> 17 <td>第一行,第二列</td> 18 <td>第一行,第三列</td> 19 </tr> 20 <tr> 21 <td>第二行,第一列</td> 22 <td>第二行,第二列</td> 23 <td>第二行,第三列</td> 24 </tr> 25 </table> 26 </body>
1 <body> 2 <table border="1"> 3 <tr> 4 <td>主机名</td> 5 <td>IP地址</td> 6 <td>端口号</td> 7 <td>操作</td> 8 </tr> 9 <tr> 10 <td>host1</td> 11 <td>1.1.1.1</td> 12 <td>80</td> 13 <td> 14 <a href="http://www.baidu.com">查看详细</a> 15 <a href="#">修改</a> 16 </td> 17 </tr> 18 <tr> 19 <td>host2</td> 20 <td>2.2.2.2</td> 21 <td>80</td> 22 <td> 23 <a href="http://www.baidu.com">查看详细</a> 24 <a href="#">修改</a> 25 </td> 26 </tr> 27 <tr> 28 <td>host3</td> 29 <td>3.3.3.3</td> 30 <td>80</td> 31 <td> 32 <a href="http://www.baidu.com">查看详细</a> 33 <a href="#">修改</a> 34 </td> 35 </tr> 36 </table> 37 </body>
下面的写法才是最标准的:
1 <body> 2 <table border="1"> 3 <thead> 4 <tr> 5 <th>主机名</th> 6 <th>IP地址</th> 7 </tr> 8 </thead> 9 <tbody> 10 <tr> 11 <td>host1</td> 12 <td>1.1.1.1</td> 13 </tr> 14 <tr> 15 <td>host2</td> 16 <td>2.2.2.2</td> 17 </tr> 18 <tr> 19 <td colspan="2">第三行占两列</td> 20 </tr> 21 <tr> 22 <td rowspan="2">host3占两行</td> 23 <td>3.3.3.3</td> 24 </tr> 25 <tr> 26 <td>3.3.3.3</td> 27 </tr> 28 </tbody> 29 </table> <!-- thead为标准的表头,tbody为标准的表内容;colspan合并列,rowspan合并行 --> 30 </body>
2.2.2.11:fieldset标签用来对表单元素进行分组
1 <body> 2 <form> 3 <fieldset> 4 <legend>登录</legend> <!-- 该标签用来设置框上的文字 --> 5 <label for="username">用户名:</label> 6 <input type="text" name="user" id="username" /> 7 <label for="password">密码:</label> 8 <input type="password" name="pwd" id="password" /> 9 </fieldset> 10 <fieldset> 11 <legend>性别</legend> <!-- 该标签用来设置框上的文字 --> 12 男:<input type="radio" name="sex" value="1" checked="checked" /> 13 女:<input type="radio" name="sex" value="2" /> 14 </fieldset> 15 </form> 16 </body>
3、注释
HTML语言注释用<!-- 注释 -->,CSS中用/*注释*/