01 前端--HTML内容
一、HTML的本质
1.1 Web服务本质
在这里我们先提一下网络编程中的socket套接字,我们知道我们的TCP连接有C/S和B/S
- C/S:是客户端和服务端之间进行通信连接
- B/S:是浏览器和服务端之间进行通信连接的,这里浏览器其实就是相当于是客户端
*通过B浏览器向服务端建立连接
- 先建立服务端
import socket
server = socket.socket()
server.bind(('127.0.0.1',8080)) #'127.0.0.1'是一个本机的回环地址,我只能在本机访问,8080是端口号
server.listen(5)
while True:
conn,addr = server.accept()
data = conn.recv(8096)
conn.send(b'http://1.1 200 ok\r\n\r\n') # 是告诉浏览器遵循http协议
conn.send(b'hello world !')
# conn.send(b'<h1>hello world !</h1>')
conn.close()
- 通过浏览器去访问我的服务端地址(127.0.0.1:8080)此时我的浏览器显示窗口中就会显示我服务端给浏览器的信息
浏览器发送请求-->HTTP协议-->服务端接收请求-->服务端返回响应-->服务端把内容发送给浏览器-->浏览器将服务端发送的信息渲染页面
1.2 HTML是什么
- HTML是超文本标记语言(Hyertent Markup Languge):是一种创建网页的标记语言
- 本质上是浏览器可识别的一种规则,我们按照规则来写网页,浏览器根据规则来渲染我们的网页。对于不同的浏览器,对于HTML中的同一个标签可能会有不同的的解释(兼容性问题)
- 用HTML写的网页的文件扩展名就是.html或.htm
此处解释为什么会有.htm:在早期的时候,文件的后缀名没有4位的,所以.htm是早期的网页文件用的扩展名,现在我们用.html,但是这不代表.htm就不可以,现在htm依然适用
注意:HTML是一种标记语言(Markup language),它不是一种编程语言。HTML使用标签来描述网页
1.3 HTML标记语言的文档结构
在Pycharm里面我们是可以之间创建.HTML网页文件的,并且Pycharm会自动给我们生成最基础的HTML文档的结构
<!DOCTYPE html>
<html lang='zh_CN'>
<head>
<meta charset='UTF-8'>
<title>我的网页</title>
</head>
<body>
</body>
</html>
- <!DOCTYPE html>是声明这个文件为HTML5文档,浏览器要以HTML5的版本来解析我的文档,文件的声明必须位于文件的第一行,位于<html>标签之前。
- <html> 、</html>是文档开始标记和结束的标记,是HTML页面的根元素,在它们之间是文档的头部(head)和主体(body)。
- <html lang='language'>其中的lang属性表示的是HMTL文档用的是那个国家的语言
- <head>、</head>定义HTML文档的开头部分,他们之间的内容不会显示在浏览器的文档窗口显示,包含了文档的(meta)源数据
- <title>、</title>定义了浏览器打开HTML文件时显示在网页标题内容,在浏览器标题栏中显示
- <body>、</body>body标签之间的所有内容分都是浏览器打开HTML5文件时可见的网页的主题内容,也就是说浏览会把body标签的所有内容渲染到浏览器的文本显示窗口中
注意:对于中文网页需要使用<meta charset = 'UTF-8'>声明编码,否则会出现乱码。有些浏览器会设置 GBK 为默认编码,则你需要设置为<meta charset="gbk">。
1.4 HTML标签的格式
- HTML标签是由尖括号包围的关键字,如<html> ,<body>
- HTML标签通常是成对出现的,比如<head>、</head>第一个标签是开始标签,第二个标签是结束标签,结束标签会有一个斜线
- 也有一部分标签是单独呈现的,比如<br>、</hr>、<img src=’1.jpg‘>等
- 标签里面会有若干个属性,也可以不写属性
1.4.1 标签的语法
- <标签名 属性名1="属性值1" 属性名2="属性值2" .........>内容部分</标签名>
- <标签名 属性名1="属性值1" 属性名2="属性值2" ........./>
1.4.2 标签的重要属性
- id:定义标签的唯一id,id的属性值在HTML文档中必须是全页面唯一的
- class:为HTML元素定义一个或多个类名(classname)(CSS样式类名)
- style:规定元素的行内样式(CSS样式)
1.5 HTML的注释
<!--注释内容-->
特别提醒:想要写好的代码,注释是必不可少的, 写哪一种语言都必用的,注释是代码之母
二、HTML的常用标签
2.1 head标签内常用的标签
标签 | 意义 |
---|---|
<meta/> | 定义网页信息的 |
<title></title> | 定义网页标题 |
<style></style> | 定义内部CSS样式 |
<script></script> | 定义JS代码,或者引入外部JS文件 |
<link/> | 引入外部样式表文件的 |
2.1.1 Meta标签介绍
- <meta>元素可提供有关页面的源信息(meta-information),针对搜索引擎和更新频度的描述和关键词。
- <meta>标签位于文档的头部,不包含任何的内容
- <meta>提供的信息是用户不可见的
2.1.2 Meta标签组成
- meta 标签共有两个属性,他们分别是http-equiv属性和name属性,不同的属性又有不同的参数值,这些不同的参数值就实现了不同的网页功能。
- http-equiv属性:相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变量值。
<!-- 2秒钟以后当前页面自动跳转到其他的页面,注意content属性值的“ ”-->
<meta http-equiv="refresh" content="2;URL=https://www.baidu.com">
<!--告诉IE浏览器以最高级模式来渲染文档,主要因为IE浏览器浏览网页熟读太慢了,也不怎么会用-->
<meta http-equiv='x-ua-compatible' content="IE-edge" >
- name属性:主要用于描述网页的,与之对应的属性值为content,content中的内容主要是便于搜索引擎机器人查找信息和分类信息用的。
<!--比如我们在搜索引擎中搜索content属性中的值的话,搜索引擎会为我们推送此网站-->
<meta name="keywords" content="meta总结,html meta,meta属性,meta跳转">
<!--content对应的属性值描述的是我们整个网页的信息,这个网页是干嘛的-->
<meta name="description" content="老男孩教育Python学院">
2.2 body标签内常用的标签
2.2.1 标题标签
<!--先提一些基本的标签-->
<b>加粗</b>
<i>斜体</i>
<u>下划线</u>
<s>删除</s>
<!--换行-->
<br>
<!--水平线-->
<hr>
<h1>我的标题1</h1>
<h2>我的标题2</h2>
<h3>我的标题3</h3>
<h4>我的标题4</h4>
<h5>我的标题5</h5>
<h6>我的标题6</h6>
我们其实也是可以通过CSS样式控制字体的显示大小,但是用<h1></h1>标题标签的话,就相当于是一个标记,比较方便,可以清楚的标明这处为积极标题
注意:标题标签只有六级
1.特殊字符
内容 | 对应代码 |
---|---|
空格 | |
> | > |
< | < |
& | & |
¥ | ¥ |
版权 | © |
注册 | ® |
2.2.2 段落标签
<p>段落标签</p>:段落标签的内容,就是为一个段落
2.2.3 超链接标签
所谓超链接:是指从一个网页指向一个目标的链接关系,这个目标可以是另一个网页,也可以是相同网页上的不同位置,还可以是一个图片,一个电子邮件地址,一个文件,甚至是一个应用程序。
<!-- 指向另一个网页-->
<a href='http://www.baidu.com'>百度</a>
## 这里还有一个属性target,它的属性值指的是我跳转到另一个网页的时候是以新的窗口打开还是在原窗口中打开,覆盖原网页
### target默认是="_self" :在原网页中打开,覆盖当前打开的网页
### target="_blank" :打开一个新的窗口
<a href='http://www.baidu.com' target="_blank">百度</a>
-
href属性指定目标网页地址。该地址可以有以下几种类型:
- 绝对URL-指向另一个站点(比如 href="http://www.jd.com)
- 相对URL - 指当前站点中确切的路径(href="test.html")也就是自己的写的网页
- 锚URL - 指向页面中的锚(href="#h1")
<!DOCTYPE html> <html lang="zh_CN"> <head> <meta charset="UTF-8"> <!--<meta http-equiv="refresh" content="2;url=https://www.baidu.com">--> <title>我的网页</title> </head> <body> <h1 id="h1" >我的标题1</h1> <p>段落标签</p> <!--指向其他的URL,在原网页上打开--> <a href="http://www.baidu.com">百度</a> <!--指向其他的URL--> <a href="http://www.baidu.com" target="_blank">百度</a> <!--本地自己的站点--> <a href="test.html" target="_blank">百度</a> <!--锚点,回到当前页面的h1的位置,h1设置了id属性--> <a href="#h1">百度</a> </body> </html>
2.2.4 图片标签
<img src="图片的路径" alt="加载图片不成功时,显示的提示信息" title="鼠标悬浮在图片上提示信息" width="宽" height="高(宽高两个属性只用一个会自动等比缩放)">
2.2.5 列表标签
1.无序列表
<ul type="disc">
<li>第一项</li>
<li>第二项</li>
</ul>
type属性:
- disc(实心圆点,默认值)
- circle(空心圆圈)
- square(实心方块)
- none(无样式)
2.有序列表
<ol type="1" start="2">
<li>第一项</li>
<li>第二项</li>
</ol>
type属性:
- 1 数字列表,默认值
- A 大写字母
- a 小写字母
- Ⅰ大写罗马
- ⅰ小写罗马
3. 标题列表
<dl>
<dt>标题1</dt>
<dd>内容1</dd>
<dt>标题2</dt>
<dd>内容1</dd>
<dd>内容2</dd>
</dl>
2.2.6 表格标签
表格是一个二维数据空间,一个表格由若干行组成,一个行又有若干单元格组成,单元格里可以包含文字、列表、图案、表单、数字符号、预置文本和其它的表格等内容。
表格最重要的目的是显示表格类数据。表格类数据是指最适合组织为表格格式(即按行和列组织)的数据。
表格的基本结构:
<thead></thead>:表格的标题部分
<tbody></tbody>:表格的内容
<table border="1" cellpadding="20" cellspacing="20">
<thead >
<tr>
<th>id</th>>
<th>name</th>
<th>age</th>>
<th>sex</th>>
</tr>
</thead>
<tbody>
<tr >
<td rowspan="2">1</td>
<td>xichen</td>
<td>18</td>
<td>女</td>
</tr>
<tr>
<td>2</td>
<td>xcuhen</td>
<td>19</td>
<td>男</td>
</tr>
</tbody>
</table>
属性:
-
border: 表格边框.
<table border="1">
-
cellpadding: 内边距
<table cellpadding="20">
-
cellspacing: 外边距.
<table cellspacing="20">
-
width: 像素 百分比.(最好通过css来设置长宽)
-
rowspan: 单元格竖跨多少行
<td rowspan="2">
-
colspan: 单元格横跨多少列(即合并单元格)
<td rowspan="2">
2.2.7 div标签和span标签
div标签用来定义一个块级元素,并无实际的意义。主要通过CSS样式为其赋予不同的表现。
span标签用来定义内联(行内)元素,并无实际的意义。主要通过CSS样式为其赋予不同的表现。
块级元素与行内元素的区别:
所谓块元素,是以另起一行开始渲染的元素,行内元素则不需另起一行。如果单独在网页中插入这两个元素,不会对页面产生任何的影响。
这两个元素是专门为定义CSS样式而生的。
注意:
关于标签嵌套:通常块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
p标签不能包含块级标签,p标签也不能包含p标签。
三、form表单
3.1 form表单的功能
- 表单是用于向服务器传输数据的,从而实现用户与web服务器的交互
- 表单能够包含input系列标签,比如文本字段、复选框、单选框、提交按钮等
- 表单还可以包含textarea、select、fieldset和label标签
3.2 form表单的属性
属性 | 描述 |
---|---|
action | 提交地址,为空的时候默认提交的地址是当前网页 |
method | 规定在提交表的时候的请求方式(get/post)默认的是get |
enctype | 在表单上传文件的时候,要设置为“multipart/form-data” |
name | 规定识别表单的名称(对于 DOM 使用:document.forms.name) |
accept-charset | 规定在被提交表单中使用的字符集(默认:页面字符集)。 |
3.3 form表单元素
1.input标签的属性
<input>标签会根据type属性,变化为多种形态
type属性值 | 表现形式 | 对应代码 |
---|---|---|
text | 单行输入文本框 | <input type="text"/> |
password | 密码输入框 | <input type="password"/> |
date | 日期输入框 | <input type="date"/> |
checkbox | 复选框 | <input type="checkbox"/> |
radio | 单选框 | <input type="radio"/> |
submint | 提交按钮 | <input type="submit"/> |
reset | 重置按钮 | <input type="reset"/> |
button | 普通按钮 | <input type="button"/> |
hidden | 隐藏输入框中的内容 | <input type="hidden"/> |
file | 文本选择框,可以上传文件 | <input type="file"/> |
1.1 input标签属性说明
- name:表单提交时的“键”,注意和id的区别
- value:表单提交时对应项的值
- checked:radio和checkbox默认被选中的项
- readonly:text和password设置只读
- disabled:所有input均适用
- hidden:隐藏文本框中的输入内容
1.2input标签基本语法使用
<!-- input 标签也是写在form标签内部的-->
<!-- input标签是一个单标签,行内标签-->
1.表单中文本框和密码框(text/password)
2.表单的单选框和复选框(radio/checkbox)
3.submit提交按钮
4.button普通按钮
5.file上传文件/图片
4.reset重置
<form action="" method="get" enctype="multipart/form-data">
<div>
<!--这里的文本框的描述信息“用户名”我们可以像下面这样写,也可以用<label>标签写-->
<!-- <label>用户名</label> -->
<!--value="123" 是文本框一开始就默认显示的值-->
<!--hidden 是隐藏文本框中的输入内容的-->
<!--readonly 代表文本框是只读的-->
用户名:<input type="text" name="user" value="123" readonly >
</div>
<div>
<!-- 表单的密码框是密文的,描述信息“密码”一样可以用label标签写-->
密码:<input type="password" name="pwd">
</div>
<div>
<!--radio单选框,有多个选项只能选择一个,name属性是代表我单选框的总字段名,
value的值是提交到后台的值,checked是默认选择的-->
<input type="radio" name="sex" value="1" checked>男
<input type="radio" name="sex" value="0">女
</div>
<div>
<!--checkbox复选框,有多个选项,可以选择多个值,
value的作用都是一样的,checked也是同理-->
<input type="checkbox" name="hobbies" value="1" checked> 唱歌
<input type="checkbox" name="hobbies" value="2" checked> 跳舞
<!--disable 禁用,表示该input内不可用-->
<input type="checkbox" name="hobbies" value="3" disabled> 做饭
</div>
<div>
<!--submit 提交按钮,这个是根据form表单中的action和method的属性来提交的-->
<input type="submit">
<!--button 普通按钮 就是一个鼠标点上去会闪,但是不会提交-->
<input type="button" value="登录">
</div>
<div>
<!--file上传文件的,如果选择这个属性的话,
需要把form表单的enctype属性设置为"multipart/form-data"-->
<input type="file" name="上传文件">
</div>
<div>
<!--reset重置,在点击她的时候,form表单的需要用户填写的内容都会被清空掉-->
<input type="reset">
</div>
</form>
3. select标签属性
select:form表单中的下拉列表框
3.1 select标签的属性说明
- multiple:布尔属性,设置后为多选,否则为单选
- disabled:禁用
- selected:默认选中某一项
- value:定义提交时的选项值
3.2 select标签的基本语法使用
<form action="" method="get">
<!--multiple属性设置了以后,表示下拉列表框是可以多选-->
<!--需要按住shift 选择多个选项-->
<select name="city" id="city" multiple>
<option value="1">淮南</option>
<!--selected属性是代表默认选择-->
<option value="2" selected>上海</option>
<option value="3">北京</option>
<option value="4">南京</option>
<option value="5">合肥</option>
</form>