前端之HTML內容
一、HTML介紹
1、Web服務本質
當我們在瀏覽器中輸入一個url後打開一個頁面這個過程實質是一個網絡編程中的sockt服務端接受指令並發送指令的一個過程。本質順序是:
瀏覽器發請求——>HTTP協議——>服務端接受請求——>服務端返回響應——>服務端把HTML文件內容發給瀏覽器——>瀏覽器渲染頁面
import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen(Web服務本質5) while True: conn, addr = sk.accept() data = conn.recv(8096) conn.send(b"HTTP/1.1 200 OK\r\n\r\n") conn.secd(b"<h1>Hello world!</h1>") conn.close()
註:超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。
2、HTML
- 超文本標記語言(Hypertext Markup Language, HTML)是一種用於創建網頁的標記語言,使用標簽來描述網頁,它不是一種編程語言。
- 本質上是瀏覽器可識別的規則,我們按照規則寫網頁,瀏覽器根據規則渲染我們的網頁。對於不同的瀏覽器,對同一個標簽可能會有不同的解釋。(兼容性問題)
- 網頁文件的擴展名:html或htm
3、HTML文檔結構分析
最基本的HTML文檔:
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>css樣式優先級</title> </head> <body> </body> </html>
- <!DOCTYPE html>聲明為HTML5文檔。
- <html>、</html>是文檔的開始標記和結束標記,是HTML頁面的根元素,在它們之間是文檔的頭部(head)和主體(body)。
- <head>、</head>定義了HTML文件的開頭部分。它們之間的內容不會在瀏覽器的文檔窗口顯示。包含了文檔的元(meta)數據。
- <title>、</title>定義了網頁標題,在瀏覽器標題欄顯示。
- <body>、</body>之間的文本是可見的網頁主體內容。
註意:對於中文網頁需要使用<meta charset="htf-8">聲明編碼,否則會出現亂碼。有些瀏覽器會設置GBK為默認編碼,則你需要設置為<meta charset="gbk"> 。
4、HTML標簽格式
- HTML標簽是由尖括號包圍的關鍵字,如<htnl>、<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樣式)。
5、HTML註釋
<!--註釋內容-->
PyCharm中的具體操作是 ctrl + ? 即可。
註:註釋很重要,體現了代碼的規範,便於以後翻閱,在每個文件的上面一定要簡明扼要的闡述一下本文件代碼的用途和實現功能。(註釋是代碼之母)
6、<!DOCTYPE>
<!DOCTYPE>聲明必須是HTML文檔的第一行,位於<html>標簽之前。
<!DOCTYPE>聲明不是HTML標簽,它是指示web瀏覽器關於頁面使用哪個HTNL版本進行編寫的指令。
二、HTML常用標簽
1、head內常用標簽
標簽 | 意義 |
<title></title> | 定義網頁標題 |
<style></style> | 定義內部樣式表 |
<script></script> | 定義JS代碼或外部JS文件 |
<link/> | 引入外部樣式表文件 |
<meta/> | 定義網頁原信息 |
Meta標簽
Meta標簽介紹:
- <meta>元素可提供頁面的原信息(meta-information),針對搜索引擎和更新頻度的描述和關鍵詞;
- <meta>標簽位於文檔的頭部,不包含任何內容;
- <meta>提供的信息是用戶不可見的。
Meta標簽的組成:meta標簽共有兩個屬性,它們分別是http-equiv屬性和name屬性,不同的屬性又有不同的參數值,這些不同的參數值就實現了不同的網頁功能。
註:1.http-equiv屬性:相當於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">
2.name屬性:主要用於描述網頁,與之對應的屬性值為content,content中的內容主要是便於搜索引擎機器人查找信息和分類信息用的。
<meta name="keywords" content="meta總結,html meta,meta屬性,meta跳轉"> <meta name="description" content="老男孩教育Python學院">
2、body內常用標簽
1.基本標簽(塊級標簽和內聯標簽)
塊級標簽:默認占瀏覽器寬度,能設置長和寬。主要包含: h1~h6 div p hr
內斂標簽(行內標簽):根據內容決定長度,不能設置長和寬。主要包含:a img u s i b span
<b>加粗</b> <i>斜體</i> <u>下劃線</u> <s>刪除</s> <p>段落標簽</p> <h1>標題1</h1> <h2>標題2</h2> <h3>標題3</h3> <h4>標題4</h4> <h5>標題5</h5> <h6>標題6</h6> <!--換行--> <br> <!--水平線--><hr>
2.特殊字符
內容 | 對應代碼 |
空格 | |
> | > |
< | < |
& | & |
¥ | ¥ |
版權 | © |
註冊 | ® |
3.div標簽和span標簽
div標簽用來定義一個塊級元素,並無實際的意義。主要通過CSS樣式為其賦予不同的表現。
span標簽用來定義內聯(行內)元素,並無實際的意義。主要通過CSS樣式為其賦予不同的表現。
塊級元素和行內元素的區別:
塊級元素是以另起一行開始渲染的元素,行內元素則不需另起一行。如果單獨在網頁中插入這兩個元素,不會對頁面產生任何的影響。
這兩個元素是專門為定義CSS樣式而產生的。
註意:關於標簽嵌套:通常塊級元素可以包含內聯元素或某些塊級元素,但內聯元素不能包含塊級元素,它只能包含其它內聯元素。
其中有一個特殊的:p標簽不能包含塊級標簽。
4.img標簽
<img src="圖片的路徑" alt="圖片未加載成功時的提示" title="鼠標懸浮時提示信息" width="寬" height="高(寬高兩個屬性只用一個會自動等比縮放)">
5.a標簽
超鏈接標簽:指從一個網頁指向另一個目標的連接關系,這個目標可以是另一個網頁,也可以是相同網頁上的不同位置,還可以是一個圖片,一個電子郵件地址,一個文件,甚至是一個應用程序。
什麽是URL?
URL是統一資源定位器(Uniform Resource Locator)的縮寫,也被稱為網頁地址,是因特網上標準的資源的地址。
URL舉例
http://www.sohu.com/stu/intro.html
http://222.172.123.33/stu/intro.html
URL地址由4部分組成
第1部分:為協議:http://、ftp://等
第2部分:為站點地址:可以是域名或IP地址
第3部分:為頁面在站點中的目錄:stu
第4部分:為頁面名稱,例如 index.html
各部分之間用“/”符號隔開。
URL
href屬性指定目標網頁地址。該地址可以有幾種類型:
- 絕對URL:指向另一個站點(比如 href=“http://www.jd.com”)
- 相對URL:指當前站點中確切的路徑(href="index.htm")
- 錨URL:指向頁面中的的錨(href="#top")
target:
- _blank表示在新標簽頁中打開目標網頁
- _self表示在當前標簽頁中打開目標網頁
6.列表
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屬性:
- 數字列表,默認值
- A 大寫字母
- a 小寫字母
- I 大寫羅馬
- i 小寫羅馬
3.標題列表
<dl> <dt>標題1</dt> <dd>內容1</dd> <dt>標題2</dt> <dd>內容1</dd> <dd>內容2</dd> </dl>
7.表格
表格是一個二維數據空間,一個表格由若幹行組成,一個行又有若幹單元格組成,單元格裏可以包含文字、列表、圖案、表單、數字符號、預制文本和其他的表格等內容。
表格最重要的目的是顯示表格數據。表格數據是指最適合組織為表格格式(即按行和按列組織)的數據。
表格的基本結構:
<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:表格邊框
- cellpadding:內邊框
- cellspacing:外邊框
- width:像素百分比(最好通過css來設置長寬)
- rowspan:單元格豎跨多少行
- colspan:單元格橫跨多少列(即合並單元格)
8.form
功能:
- 表單用於向服務器傳輸數據,從而實現用戶與服務器的交互;
- 表單能夠包含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),
]
Django接收上傳文件代碼
9.input
<input>元素根據不同的type屬性,變化為多種形態。
type屬性值 | 表現形式 | 對應代碼 |
text | 單行輸入文本 | <input type="text"/> |
password | 密碼輸入框 | <input type="password"/> |
date | 日期輸入框 | <input type="date"/> |
datetime | 時間輸入框 | <input type="datetime"/> |
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默認被選中的項
- readonly:text和password設置只讀
- disabled:所有input均適用
10.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:定義提交時的選項值
11.label標簽
定義:<label>標簽為input元素定義標註(標記)。
說明:
- label元素不會向用戶呈現任何特殊效果;
- <label>標簽的for屬性值應當與相關元素的id屬性值相同。
<form action=""> <label for="username">用戶名</label> <input type="text" id="username" name="username"> </form>
12.textarea 多行文本
<textarea name="memo" id="memo" cols="30" rows="10"> 默認內容 </textarea>
屬性說明:
- name:名稱
- rows:行政
- cols:列數
- disabled:禁用
前端之HTML內容