頁面佈局的相關內容
相對定位
開啟相對定位: 不脫離文件流。
如果把當前元素設定為脫離流的話,margin實現的水平居中失效。
由於父級容器沒有設定height屬性,父級元素出現高度塌陷的問題。
可以讓menu元素相對於當前元素設定定位,只需要為當前元素開啟定位。
注意:軟體開發的基本原則:低耦合。軟體開發最理想的狀態:零耦合。耦合度:簡單來說,就是指很多值之間的關聯大不大。
固定定位
固定定位: 設定當前元素相對於瀏覽器視窗定位。
繼承
這裡所說的繼承,指的是 CSS 中的樣式屬性的繼承。所謂繼承,就是指當前樣式屬性不僅能作用於當前的元素,還能作用於所有的後代元素。
CSS 的樣式屬性分成兩類:
層疊
在瀏覽器執行 HTML 頁面時, 最終看到的 HTML 頁面的效果, 實際上是多個樣式疊加在一起的綜合效果:
使用者定義的樣式會覆蓋瀏覽器提供的樣式, 然後開發者定義的樣式會覆蓋使用者定義的樣式。
對於我們(開發者)比較關注的:
注意:即使是開發者定義的樣式: 多重樣式根據CSS選擇器的優先順序別, 判斷最終有效的哪一個。CSS選擇器的優先順序別, 存在一個例外:當將某個樣式屬性設定為 !important, 表示該屬性的級別最高。 !important吧(不建議使用)。
堆疊
堆疊: 更多指的是在開啟定位的情況下(relative)在多個脫離文件流的元素中, 通過堆疊可以設定某個元素的層級高。z-index屬性的值允許是負值, 但一般情況下不用。
兄弟關係的元素: 當這兩個元素都脫離文件流之後。後面的元素會在前面的元素的上面。
什麼是佈局
所謂的佈局, 就是 HTML 頁面的結構。實現佈局是要通過 HTML 元素和 CSS 樣式結合。佈局特別想蓋樓的時候的設計圖紙。
佈局的分類
目前比較流行的佈局:
從技術角度分化的話:
根據場景不同, 也可以這樣劃分:
之前比較流行的佈局:
實現水平局中
第一種實現水平居中的解決方案:
問題: 子級元素的文字內容同時也會居中對齊,為了實現子級元素的水平居中, 為父級元素設定額外的樣式屬性。
將實現水平方向居中效果的元素設定為inline-block:
text-align
屬性: 原本作用是設定文字內容的對齊方式,對inline-block
元素同樣有效
第二種實現水平居中的解決方案:
問題: 如果當前元素脫離了文件流, margin屬性失效了。
為當前元素設定width屬性(定寬)
使用margin
屬性實現水平居中
第三種實現水平居中的解決方案:
問題:為了實現子級元素的水平居中, 為父級元素設定額外的樣式屬性。如果使用transform屬性: CSS3 新增屬性。實現水平居中時:如果使用margin-left屬性: 導致耦合度升高。
將子級元素設定為絕對定位(父級元素設定相對定位),left設定50%和translateX()設定-50%實現水平居中。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-ryiEVTVJ-1605718076241)(https://i.loli.net/2020/06/11/lSZmDeo5CTX7UBr.png)]
margin-left
屬性的值與當前元素的width
屬性的值有關的
translateX()
函式的50%指的是當前元素寬度的50%
垂直居中
第一種實現垂直居中:
問題: 為了實現子級元素的水平居中, 為父級元素設定額外的樣式屬性。
將父級元素設定為table-cell,在父級元素設定vertical-align屬性垂直居中。
預設作用: 設定文字內容在垂直方向的對齊方式vertical-align: middle;
table-cell值相當於HTML中的元素display: table-cell;
第二種實現垂直居中:
問題:為了實現子級元素的垂直居中, 為父級元素設定額外的樣式屬性。實現垂直居中時:如果使用margin-top
屬性: 導致耦合度升高,如果使用transform
屬性: CSS3
新增屬性。
將子級元素設定為絕對定位(父級元素設定相對定位),left
設定50%和translateY()
設定-50%實現垂直居中。
兩列布局
所謂的兩列布局, 並不是簡單將兩個元素水平排列, 而是一列是定寬的, 另一列是自適應的。
第一種兩列布局:
通過浮動和移動或遮擋實現兩列布局。
第二種兩列布局:
overflow: hidden;
開啟·BFC:
建立出一個完全隔離的空間。
通過第三種兩列布局:
通過display: table;改變了父級元素的顯示型別。將外層div變成table裡面的元素轉變為表格元素。
三列布局
所謂的三列布局, 其中兩列是定寬, 另一列是自適應。劃分成以下兩種情況:
三列布局的第一種情況:
通過display: table
;改變了父級元素的顯示型別。將外層div變成table裡面的元素轉變為表格元素。
三列布局的第二種情況:
通過margin移動遮擋達到顯示效果。改變了HTML的結構。
等分佈局
第一種實現等分佈局:
通過百分比等分效果實現。
第二種實現等分佈局:
利用表格的單元格寬度是自動分配的:每一列的內容結構保持一致。
第一種空白間隙的等分佈局:
通過border-spacing: 5px;實現。
第二種空白間隙的等分佈局:
使用padding設定左右邊距,再巢狀一層div抵消移動達到顯示效果。
第一種實現等高佈局:
通過display: table;改變了父級元素的顯示型別。
第二種實現登高佈局:
padding-bottom: 9999px;
強制拉成後使用overflow: hidden
;截斷多餘內容。
偽登高:使用表單
為什麼說表單在 HTML 中很重要的原因:
-
表單是允許接收使用者輸入的資訊, 其他元素僅是用來向使用者展示資訊。
-
在 HTML 元素中, 可以與服務端進行通訊的只有表單。
目前, 在真實的 Web 應用或網站中, 有哪些是由表單完成的:
<form>
元素
<form>
元素: 代表表單(塊級元素)作用:
屬性:
enctype
屬性: 設定表單提交時的MIME型別,主要可實現檔案上傳。
表單可以劃分兩個組成部分:
<form>
元素: 表單的容器元素
表單元件元素: 才是真正用來接收使用者輸入的資訊
-
<input>
元素: 輸入框 -
<textarea>
元素: 文字域 -
<select>
元素: 下拉選單
<input>
元素: 空元素
屬性:
-
type屬性:
設定輸入框的型別 -
value屬性
: 設定輸入框的預設值 -
disabled
屬性: 設定輸入框是否可用(只設定屬性名) -
readonly
屬性: 設定輸入框是否為只讀
HTML5
新增屬性
-
autofocus
屬性: 設定輸入框自動獲取焦點 -
placeholder
屬性: 設定輸入框的預設提示內容
用來替代value屬性為使用者展示提示資訊,輸入框型別:text: (單行)文字框,password: 密碼框(顯示與隱藏動態切換功能),radio: 單選框,checkbox: 核取方塊,button: 按鈕,submit: 提交按鈕,reset: 重置按鈕,file: 檔案域,hidden: 隱藏域。
HTML5新增:email: 電子郵件,url: URL地址,search: 搜尋框,tel: 電話框,,,,。
單選框或核取方塊: 定義相同的name屬性值, 表示為一組,checked屬性: 表示當前單選框或核取方塊被選中。
<input type="radio" name="like" checked>html
<input type="radio" name="like">css
<input type="radio" name="like">javascript
<input type="checkbox" name="like" checked>html
<input type="checkbox" name="like">css
<input type="checkbox" name="like">javascript
<input>
元素: 按鈕
<input type="button" value="按鈕">
<button>按鈕</button>
<input type="submit" value="提交">
<input type="reset" value="重置">
注意:與元素沒有關係。
檔案域: 一般用來實現檔案上傳或選擇頭像等功能:
-
數量設定
-
單檔案選擇: 預設情況
-
多檔案選擇: 設定multiple
型別設定: 規定選擇檔案的型別
<input type="file" multiple accept="video/*">
一般用來儲存一些不想使用者知道的資料內容, 比如使用者ID
<input type="hidden">
提供了Email地址格式的驗證
<input type="email">
提供了URL地址格式的樣式(驗證不完整)
<input type="url">
搜尋框: 移動端顯示(右下角按鈕顯示"搜尋")
<input type="search">
電話框: 移動端顯示(軟鍵盤顯示數字)
<input type="tel">
date: 日期控制元件
<input type="date">
week: 星期控制元件
<input type="week">
month: 月控制元件
<input type="month">
color: 顏色控制元件
<input type="color">
number: 數字控制元件
<input type="number">
<label>
元素: 一般配合元素
作用: 為某個文字框提供文字提示內容
輸入框的樣式
input {
/* 用來設定輸入框的獲取焦點時的外邊框的樣式 */
outline: none;
/* 用來設定輸入框的邊框 */
border: none;
border-bottom: .5px solid lightgray;
}
<textarea>
元素: 多行文字框
屬性:
特點: 允許使用者調整在HTML頁面中顯示區域
/* 禁止使用者改變文字域的顯示區域 */
resize: none;
<select>
元素: 下拉選單
預設情況下, 下拉單選下拉多選:
<select>
<option value="beijing">北京</option>
<option value="shanghai" selected>上海</option>
<option value="chongqing">重慶</option>
</select>
元素: 列表專案
屬性:selected
: 設定當前專案被選中,分組: 將元素放在元素中。
<select multiple size="3">
<option value="beijing">北京</option>
<option value="shanghai" selected>上海</option>
<option value="chongqing">重慶</option>
</select>
<select>
<optgroup>
<option value="html">html</option>
<option value="css">css</option>
<option value="javascript">javascript</option>
</optgroup>
<optgroup>
<option value="html5">html5</option>
<option value="css3" selected>css3</option>
<option value="ecmascript6">ecmascript6</option>
</optgroup>
</select>
組合表單元素
<form action="#">
<!-- 將表單元件元素進行分組 -->
<fieldset>
<!-- 為每個分組設定一個標題 -->
<legend>19級啟嘉班</legend>
<!-- 表單元件元素 -->
<label for="username">使用者名稱: </label>
<input type="text" id="username" placeholder="請輸入你的使用者名稱">
<label for="password">密碼: </label>
<input type="password" id="password">
</fieldset>
</form>將表單元件元素進行分組
元素與元素配合使用
元素:
與元素的區別:
允許複用的
元素: 刻度條
屬性:
-
value
: 表示當前刻度的值(介於min和max之間的值) -
min
: 設定刻度的最小邊界 -
max
: 設定刻度的最大邊界 -
low
: 設定刻度的最小預警值 -
high
: 設定刻度的最大預警值
<meter value="30" min="0" max="100" low="40" high="80"></meter>
元素: 進度條
屬性:
-
value
: 表示當前進度的值 -
max
: 設定進度的最大值
<progress max="100" value="70"></progress>
元素狀態偽類選擇器
/* :disabled偽類表示選中不可用的元素 */
input:disabled {
background-color: lightsalmon;
}
/* :enabled偽類表示選中可用的元素 */
input:enabled {
background-color: magenta;
}
/* :checked偽類表示選中被選中的單選框或核取方塊 */
input:checked {
box-shadow: 0 0 0 3px orange;
}
HTML5新增有關表單驗證的內容:
提供一系列可用於驗證的元素或型別, 比如‘’
提供一系列用於驗證的屬性:
-
required
屬性: 驗證是否為空 -
pattern
屬性: 驗證與指定正規表示式是否一致 -
min
屬性: 驗證是否小於最小值 -
max
屬性: 驗證是否大於最大值 -
step
屬性: 驗證是否符合步長 -
minlength
屬性: 驗證內容的長度是否小於最小長度 -
maxlength
屬性: 驗證並限制內容的長度是否大於最大長度
注意:驗證是在提交表單時進行驗證,驗證屬性一般情況需要與DOM(visibility物件)配合使用。
<form action="#">
<input type="text" placeholder="請輸入你的使用者名稱" required>
<input type="text" placeholder="請輸入你的地址" pattern="^[a-zA-Z0-9]{6,12}$">
<input type="password" minlength="4" maxlength="8">
<input type="number" min="2" max="10" step="2">
<input type="submit" value="提交">
</form>
相關文章
- 網站頁面內的內容結構怎樣佈局才合理?網站
- web簡單頁面佈局fixed 頭部固定 內容滾動Web
- 頁面佈局
- css頁面佈局CSS
- 常見頁面佈局
- D3佈局的相關apiAPI
- 專案內容相關
- CSS佈局相關基本概念CSS
- Dcat Admin 構建頁面佈局
- 靜態頁面佈局例項
- wxPython 中的動態內容與佈局管理Python
- 頁面佈局 layui與 layui的匯入UI
- golang的記憶體相關內容Golang記憶體
- InDesign 2022 Id頁面佈局設計
- Bootstrap頁面佈局13 - BS按鈕boot
- 1.9 靜態頁面佈局例項
- Android 頁面多狀態佈局管理Android
- CSS入門指南-4:頁面佈局CSS
- 如何使用PbootCMS內容詳情頁標籤呼叫相關資訊boot
- JDBC mysql 相關內容筆記JDBCMySql筆記
- Makefile書寫命令相關內容
- SAP Spartacus Page Layout - 頁面佈局設計
- html頁面實現聖盃佈局flexHTMLFlex
- 快應用入門--頁面佈局篇
- 網站頁面規劃和佈局的方法技巧網站
- 網頁佈局------幾種佈局方式網頁
- No.182# 故障相關內容提點
- UWB硬體設計相關內容
- DependentLayout相對佈局
- Flex佈局-垂直居中並換行顯示內容Flex
- 適配手機頁面佈局的動態rem方案REM
- ASP.NET Web Pages – 頁面佈局簡介ASP.NETWeb
- InDesign 2022 for mac(頁面佈局、排版設計工具)Mac
- 怎麼恢復spyder預設頁面佈局
- 實戰電商頁面1:靜態佈局
- PbootCMS模板內頁如何呼叫相關文章boot
- web頁面引用相關檔案或者頁面方式彙總Web
- 【easyui】開啟的tab頁同頁面引數不同頁面內容不重新整理UI