1. HTML 定义
BS 模式:Browser、Server,即浏览器与服务器模式。
HTML(Htyper Markup Language)即超文本标记语言,超文本(页面内可以包含图片、链接、引用、甚至程序 ),标记语言:标记(标签)构成的语言。
网页
网页即 HTML文档,由浏览器解析并展示出来,网页分为:
- 静态网页:不能与用户交互
- 动态网页:HTML代码是由某个开发语言根据用户请求动态生成的
HTML 文档树
1.1 标签
由一对尖括号包裹的单词构成,标签由开始标签(如:<h1>
)和结束标签(如:</h1>
)以及中间标签包裹部分的标签体(如:<h1>一级标题</h1>
)构成。
还有一些标签没有只有一个标签,这种标签称为 自闭标签,如:<br/>、<input/>、<hr/>、<img/>
等。
1.2 标签属性
标签属性通常用来描述标签属性的某个功能,有如下要求:
- 只能出现在开始标签或自闭标签中
- 以键值对形式出现,如:
id=content
- 属性值必须用单或双引号包裹
- 当属性名与属性值相同时,可以只写属性名
1.3 <DOCTYPE html>
标签
浏览器解析渲染 HTML 页面有两种模式 :BackCompat(怪异模式,默认,旧标准) 、CSS1Compa(标准模式,W3C 新标准)。
浏览器默认按照 BackCompat 模式渲染页面,如若要按照 W3C 新标准就需要在 HTML 文档最开头加上这一句:<DOCTYPE html>
。
2. head 标签
head 标签被称为头标签,不会呈现在页面上。
2.1 meta 标签
meta 标签有两个属性:http-equiv、name
name 属性
用于描述网页,属性值 content 中的内容主要便于搜索引擎机器人查询信息和分类信息用。
<meta name="keywords" content="python, html"> <!--keywords 为搜索关键词-->
<meta name="description" content="描述文本"> <!--description 为在搜索每个网页时的每个网页的描述信息-
http-equiv 属性
相当于 http 的文件头作用,向浏览器传回一些有用信息,以帮助精确地显示网页内容。
<!-- 用于刷新网页,2s后跳转到 Python 官网 -->
<meta http-equiv="Refresh" content="2; URL=https://python.org">
<!-- 编码类型 -->
<meta http-equiv="content-type" charset="utf8">
<!-- 兼容其他浏览器,如:IE6、Edge(IE=Edge) -->
<meta http-equiv="X-UA-Compatible" content="IE-EmulateIE6" />
2.2 其他 head 标签
<!-- 网页标题标签 -->
<titile>Python</title>
<!-- 引入外部 css 文件 -->
<link rel='stylesheet' type='text/css' href='xxx.css'>
<!-- 在html文档中插入css文件 -->
<style type='text/css'></style>
<!-- 网页图标 -->
<link rel='icon' sizes='any' href='xxx.png'>
<!-- 插入外部 js 文件 -->
<script src='xxx.js'></script>
<!-- 在html文档中插入js文件 -->
<script type='text/javascript'></script>
3. 基本标签
3.1 hx 标签
hx 标签(h1...h6),用于表示 HTML 文档标题
<h1>一级标题</h1>
3.2 p 标签
段落标签,包裹的内容被换行,并且上下文间有空白
<p>春蚕到死丝方尽</p>
<p>蜡炬成灰泪始干</p>
3.3 b 和 strong 标签
b 和 strong 标签都是用于加粗文本,b 标签逐渐被淘汰
<b>文本加粗</b>
<strong>文件加粗</strong>
3.4 strike 标签
strike 标签为删除线标签
<strike style="background: black">删除线</strike>
3.5 em 标签
文本斜体
<em>斜体</em>
3.6 sup 和 sub 标签
上下角标签
2<sub>3</sub>
2<sup>3</sup>
3.7 br 标签
换行标签
<br /> <!--可不加 /-->
3.8 hr 标签
分隔线标签
<hr>
3.9 span 标签
为文本设置单独的样式,没有别的语义,与 div 类似,但是是内联标签
<span>文本</span>
<!--将 Python 设置为蓝色-->
<style type="text/css">
span{color: blue}
</style>
<p><span>Python</span>是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。</p>
3.10 div 标签
div 标签没有特定的语义,一般作为容器包裹其他标签,也不会显示在网页上。
<div><p>xxx</p></div>
3.11 块级标签和内联标签
块级标签:address , blockquote , center , dir , div , dl , fieldset , form , h1 , h2 , h3 , h4 , h5 , h6 , hr , isindex , menu , noframes , noscript , ol , p , pre , table , ul , li
内联标签:a , abbr , acronym , b , bdo , big , br , cite , code , dfn , em , font , i , img , input , kbd , label , q , s , samp , select , small , span , strike , strong , sub , sup ,textarea , tt , u , var
- 块级标签特点:
- 独占一行
- 宽度为容器的 100%,但可以设置宽度
- 可以包含内联、其他块标签
- hx、p、dt 标签不能包含块级标签,只能包含内联标签
- 内联标签特点:
- 与其他标签在同一行
- 宽度是其文本或图片本身的宽度,不可变
- 只能包含文本、图片或其他内联标签
特殊字符:
< <
> >
" "
© ©
® ®
  一个空格
4. 图形标签 img
img 标签用于显示图片,其属性如下:
- src:图片路径
- alt:图片加载失败时显示的信息
- title:鼠标悬浮在图片上的提示信息
- width、height:图片宽度、高度,若只用一个会自动等比缩放
<img src='https://raw.githubusercontent.com/hj1933/img/master/img/AlanTuringNotebook_EN-AU7743633207_1920x1080.jpg' alt='加载失败' title='书籍'>
5. 超链接标签 a
a 标签为超链接标签,可以在页面内跳转(锚 #),以及跳转外部超链接,属性如下:
- href:超链接
- target:要跳转的框架,默认在当前页面打开,当设置为
_blank
时会在新的窗口打开 - name、id:锚(anchor)的名称
-
:锚,页面内定位,与 id 配合使用
<a href='https://www.python.org' target='_blank' name=>Python 官网</a>
<!--利用锚回到顶部-->
<p id='abc'>顶部</p>
<a href='#abc'></a>
<!--图片链接-->
<a href='xxx.com'><img src='xxx.img'></a>
利用锚在页面内定位:
<div>
<h2>HTML 教程</h2>
<li><a href="#c1">第一章</a></li>
<li><a href="#c1">第二章</a></li>
<li><a href="#c1">第三章</a></li>
<h3><a name="#c1">第一章 head标签</a></h3>
<p>head标签为头标签</p>
<h3><a name="#c1">第二章 图形标签</a></h3>
<p>img标签为图形标签</p>
<h3><a name="#c1">第三章 超链接标签</a></h3>
<p>a标签为超链接标签</p>
</div>
点击第一章、第二章可以跳转到相应内容区:
6. 列表标签
列表分为无序列表(ul)、有序列表(ol)以及自定义列表(dl)。
无序列表
<ul>
<li>第一行</li>
<li>第二行</li>
<li>第三行</li>
</ul>
有序列表
<ol>
<li>第一行</li>
<li>第二行</li>
<li>第三行</li>
</ol>
自定义列表
<dl> <!--定义列表-->
<dt>1 head标签</dt> <!--列表标题-->
<dd>1.1 meta标签</dd> <!--列表项-->
<dd>1.2 title标签</dd>
</dl>
7. 表格标签 table
创建表格的六个标签元素:table、thead、tbody、tr、th、td
- thead:通常用来包裹表头,可省略
- tbody:用于包裹表格内容,可省略
- tr:表格的行
- th:表头
- td:表格的一个单元格,一行中包含几个 td,说明这一行中就有几列
table 标签属性
- border:表格边框,单位像素(px)
- cellpadding:内边距
- cellspacing:外边距
- width:宽度,单位(像素、百分比),一般用 CSS 来设置
td / tr 标签属性
- rowspan:合并单元格(行)
- colspan:合并单元格(列)
<tr>
<td rowspan="2">1</td> <!--合并行-->
<td colspan="2">电脑</td> <!--合并列-->
</tr>
<tr>
<!--要删除一个单元格-->
<td>手机</td>
<td>80000</td>
</tr>
Tips:合并单元格,需要先删除其中一个单元格,再将设置另外一个单元格的 rowsapn 属性
示例:
<table border="1px">
<caption>表格标题</caption> <!--设置表格标题-->
<thead>
<tr>
<th>序号</th>
<th>产品名称</th>
<th>库存量</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>电脑</td>
<td>10000</td>
</tr>
<tr>
<td>2</td>
<td>手机</td>
<td>80000</td>
</tr>
</tbody>
</table>
8. 表单标签 form
表单用于向服务器传输数据,包括input、textarea、select、fieldset 和 label 等元素。
表单属性
表单接收不同类型的用户输入,要提交给服务器的内容都包含在其中,属性如下:
- action:表单要提交到的地方,一般为服务器的一个程序,程序对表单提交过来的数据做相应处理,如:https://baidu.com/web
- method:表单提交的方式(post、get)
- get:提交的键值对,放在地址栏中 URL 后面,安全性相对较差,对提交内容长度有限制
- post:提交的键值对,不在地址栏,安全性相对较高,提交的内容长度无限制(在Chrome-检查-network-Form-Data 中可以查看)
<form action='http://127.0.0.1:8080' method='post'></form>
8.1 input 标签
input 属性和对应值:
- type
- text:文本输入框
- password:密码框
- radio:单选框
- checkbox:多选框
- submit:提交按钮
- botton:按钮
- reset:重置
- placeholder:提供可描述输入字段预期值的提示信息,即在框中显示预期值
- readonly:readonly=readonly,只读
- disable:disable=disable,禁用,对所有 input 都有用
- file:提交文件(需要在 form 表单要加上属性 enctype="multipart/form-data" )
- checked:当 checked=checked 时,该选项默认被选中
- name:表单提交项的键,是和服务器通讯时的名称,id 是浏览器端使用的名称,常用于 css 和 js
- value:表单提交项的值,不同的输入类型,value 属性用法也不同。
<form action='http://127.0.0.1:8080' method='post'>
<p>姓名 <input type="text" name="username"></p>
<p>密码 <input type="password" name="password"></p>
<p>爱好</p>
<input type="checkbox" name="hobby" value="music">音乐
<input type="checkbox" name="hobby" value="movie">电影
<p>性别</p>
<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female">女
<p><input type="submit" value="提交"></p>
</form>
# 提交给服务端的数据格式类似于字典形式
{'username': 'xxx', 'password': 'xxx', 'hobby': ['music', 'movie'], 'gender': 'male'}
上传文件:必须是 post 形式,必须在 form 表单中添加 enctype="multipart/form-data"
属性
<form action='http://127.0.0.1:8080' method='post' enctype="multipart/form-data" >
<input type="file" name="file">
</form>
服务端:
req.FILES 中
服务器端:
def index(request):
print request.POST
print request.GET
print request.FILES
for item in request.FILES:
fileObj = request.FILES.get(item)
f = open(fileObj.name, 'wb')
iter_file = fileObj.chunks()
for line in iter_file:
f.write(line)
f.close()
return HttpResponse('ok')
8.2 select 标签
select 标签下拉列表,属性如下:
select 属性
- name:表单提交的键
- size:选项显示个数
- multiple:multiple,选择多个选项
- disabled:disabled,禁用下拉列表
option 标签属性
- value:表单提交项的值
- selected:selected 默认被选中
optgroup 为每一项添加分组
// select标签的 value 属性:value=1,等于选择第一个 option
爱好
<select name="hobby">
<option value="music">音乐</option>
<option value="movie">电影</option>
<option value="moutain">爬山</option>
</select> <br>
省份
<select name='province'>
<optgroup label="湖南省">
<option value="changsha">长沙</option>
<option value="xiangtan">湘潭</option>
<option value="zhuzhou">株洲</option>
</optgroup>
</select>
8.3 textarea 标签
textarea 文本域,通常用作填写简介,属性:
- name:表单提交项的键
- clos:文本域列
- rows:文本域行
简介
<textarea name="decs" cols="20px" rows="6px"></textarea>
8.4 label 标签
无其他特殊含义,for 属性可以把 label 绑定到另外一个标签上,使鼠标获得焦点。
<!--for 属性将 label 与 input 绑定,for 的值必须与 id 一致。从而使得 input 标签,鼠标只需点击 用户名 三个字即可获得焦点-->
<label for='abc'>用户名</label>
<input id='abc' type='text'>
8.5 fieldset 标签
将表单内相关元素分组,属性:
- legend 标签:为 fieldset 元素定义标题
- disabled:禁用 fieldset
- name:表单提交项键
<form>
<fieldset>
<legend>健康信息</legend>
身高:<input type="text" />
体重:<input type="text" />
</fieldset>
</form>
<p>如果表单周围没有边框,说明您的浏览器太老了。</p>