HTML知識
HTML介紹
Web服務本質
瀏覽器發請求 --> HTTP協議 --> 服務端接收請求 --> 服務端返回響應 --> 服務端把HTML文件內容發給瀏覽器 --> 瀏覽器渲染頁面
HTML是什么?
- 超文本標記語言(Hypertext Markup Language, HTML)是一種用於創建網頁的標記語言。
- 本質上是瀏覽器可識別的規則,我們按照規則寫網頁,瀏覽器根據規則渲染我們的網頁。對於不同的瀏覽器,對同一個標簽可能會有不同的解釋。(兼容性問題)
- 網頁文件的擴展名: .html或.htm
HTML不是什么?
HTML是一種標記語言(markup language),它不是一種編程語言。
HTML使用標簽來描述網頁
HTML文檔結構
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> </html>
- 通過觀察我們發現, HTML基本結構中所有的標簽都是成對出現的, 這些成對出現的標簽中有一個帶/有一個不帶/, 那么這些不帶/的標簽我們稱之為開始標簽, 這些帶/的我們稱之為結束標簽
<!DOCTYPE html>聲明為HTML5文檔
html標簽
- 作用:用於告訴瀏覽器這是一個網頁,也就是說告訴瀏覽器我是一個HTML文檔
- 注意:其它所有的標簽都必須寫在html標簽里面, 也就是寫在html開始標簽和結束標簽中間
head標簽
- 作用:用於給網站添加一些配置信息
- 列如:外掛一些外部的css/js文件;添加一些瀏覽器適配相關的內容
- 注意:一般情況下,寫在head標簽內部的內容不會顯示給用戶查看,也就是說一般情況下寫在head標簽內部的內容我們都看不到
title標簽
- 作用:專門用於指定網站的標題,並且這個指定的標題將來還會作為用戶保存網站的默認標題
- 注意:title標簽必須寫在head標簽里面
body標簽
- 作用:專門用於定義HTML文檔中需要顯示給用戶查看的內容(文字/圖片/音頻/視頻)
- 注意:雖然說有時候將內容寫到了別的地方在網頁中也能看到,但是千萬不要這么干,一定要將需要顯示的內容寫在body中;一對html標簽中(一個html開始標簽和一個html標簽結束)只能有一對body標簽
HTML標簽
HTML標簽格式
- HTML標簽是有尖括號包圍的關鍵字,如<html>,<div>等
- HTML標簽通常是陳規定出現的,比如:<div>和</div>, 第一個標簽是開始,第二個標簽是結束。結束標簽會有斜線。
- 也有一部分標簽是單獨呈現的,比如:<br/>、<hr/>、<img src="1.jpg"/>等。
- 標簽里面可以有若干屬性,也可以不帶屬性。
標簽的語法
- <標簽名 屬性1="屬性值1" 屬性2="屬性值2"......>內容部分</標簽名>
- <標簽名 屬性1="屬性值1" 屬性2="屬性值2"....../>
幾個很重要的屬性
- id:定義標簽的唯一ID,HTML文檔樹中唯一
- class:為html元素定義一個或多個類名(classname)(CSS樣式類名)
- style:規定元素的行內樣式(CSS樣式)
HTML標簽分類
- 單標簽:只有開始標簽沒有結束標簽,也就是由一個<>組成的
<meta charset="UTF-8" />
- 雙標簽:有開始標簽和結束標簽,也就是由一個<>和一個</>組成的
<html> </html>
HTML標簽關系分類
- 並列關系(兄弟/平級)
<head> </head> <body> </body>
- 嵌套關系(父子/上下級)
<head> <meta charset="UTF-8" /> <title>百度一下,你就知道123</title> </head>
HTML注釋
<!--注釋內容-->
注釋是代碼之母。
HTML常用標簽
head內常用的標簽
標簽 | 意義 |
---|---|
<title></title> | 定義網頁標題 |
<style></style> | 定義內部樣式表 |
<script></script> | 定義JS代碼或引入外部JS文件 |
<link/> | 引入外部樣式表文件 |
<meta/> | 定義網頁原信息 |
Meta標簽
Meta標簽介紹:
- <meta>元素可提供有關頁面的元信息(mata-information),針對搜索引擎和更新頻度的描述和關鍵詞。
- <meta>標簽位於文檔的頭部,不包含任何內容。
- <meta>提供的信息是用戶不可見的。
meta標簽的組成:meta標簽共有兩個屬性,它們分別是http-equiv屬性和name屬性,不同的屬性又有不同的參數值,這些不同的參數值就實現了不同網頁的功能。
- http-equil屬性:相當於http的文件頭作用,它可以向瀏覽器傳回一些有用的信息,以幫助正確地顯示網頁內容,與之對應的屬性值為content,content中的內容其實就是各個參數的變量值。
<!--2秒后跳轉到對應的網址,注意引號--> <meta http-equiv="refresh" content="2;URL=https://www.oldboyedu.com"> <!--指定文檔的編碼類型--> <meta http-equiv="content-Type" charset=UTF8"> <!--告訴IE以最高級模式渲染文檔--> <meta http-equiv="x-ua-compatible" content="IE=edge">
- name屬性:主要用於描述網頁,與之對應的屬性值為content,content中的內容主要是便於搜索引擎機器人查找信息和分類信息用的。
<meta name="keywords" content="meta總結,html meta,meta屬性,meta跳轉"> <meta name="description" content="老男孩教育Python學院">
body內常用的標簽
基本標簽(塊級標簽和內聯標簽)
<b>加粗</b> <i>斜體</i> <u>下划線</u> <s>刪除</s> <!--p標簽:段落標簽,注意:在瀏覽器中會單獨占一行--> <p>段落標簽</p> <!--標題標簽--> <h1>標題1</h1> <h2>標題2</h2> <h3>標題3</h3> <h4>標題4</h4> <h5>標題5</h5> <h6>標題6</h6> <!--換行--> <br> <!--水平線 分割線--> <hr>
特殊字符
內容 | 對應代碼 |
---|---|
空格 | |
> | > |
< | < |
& | & |
¥ | ¥ |
版權 | © |
注冊 | ® |
div標簽和span標簽
- div:div標簽用來定義一個塊級元素,並無實際的意義。主要通過CSS樣式為其賦予不同的表現。
- span:span標簽用來定義內聯(行內)元素,並無實際的意義。主要是通過CSS樣式為其賦予不同的表現。
div和span有什么區別?
- 1.div會單獨的占領一行,而span不會單獨占領一行
- 2.div是一個容器級的標簽, 而span是一個文本級的標簽
塊級元素與行內元素的區別
所謂塊級元素,是以另起一行開始渲染的元素,行內元素則不需要另起一行。如果單獨在網頁中插入這兩個元素,不會對頁面產生任何的影響。
這兩個元素是專門為定義CSS樣式而生的。
注意:
關於標簽嵌套:通常塊級元素可以包含內聯元素或某些塊級元素,但內聯元素不能包含塊級元素,它只能包含其它內聯元素。
p標簽不能包含塊級標簽,p標簽也不能包含p標簽。
img標簽
- 作用:在網頁上插入一張圖片
- 格式:
<img src="圖片的路徑" alt="圖片未加載成功時的提示" title="鼠標懸浮時提示信息" width="寬" height="高(寬高兩個屬性只用一個會自動等比縮放)">
- 屬性:
屬性名稱 作用 src(source) 告訴瀏覽器需要 插入
的圖片路徑, 以便於瀏覽器到該路徑下找到需要插入的圖片alt(alternate) 規定圖像的替代文本, 只有
在src指定的路徑下找不到圖片
,才會顯示alt指定的文本title 懸停文本(介紹這張圖片, 只有在鼠標移動到圖片上時才會顯示) height 設置圖片顯示的高度 width 設置圖片顯示的寬度 - 注意點:img標簽添加的圖片默認的不是占一整行空間;如果想讓圖片等比拉伸,只寫高度或者寬度即可;如果img標簽沒有指定需要顯示的圖片的寬高, 那么系統會按照圖片默認的寬高來顯示;如果img標簽指定的寬高, 那么系統會按照指定的寬高來顯示。

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>img標簽</title> </head> <body> <!-- 1.img標簽中的img其實是英文image的縮寫 所以img標簽的作用, 就是告訴瀏覽器我們需要顯示一張圖片 2.img標簽格式: <img src=""> 其實img標簽中的src是英文source的縮寫 所以img標簽中的src就是用來告訴img標簽, 需要顯示的圖片名稱 3.注意點 - 和H系列標簽/p標簽還有Hr標簽不一樣, img標簽不會獨占一行 - 如果我們手動指定了img標簽顯示的圖片的寬度和高度, 有可能會導致圖片變形, 那么如果又想指定寬度和高度, 又不想讓圖片變形. 我們可以只指定寬度和高度其中的一個值即可 - 只要指定了高度, 系統會自動根據高度計算出寬度, 只要指定了寬度, 系統會自動根據寬度計算出高度, 並且都是等比拉伸的, 也就是說不會變形 4.img中的其它屬性 width: 寬度 height: 高度 所以在img標簽中width/height這兩個屬性的作用, 就是用來告訴img標簽將來需要顯示的圖片有多寬有多高 如果img標簽沒有指定需要顯示的圖片的寬高, 那么系統會按照圖片默認的寬高來顯示 如果img標簽指定的寬高, 那么系統會按照指定的寬高來顯示 title: 用於告訴瀏覽器, 當鼠標懸停在圖片上時, 需要彈出的描述框中顯示什么內容 alt其實是英文alternate的縮寫, 它的作用就是用於告訴瀏覽器, 當需要顯示的圖片找不到時顯示什么內容 --> <img src="images/QRCode.jpg"> <img src="images/QRCode.jpg" width="300" height="478"> <img src="images/QRCode.jpg" width="100" height="478"> <img src="images/QRCode.jpg" height="178"> <img src="images/QRCode.jpg" width="100"> <img src="images/QRCode.jpg" width="100" title="這個是圖片"> <img src="images/QRCode1.jpg" width="100" alt="對不起, 你需要查看的圖片不見了"> </body> </html>
a標簽
- 作用:用於從一個頁面鏈接到另一個頁面
- 格式:
<a href="http://www.baidu.com">百度</a>
- 屬性:
屬性名稱 作用 href(hypertext reference) 指定跳轉的目標地址 target 告訴瀏覽器是否保留原始界面, _blank表示在新標簽頁中打開目標網頁, _self表示在當前標簽頁中打開目標網頁 title 懸停文本(介紹這個鏈接, 只有在鼠標移動到超鏈接上時才會顯示) - 注意點:在a標簽之間一定要寫上文字, 如果沒有, 那么在頁面上找不到這個標簽;a標簽也叫做超級鏈接或者超鏈接;a標簽不僅可以讓文字可以點擊, 還可以讓圖片也能夠被點擊;一個a標簽必須有一個href屬性, 否則a標簽不知道要跳轉到什么地方;如果通過a標簽的href屬性指定一個URL地址, 那么必須在地址前面加上http://或https://;a標簽的href屬性除了可以指定一個網絡地址以外, 還可以指定一個本地地址
a標簽的其它用法:
- 假鏈接(本質是跳轉到當前頁面)
格式<a href="#">百度</a> 格式<a href="javascript:">百度</a>
- 跳轉到當前頁面指定位置(錨點鏈接)
格式<a href="#location">跳轉到指定位置</a> 在頁面的指定位置給任意標簽添加一個id屬性 例如 <p id="location">這個是目標</p>
- 跳轉到指定頁面的指定位置
格式: <a href="01-錨點鏈接.html#location">跳轉到指定位置</a> 只需要在01-錨點鏈接.html頁面添加一個id位置即可
- 下載(極力不推薦使用)
例如<a href="girl.zip">下載福利資源<a/>
列表標簽
列表標簽的作用:給一堆數據添加列表語義,也就是告訴搜索引擎告訴瀏覽器這一堆數據是一個整體
分類:無序列表;有序列表;定義列表
無序列表
給一堆數據添加列表語義, 並且這一堆數據中所有的數據都沒有先后之分
<ul type="disc"> <li>第一項</li> <li>第二項</li> </ul>
type屬性
- disc (實心圓點,默認值)
- circle(空心圓圈)
- square(實心方塊)
- none(無樣式)
注意
- ul標簽和li標簽是一個整體, 是一個組合. 所以一般情況下ul標簽和li標簽都是一起出現, 不會單個出現. 也就是說不會單獨使用一個ul標簽或者單獨使用一個li 標簽, 都是結合在一起使用;由於ul標簽和li標簽是一個組合, 所以ul標簽中不推薦包含其它標簽, 也就是說以后你在ul標簽中只會看到li標簽
應用場景:1.新聞列表;2.商品列表;3導航條
有序列表
有序列表的作用: 給一堆數據添加列表語義, 並且這一堆數據中所有的數據都有先后之分
<ol type="1" start="2"> <li>第一項</li> <li>第二項</li> </ol>
type屬性
- 1 數字列表,默認值
- A 大寫字母
- a 小寫字母
- I 大寫羅馬
- i 小寫羅馬
定義列表
給一堆數據添加列表語句;先通過dt標簽定義列表中的所有標題,然后再通過dd標簽給每個標題添加描述信息
<dl> <dt>標題1</dt> <dd>內容1</dd> <dt>標題2</dt> <dd>內容1</dd> <dd>內容2</dd> </dl>
注意
- dl和dt/dd是一個整體,所以他們一般情況下不會單獨出現,都是一起出現;由於dl和dt/dd是一個組合標簽,所以dl中建議只放dt和dd標簽。
應用場景:做網站尾部的相關信息;做圖文混排。
表格標簽
表格是一個二維數據空間,一個表格由若干行組成,一個行又有若干單元格組成,單元格里可以包含文字、列表、圖案、表單、數字符號、預置文本和其它的表格等內容。
表格最重要的目的是顯示表格類數據。表格類數據是指最適合組織為表格格式(即按行和列組織)的數據。
完整結構
<table> <caption>表格的標題</caption> <thead> <tr> <th>每一列的標題</th> </tr> </thead> <tbody> <tr> <td>數據</td> </tr> </tbody> <tfoot> <tr> <td>數據</td> </tr> </tfoot> </table> caption作用: 指定表格的標題 thead作用: 指定表格的表頭信息 tbody作用: 指定表格的主體信息 tfoot作用: 指定表格的附加信息
格式
- table定義表格
- tr定義行
- td定義單元格
<table> <thead> <tr> <th>序號</th> <th>姓名</th> <th>愛好</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Egon</td> <td>杠娘</td> </tr> <tr> <td>2</td> <td>Yuan</td> <td>日天</td> </tr> </tbody> </table>
屬性
- border:默認情況下表格的邊框寬度為0看不到, 通過border屬性給表格指定邊框寬度
- width:默認情況下表格的寬度是由內容自動計算出來的, 可以通過width屬性指定表格的寬度
- height:默認情況下表格的高度是由內容自動計算出來的, 可以通過height屬性指定表格的高度
- cellspacing:外邊距. 默認情況下單元格之間有2個像素的間隙, 可以通過cellpadding指定表格之間的間隙
- cellpadding:內邊距. 默認情況下單元格邊緣距離內容有1個像素的內邊距, 可以通過cellpadding屬性指定單元格邊緣和內容之間的內邊距
- rowspan:單元格豎跨多少行
- colspan:單元格橫跨多少列(即合並單元格)
form標簽
功能:
- 表單用於向服務器傳輸數據,從而實現用戶與Web服務器的交互
- 表單能夠包含input系列標簽,比如文本字段、復選框、單選框、提交按鈕等等。
- 表單還可以包含textarea、select、fieldset和 label標簽。
表單屬性
屬性 | 描述 |
---|---|
accept-charset | 規定在被提交表單中使用的字符集(默認:頁面字符集)。 |
action | 規定向何處提交表單的地址(URL)(提交頁面)。 |
autocomplete | 規定瀏覽器應該自動完成表單(默認:開啟)。 |
enctype | 規定被提交數據的編碼(默認:url-encoded)。 |
method | 規定在提交表單時所用的 HTTP 方法(默認:GET)。 |
name | 規定識別表單的名稱(對於 DOM 使用:document.forms.name)。 |
novalidate | 規定瀏覽器不驗證表單。 |
target | 規定 action 屬性中地址的目標(默認:_self)。 |
表單元素
基本概念:
HTML表單是HTML元素中較為復雜的部分,表單往往和腳本、動態頁面、數據處理等功能相結合,因此它是制作動態網站很重要的內容。
表單一般用來收集用戶的輸入信息
表單工作原理:
訪問者在瀏覽有表單的網頁時,可填寫必需的信息,然后按某個按鈕提交。這些信息通過Internet傳送到服務器上。
服務器上專門的程序對這些數據進行處理,如果有錯誤會返回錯誤信息,並要求糾正錯誤。當數據完整無誤后,服務器反饋一個輸入完成的信息。

from django.conf.urls import url from django.shortcuts import HttpResponse def upload(request): print("request.GET:", request.GET) print("request.POST:", request.POST) if request.FILES: filename = request.FILES["file"].name with open(filename, 'wb') as f: for chunk in request.FILES['file'].chunks(): f.write(chunk) return HttpResponse('上傳成功') return HttpResponse("收到了!") urlpatterns = [ url(r'^upload/', upload), ]
input標簽
<input> 元素會根據不同的 type 屬性,變化為多種形態。如果說td是表格最核心的標簽, 那么input就是表單最核心的標簽. nput標簽有一個type屬性, 這個屬性有很多類型的取值, 取值的不同就決定了input標簽的功能和外觀不同
type屬性值 | 表現形式 | 對應代碼 |
---|---|---|
text | 單行輸入文本 | <input type=text" /> |
password | 密碼輸入框 | <input type="password" /> |
date | 日期輸入框 | <input type="date" /> |
checkbox | 復選框 | <input type="checkbox" checked="checked" /> |
radio | 單選框 | <input type="radio" /> |
submit | 提交按鈕 | <input type="submit" value="提交" /> |
reset | 重置按鈕 | <input type="reset" value="重置" /> |
button | 普通按鈕 | <input type="button" value="普通按鈕" /> |
hidden | 隱藏輸入框 | <input type="hidden" /> |
file | 文本選擇框 | <input type="file" /> |
屬性說明:
- name:表單提交時的“鍵”,注意和id的區別
- value:表單提交時對應項的值
- type="button", "reset", "submit"時,為按鈕上顯示的文本年內容
- type="text","password","hidden"時,為輸入框的初始值
- type="checkbox", "radio", "file",為輸入相關聯的值
- checked:指定radio和checkbox默認值, 前提是同一組內容必須設置相同name屬性
- readonly:text和password設置為只讀
- disabled:所有input均適用

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>34-表單練習</title> </head> <body> <form action="http://www.baidu.com"> <fieldset> <legend>注冊界面</legend> <p> 賬號: <input type="text" name="account"> </p> <p> 密碼: <input type="password" name="pwd"> </p> <!-- 在單選框和多選框中,所有的項目的name必須一致 在表單標簽中,除了按鈕標簽以外的標簽,都可以通過value來指定需要提交到服務器的數據 --> <p> 性別: <input type="radio" name="gender" value="male">男 <input type="radio" name="gender" value="female">女 <input type="radio" checked="checked" name="gender" value="yao">保密 </p> <p> 愛好: <input type="checkbox" name="sport" value="basketball">籃球 <input type="checkbox" name="sport" value="football">足球 <input type="checkbox" checked="checked" name="sport" value="crazy">足浴 </p> <p> 簡介: <textarea cols="30" rows="10" name="desc"></textarea> </p> <p> 生日: <input type="date" name="birthday"> </p> <p> 郵箱: <input type="email" name="email"> </p> <p> 電話: <input type="number" name="phone"> </p> <p> <input type="submit" value="注冊"> <input type="reset" value="清空"> </p> </fieldset> </form> </body> </html>
label標簽
作用:label標簽不會向用戶呈現任何特殊效果。不過,它為鼠標用戶改進了可用性
注意:表單元素要有一個id,然后label標簽就有一個for屬性,for屬性和id相同就表示綁定了; 所有表單元素都可以通過label綁定
<!--給文本框添加綁定--> <label for="account">賬號:</label> <input type="text" id="account" /> <!--給單選框添加綁定--> <input type="radio" name="sex" id="man" /> <label for="man">男</label> <!--給多選框添加綁定--> <input type="checkbox" id="basketball" /> <label for="basketball">籃球</label>
datalist標簽
作用:給輸入框綁定待選項
<datalist> <option>待選項內容</option> </datalist>

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>31-Datalist標簽</title> </head> <body> <!-- 1.datalist標簽 作用: 給輸入框綁定待選項 2.datalist格式: <datalist> <option>待選項內容</option> </datalist> 3.如何給輸入框綁定待選列表 1.搞一個輸入框 2.搞一個datalist列表 3.給datalist列表標簽添加一個id 4.給輸入框添加一個list屬性,將datalist的id對應的值賦值給list屬性即可 --> 請輸入你的車型: <input type="text" list="cars"> <datalist id="cars"> <option>奔馳</option> <option>寶馬</option> <option>奧迪</option> <option>路虎</option> <option>賓利</option> </datalist> </body> </html>
select標簽
<form action="" method="post"> <select name="city" id="city"> <option value="1">北京</option> <option selected="selected" value="2">上海</option> <option value="3">廣州</option> <option value="4">深圳</option> </select> </form>
屬性說明:
- multiple:布爾屬性,設置后為多選,否則默認單選
- disabled:禁用
- selected:默認選中該項
- value:定義提交時的選項值
textarea標簽
textarea多行文本
<textarea name="memo" id="memo" cols="30" rows="10"> 默認內容 </textarea>
屬性說明:
- name:名稱
- rows:行數
- cols:列數
- disabled:禁用
marquee標簽
作用:跑馬燈
格式:<marquee>內容</marquee>
屬性
- direction: 設置滾動方向 left/right/up/down
- scrollamount: 設置滾動速度, 值越大就越快
- loop: 設置滾動次數, 默認是-1, 也就是無限滾動
- behavior: 設置滾動類型 slide滾動到邊界就停止, alternate滾動到邊界就彈回
注意:marquee標簽不是W3C推薦的標簽, 在W3C官方文檔中也無法查詢這個標簽, 但是各大瀏覽器對這個標簽的支持非常好

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>39-marquee標簽</title> <style> marquee { width:200px; height:200px; background-color: skyblue; } </style> </head> <body> <!--滾動方向--> <marquee>隨便寫點內容</marquee> <marquee direction="right">隨便寫點內容</marquee> <marquee direction="up">隨便寫點內容</marquee> <marquee direction="down">隨便寫點內容</marquee> <hr> <!--設置滾動速度--> <marquee scrollamount="1">隨便寫點內容</marquee> <marquee scrollamount="100">隨便寫點內容</marquee> <hr> <!--設置滾動次數--> <marquee loop="1">隨便寫點內容</marquee> <hr> <!--設置滾動類型--> <marquee behavior="slide">隨便寫點內容</marquee> <marquee behavior="alternate">隨便寫點內容</marquee> <marquee> <img src="images/NJ.jpg" width="50px"> </marquee> </body> </html>
詳情和概要標簽
什么是詳情和概要標簽?
作用:利用summary標簽來描述概要信息, 利用details標簽來描述詳情信息
默認情況下是折疊展示, 想看見詳情必須點擊
格式:
<details> <summary>概要信息</summary> 詳情信息 </details>

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>38-詳情和概要標簽</title> </head> <body> <!-- 1.什么是詳情和概要標簽? 作用:利用summary標簽來描述概要信息, 利用details標簽來描述詳情信息 默認情況下是折疊展示, 想看見詳情必須點擊 格式: <details> <summary>概要信息</summary> 詳情信息 </details> --> <details> <summary>鄭伊健</summary> 簡介:鄭伊健,1967年10月4日出生於中國香港,籍貫廣東恩平,香港影視演員、流行男歌手。1988年參加新秀歌唱大賽加入無線電視,因拍攝“陽光檸檬茶”廣告而入行,拜羅文為師。1991年... </details> </body> </html>