Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
圖1
特效炫酷(圖2)
圖2
源碼完整,需要的朋友可以下載學習(圖3)
圖3
就愛UI - 分享UI設計的點點滴滴
據地圖平臺是字節跳動內部的大數據檢索平臺,每天近萬的字節員工在此查找所需數據。數據地圖通過提供便捷的找數,理解數服務,大大節省了內部數據的溝通和建設成本。
字節的數據可分為端數據和業務數據,這些記錄往往需要通過加工處理才能產生業務價值。數據加工處理的流程一般是讀取原始數據,進行數據清洗,再經過多種計算和存儲,最終匯入指標、報表和數據服務系統。數據血緣描述了數據的來源和去向,以及數據在多個處理過程中的轉換,是組織內使數據發揮價值的重要基礎能力。
數據地圖平臺在 2021 年接入了全鏈路核心元數據,包括但不限于:Hive、Clickhouse、Kafka、BI 報表、BI 數據集、畫像、埋點、MySQL、Abase。這些數據全部要通過數據血緣連接起來,進而可以進行影響分析、內部審計、SLA 保障、歸因分析、理解和查找數據、自動化推薦等操作。
隨著內部數據不斷膨脹,簡單的數據血緣圖譜已經無法滿足萬級表血緣的關系展示。一些突出的問題包括看不清單個表的直接上下游,看不清數據鏈路,整體情況等等。因此需要重構一種更清晰、靈活、便利的方式。下圖簡單展示了優化后的使用效果。
在新版血緣圖譜中,我們可以直接清晰的看到每個表的多層上下游依賴關系,甚至可以直接看到一些特殊場景下用戶關注的表屬性,通過點擊節點高亮查看數據鏈路,更可以看清每層的統計信息。在下文中我們將詳細拆解優化的全過程。
要做出一個能滿足用戶需求的圖產品,首先是要清楚用戶想從圖中獲取什么信息,從而有針對性的將這些信息展示出來。從血緣圖譜的背景本身可以推斷出用戶希望在圖譜中查看表之間的關系,查看關系鏈路,而更多的使用場景待發掘。因此我們對內部重度用戶進行了訪談,整理得出了以下不同用戶角色使用數據血緣圖譜的用戶場景。
結合訪談結果和用戶的日常反饋,數據血緣圖譜的場景按目前用戶的使用頻率從大到小排序依次為:
場景 | 用戶關注 | 場景描述 |
影響分析 | 下游 | 當處于血緣上游的研發同學修改任務前,通過查看自己的下游,通知對應資產或任務的負責人,進行相應的修改,否則會造成嚴重的生產事故。 |
找數理解數 | 上游 | 在找數據時,通過查看一份數據資產的血緣,來更多的了解它的“前世今生”,可以更好的判定當前資產是不是自己需要的,或者是不是值得信賴的。就像了解一個人,可以從他周圍的朋友中得到很多信息一樣,是對這個人“生平”很好的補充。 |
鏈路梳理 | 鏈路 | 事先挑選已知的核心任務,通過血緣關系,自動化的梳理出其所在的核心鏈路。多用于內審和數據治理。 |
歸因分析 | 上游 | 當某一個指標或字段數據/產出時間等出問題時,通過查看血緣上游的任務或資產,排查出造成問題的根因。 |
使用分析 | 下游 | 一個表的下游表越多,使用越頻繁,可以認為價值越大。 |
抽象出幾個主要需求即為:
其實上述需求舊版血緣圖譜都有一定程度上的滿足,我們需要去找出舊版血緣圖譜提供的功能為什么不滿足用戶需求,有哪些問題需要在新版中注意避免。
節點較少,比較清晰
大量節點,查看困難
用戶在使用過程中看重的是查看關系的效率和屬性的完備度,因此在設計優化方案時會盡量從這兩點出發去考慮。
首先是表數據查看的效率問題。看不清表名,無法區分相同前綴的表是用戶痛點之一。首先我們統計了現有表的平均字符數是 47 位,于是調寬了節點讓用戶能更直觀的區分表名。用數據地圖平臺中通用的類型圖表來代替色塊圖例,讓數據類型一目了然。
其次對于數據量大時看不清數據關系的問題,我們需要一個更緊湊清晰的數據呈現方式。通過需求分析和用戶調研,我們了解到用戶關心的是節點所在層級和節點之間的聯系。對于同一層級節點的先后順序,次層級節點之間的關系不是很看重。
說到緊湊的布局方式,自然而然我們就想到了列表。如果能用一個列表來承載層級血緣的節點,用連線來連接不同層級的節點,那么久可以表達節點之間的血緣關系了。當節點較多超出一屏時可以拖動此列滾動條來查看更多節點,連線隨之刷新位置。當層級不滿一屏時整體居中展示,層級過多超過一屏時可以左右滑動查看。這樣在保留層級結構信息的同時最大程度的利用了可視區域,展示出了盡可能多的數據。
新版血緣圖譜支持了點擊任意節點則高亮該節點到主節點的鏈路功能。配合列滾動和連線刷新,不管數據量多大總能看清一整條數據鏈路。
我們還在每列列表頂部增加了層級信息和節點統計,讓用戶能同時查看每個節點細節和節點的整體分布。最終實現效果如下圖:
當用戶想去找數,理解數或做歸因分析時,不僅要了解一個表的上游依賴,更需要理解表的加工邏輯。因此我們在節點的連線上新增了任務信息。當用戶 hover 到連線上后,連線會加粗高亮并彈出任務信息。我們還附上了大數據開發平臺的對應任務鏈接,點擊鏈接即可跳轉到新頁面查看任務邏輯詳情。
在設計分組功能時,采用了每列獨立分組的方式。一般認為用戶會關注有對應分組數據的節點,因此總將有分組的數據放在上面,無分組數據的置底,這樣排序能提升用戶的瀏覽效率。
舊版血緣圖譜的篩選功能是在前端處理的,由于一些性能限制導致篩選后只能顯示部分數據,用戶無法得知符合條件的節點是否已經全部展示。新版血緣圖譜針對這個用戶痛點,將前端篩選改為了服務端篩選,盡量展示全符合要求的數據。每個層級的頂欄對應更新為篩選后的統計信息。同時更新連線,如果篩選后節點之間是有關聯的,也會展示關聯關系和高亮關系鏈路。
不同職能的用戶在不同場景下使用血緣圖譜時關注的節點屬性并不相同,如果血緣圖譜可以直接在圖上顯示用戶當前想關注的表屬性就能幫助用戶更高效的解決問題。于是我們在血緣圖譜上設計了屬性展示功能,用戶可以勾選自己感興趣的屬性直接顯示到圖中。比如下圖中展示了每個節點表熱度和生命周期兩個屬性。
技術選型
在編碼實現之前,我們需要進行技術選型。好的選型往往能讓編碼事半功倍。在做技術選型時,我們會主要考慮實現復雜度、研發周期、可擴展性三個角度。分析整個血緣圖譜的需求:
于是我們結合兩者之長,選用了 React + Canvas 的混合模式來實現血緣圖譜。Canvas 居于底部,僅負責畫連線。React 在上層負責渲染節點響應 hover 等交互。DOM 層疊關系如下:
整個血緣圖譜的初始化流程如下:
實現細節
用這種混合模式的一個挑戰就是 Canvas 和 DOM 的刷新率和同步率。在血緣圖譜中滾動橫向滾動條和每一列的縱向滾動條時 Canvas 要進行及時的刷新以保證連線和節點的相對位置一定。
另一個挑戰是 DOM 節點在大數據量下的性能問題。通常情況下我們認為 Canvas 在大數據量渲染有更好的性能,而萬級的 DOM 節點就會讓用戶在使用中感受到卡頓了。這時候我們想到了按需渲染。 用戶在圖譜可視區域中一屏能看到的節點數量是有限的,高度為 1120 的容器中,一列僅存在至多 30 個節點。如果僅渲染可見的節點,則能保證使用過程的流暢。具體做法是在節點布局時增加以下步驟:
在 React 渲染時更新每列容器的長度,將節點根據坐標絕對定位到正確的位置上。看起來就跟全量渲染的效果一致,渲染效率大幅提升。
然而問題并不止于此。在進行大數據量的縱向滾動時,會發現幀率很低,交互還是不流暢。分析得知是由于列表滾動時會在短時間內進行大量線條重計算和渲染。于是還要在 Canvas 繪制上進行優化。
我們從上圖可以看到在單層節點很多的情況下,主節點與不可見節點的連線可見,但是沒有任何價值,只是加重了用戶對當前節點連線查看的負擔。因此我們對線條也進行了渲染優化,僅當一條連線兩端的節點都在可見范圍中時才渲染連線,在連線的 Tooltip 上增加了來源去向的展示輔助查看。至此我們做到了在復雜情況下的流暢展示血緣數據。
以上就是數據血緣圖譜的整個優化過程。在這個過程中,我總結起來就是在了解用戶訴求的前提下,克制地表達關系圖中的信息,在合適的場景下突出核心的內容。做圖分析產品時不需要拘泥于某種形式,而是真正的從用戶需求出發,為用戶服務。
一站式數據中臺套件,幫助用戶快速完成數據集成、開發、運維、治理、資產、安全等全套數據中臺建設,幫助數據團隊有效的降低工作成本和數據維護成本、挖掘數據價值、為企業決策提供數據支撐。
歡迎加入字節跳動數據平臺官方群,進行數據技術交流、獲取更多內容干貨
點擊 大數據研發治理套件-火山引擎 了解產品詳情
成 | 語言 | 描述 |
結構 | HTML | 網頁元素和內容 |
表現 | CSS | 網頁元素頁面樣式 |
行為 | JavaScript | 網頁交互 |
HTML,超文本標記語言(Hyper Text Markup Language),是一門描述性語言。標記,標簽,元素,叫法不同,意思相同。HTML超文本標記語言主要通過標簽的方式,對網頁頁面的文本、圖片、音頻、視頻等內容進行描述。學習HTML,就是學習各種標簽,來搭建網頁的結構。
結構:!DOCTYPE
說明:作用是告訴瀏覽器用哪個文檔規范來解析文檔
標簽:html
說明:用于搭建HTML網頁文檔結構和網頁布局
?標簽:head
說明:用于定義HTML網頁文檔的頭部,它是所有頭部元素的容器?
?標簽:body
說明:用來定義HTML網頁文檔的主體區域?
?標簽:meta
說明:用來描述HTML網頁文檔的屬性?
?標簽:title
說明:用來放到HTML網頁文檔的頭部,是搜索引擎首要抓取的目標代碼?
標簽,也叫作標記,是由一對尖括號<>,里面包含單詞組成
<html></html>
<br>
嵌套關系
<html>
<head>
</head>
</html>
并列關系
<head>
</head>
<body>
</body>
注釋用來幫助程序員記錄程序設計方法,輔助程序閱讀
雙標簽,定義網頁的標題
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>百度一下,你就知道了</title>
</head>
<body>
</body>
</html>
是單標簽,用來描述HTML網頁文檔的屬性
屬性值 | 說明 |
keywords | 網頁關鍵字,多個逗號隔開 |
description | 網頁描述 |
author | 作者 |
copyright | 版權信息 |
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 網頁關鍵字 -->
<meta name="keywords" content="html,css,javascript">
<!-- 網頁描述 -->
<meta name="description" content="基礎前端知識">
<!-- 網頁作者 -->
<meta name="author" content="buddha">
<!-- 網頁版權信息 -->
<meta name="copyright" content="版權所有,翻版必究">
</head>
<body>
</body>
</html>
標簽屬性:
1、標簽的屬性寫在開始標簽內部
2、標簽名與屬性之間要有空格隔開
3、一個標簽可以同時存在多個屬性
4、屬性之間以空格隔開
5、屬性沒有先后順序之分
屬性值 | 說明 |
Content-Type | 定義網頁所使用編碼 |
refresh | 定義網頁自動刷新跳轉 |
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 設置網頁編碼完整寫法 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<!-- 設置網頁編碼簡寫寫法 -->
<meta charset="UTF-8">
<!-- 網頁打開3秒后跳去百度 -->
<meta http-equiv="refresh" content="3;url=https://www.baidu.com">
</head>
<body>
</body>
</html>
是雙標簽,用來定義標簽的css樣式
<!DOCTYPE html>
<html lang="en">
<head>
<style type="text/css">
/* css內聯樣式寫這里 */
</style>
</head>
<body>
</body>
</html>
是單標簽,是用來引入外部css樣式文件
<link rel="stylesheet" href="css/index.css" type="text/css">
是雙標簽,是用來寫JavaScript代碼的地方
<!DOCTYPE html>
<html lang="en">
<head>
<script>
/* 這里寫JavaScript代碼 */
</script>
</head>
<body>
</body>
</html>
是單標簽,是用來設置整個網頁的基礎路徑。
<!DOCTYPE html>
<html lang="en">
<head>
<base href="https://pic.rmb.bdstatic.com">
</head>
<body>
<img src="bjh/news/e7fb4c2be6a2e439ff7e3197fa205d8f1336.gif">
</body>
</html>
開發中很少用到,有人使用知道就行
上面所述標簽是放在head標簽里的,接下來接觸的標簽都是放在body標簽內的
是雙標簽,h是header的縮寫
<h1>h1標簽:一級標題</h1>
<h2>h2標簽:二級標題</h2>
<h3>h3標簽:三級標題</h3>
<h4>h4標簽:四級標題</h4>
<h5>h5標簽:五級標題</h5>
<h6>h6標簽:六級標題</h6>
特點:
1、字體加粗
2、獨占一行
3、從h1到h6,字體逐漸減小
4、使用<h>標簽的主要意義是告訴搜索引擎這是一段文字的標題
5、<h1>在一個頁面最多只能有一個,不要用多個
是雙標簽,p是paragraph的縮寫
<p>這是一段文字</p>
<p>這是一段文字</p>
<p>這是一段文字</p>
特點:
1、獨占一行
2、段落與段落之間,存在間隙
是單標簽,br是break的縮寫
<p>這是一段<br>文字</p>
特點:
1、強制換行
2、單標簽
是單標簽,hr是horizon地平線的縮寫
<p>這是一段文字</p>
<hr>
<p>這是一段文字</p>
特點:
1、在頁面中顯示一條水平線
2、單標簽
標簽1 | 標簽2 | 說明 |
b | strong | 加粗 |
u | ins | 下劃線 |
i | em | 傾斜 |
s | del | 刪除線 |
<b>這是一段文字</b>
<strong>這是一段文字</strong>
<br>
<u>這是一段文字</u>
<ins>這是一段文字</ins>
<br>
<i>這是一段文字</i>
<em>這是一段文字</em>
<br>
<s>這是一段文字</s>
<del>這是一段文字</del>
特點:
1、不會獨占一行
2、推薦使用標簽2所在列標簽
sup是superscripted這個單詞的縮寫
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
a<sup>2</sup>
</body>
</html>
sub是subscripted這個單詞的縮寫
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
H<sub>2</sub>O
</body>
</html>
在網頁中展示特殊符號效果時,需要使用字符實體替代
顯示結果 | 描述 | 實體名稱 |
空格 |
| |
< | 小于號 | < |
> | 大于號 | > |
& | 與 | & |
" | 雙引號 | " |
x | 乘號 | × |
÷ | 除號 | ÷ |
- | 長破折號 | — |
| | 豎線 | | |
‘ | 左單引號 | ‘ |
‘ | 右單引號 | ’ |
? | 版權符 | © |
? | 注冊商標 | ® |
? | 商標 | ™ |
° | 度 | ° |
<img src="./001.jpg" alt="">
img標簽常見屬性:
屬性名 | 說明 |
src | 圖片路徑(絕對路徑、相對路徑) |
alt | 圖片加載失敗時,顯示的文字 |
title | 鼠標懸停時,顯示的文字 |
width | 圖片寬度 |
height | 圖片高度 |
只設置寬或高,會自動等比縮放,寬高只需要數字,不需要'px'
<img src="./001.jpg" alt="圖片加載失敗" title="這是程序兔" width="200" height="200">
絕對路徑:指目錄下的絕對位置,比如從根目錄開始的路徑,或完整的網絡地址
相對路徑:從當前文件開始出發找目標文件的過程
<audio src="music.mp3" controls autoplay loop></audio>
audio標簽常見屬性:
屬性名 | 說明 |
src | 音頻路徑 |
controls | 顯示播放控件 |
autoplay | 自動播放 |
loop | 循環播放 |
支持mp3、wav、ogg三種音頻格式
<video src="video.mp4" controls loop autoplay></video>
屬性名 | 說明 |
src | 視頻路徑 |
controls | 顯示播放控件 |
autoplay | 自動播放 |
loop | 循環播放 |
支持mp4、webm、ogg三種視頻格式
超鏈接,是雙標簽,實現各個獨立頁面之間進行跳轉,可以跳去站外也可以在站內之間跳轉
<a href="鏈接地址">文本或圖片</a>
站外跳轉,采用絕對路徑
<a href="http://www.baidu.com" target="_blank">百度</a>
站內跳轉,采用相對路徑
<!-- a頁面 -->
<a href="b.html">跳去b頁面</a>
<!-- b頁面 -->
<p>b頁面</p>
頁面內跳轉
<a href="#ms">美食</a>
<a href="#jd">景點</a>
<h3 id="ms">推薦美食</h3>
<!-- 省略n個br標簽 -->
<br>
<h3 id="jd">推薦景點</h3>
屬性名 | 說明 |
href | 跳轉鏈接 |
target | 鏈接打開方式 |
target屬性值
屬性值 | 說明 |
_self | 默認,原窗口打開鏈接 |
_blank | 在新窗口打開鏈接 |
_parent | 在父窗口打開鏈接 |
_top | 在頂層窗口打開超鏈接 |
target屬性值一般使用_self(默認)和_blank
<ul type="屬性值">
<li>列表項</li>
<li>列表項</li>
<li>列表項</li>
</ul>
解釋:
1、ul,unordered lists,無序列表,li,list item,列表項
2、ul標簽子標簽只允許是li標簽
3、li標簽可以包含任意內容
type屬性值
屬性值 | 說明 |
disc | 默認,實心圓 |
circle | 空心圓 |
square | 實心方型 |
<ul>
<li>你</li>
<li>我</li>
<li>他</li>
</ul>
<ol type="屬性值">
<li>列表項</li>
<li>列表項</li>
<li>列表項</li>
</ol>
解釋:
1、ol,ordered lists,有序列表,li,list item,列表項
2、ol標簽子標簽只允許是li標簽
3、li標簽可以包含任意內容
type屬性值
屬性值 | 說明 |
1 | 默認,阿拉伯數字,1,2,3...... |
a | 小寫英文字母,a,b,c...... |
A | 大寫英文字母,A,B,C...... |
i | 小寫羅馬數字,i,ii,iii...... |
I | 大寫羅馬數字,I,II,III...... |
<ol>
<li>你</li>
<li>我</li>
<li>他</li>
</ol>
<dl>
<dt>名詞</dt>
<dd>描述</dd>
……
</dl>
解釋:
1、dl,definition lists,自定義列表;dt,definition term,自定義列表組;dd,definition description,自定義列表描述
<dl>
<dt>稱呼</dt>
<dd>你</dd>
<dd>我</dd>
<dd>他</dd>
</dl>
<table>
<tr>
<td>單元格1</td>
<td>單元格2</td>
</tr>
<tr>
<td>單元格3</td>
<td>單元格4</td>
</tr>
</table>
解釋:
1、tr,table row,表格行;td,table data cell,表行單元格
<table>
<tr>
<td>1</td>
</tr>
</table>
屬性名 | 屬性值 | 描述 |
border | 數字 | 邊框寬度 |
width | 數字 | 表格寬度 |
height | 數字 | 表格高度 |
<table border="1" width="200" height="50">
<tr>
<td>1</td>
</tr>
</table>
<caption>標題內容</caption>,位于表格內第一行
<table border="1" width="200" height="50">
<caption>數字</caption>
<tr>
<td>1</td>
</tr>
</table>
<th></th>,th,table header cell,表頭單元格
<table border="1" width="200" height="50">
<caption>數字</caption>
<tr>
<th>序號</th>
</tr>
<tr>
<td>1</td>
</tr>
</table>
thead、tbody、tfoot
<table border="1" width="200" height="50">
<caption>數字</caption>
<thead>
<tr>
<th>序號</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>匯總</td>
</tr>
</tfoot>
</table>
屬性名 | 屬性值 | 說明 |
rowspan | 合并單元格個數 | 合并行,單元格垂直合并 |
colspan | 合并單元格個數 | 合并列,單元格水平合并 |
<td rowspan="跨越的行數"></td>
<td colspan="跨越的列數"></td>
<table border="1" width="200" height="50">
<caption>數字</caption>
<thead>
<tr>
<th>序號</th>
<th>金額</th>
<th>金額</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td rowspan="2">20</td>
<td rowspan="2">20</td>
</tr>
<tr>
<td>2</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>匯總</td>
<td colspan="2">40</td>
</tr>
</tfoot>
</table>
雙標簽,包裹其它表單標簽
<form>
// 表單
</form>
form標簽的常用屬性
屬性 | 說明 |
name | 表單名稱 |
method | 提交方式 |
action | 提交地址 |
target | 打開方式 |
enctype | 編碼方式 |
name屬性
一個頁面中,表單可能不止一個。name屬性,用來區分不同的表單
<form name="myForm"></form>
method屬性
用來指定表單數據使用哪種提交方式給后端
屬性值 | 說明 |
get | get方式 |
post | post方式 |
<form method="get"></form>
action屬性
用來指定表單數據提交到哪個地址
<!-- 比如提交到index.php地址 -->
<form action="index.php"></form>
target屬性
該屬性跟a標簽的target屬性一樣,其屬性值也是四個,一般情況只用到_blank屬性值,默認也是這個值
<form target="_blank"></form>
enctype屬性
屬性值 | 說明 |
application/x-www-form-urlencoded | 在發送前編碼所有字符(默認) |
multipart/form-data | 不對字符編碼,在使用包含文件上傳控件的表單時,必須使用該值 |
text/plain | 空格轉換為 "+" 加號,但不對特殊字符編碼 |
<form enctype="multipart/form-data"></form>
input是單標簽
<input type="表單類型">
屬性值 | 說明 |
text | 單行文本框 |
password | 密碼文本框 |
radio | 單選框 |
checkbox | 多選框 |
button | 普通按鈕 |
submit | 提交按鈕 |
reset | 重置按鈕 |
file | 文件上傳 |
單行文本框常用屬性
屬性 | 說明 |
value | 設置文本框的默認值 |
size | 設置文本框的長度 |
maxlength | 設置最多可輸入字符 |
<form>
<input type="text" value="默認值" size="長度" maxlength="可輸入字符">
</form>
<form>
<label>姓名:<input type="text" value="曹操" size="20" maxlength="10"></label>
</form>
密碼文本框常用屬性
密碼文本框常用屬性和單行文本框常用屬性相同
<input type="password" value="默認值" size="長度" maxlength="可輸入字符">
<form>
<label>密碼:<input type="password" value="12345678" size="20" maxlength="10"></label>
</form>
單選框
屬性 | 說明 |
name | 組名,同組單選框,組名要相同,必要屬性 |
value | 單選框選項取值,必要屬性 |
checked | 默認選中項,同組單選框,可以有一個默認選中項 |
<input type="radio" name="組名" value="取值" checked="checked">
<form>
性別:
<input type="radio" name="sex" value="男" checked="checked">男
<input type="radio" name="sex" value="女">女
</form>
復選框
復選框和單選框的屬性都相同,區別復選框可以多選
<form>
愛好:
<input type="checkbox" name="hobby" value="籃球" checked>籃球
<input type="checkbox" name="hobby" value="足球" checked>足球
<input type="checkbox" name="hobby" value="臺球">臺球
</form>
普通按鈕
<input type="button" value="取值">
<form>
<input type="button" value="普通按鈕">
</form>
<button>普通按鈕</button>
區別:
1、input是單標簽,button是雙標簽
2、button標簽的信息除了文本,還可以是圖像、其它標簽等
3、button有type屬性,屬性值可以是button、submit、reset等
提交按鈕
<input type="submit" value="取值">
<form>
<input type="submit" value="提交">
</form>
把對應表單數據提交給后端服務器
重置按鈕
<input type="reset" value="取值">
<form>
<input type="reset" value="重置">
</form>
點擊重置后,所在form表單里所有內容被清空了
文件上傳
<input type="file">
<form>
<input type="file">
</form>
<textarea name="文本名稱" cols="列數" rows="行數"></textarea>
<form>
<textarea name="文本名稱" cols="1" rows="2"></textarea>
</form>
<select>
<option>選項內容</option>
<option>選項內容</option>
</select>
下拉列表標簽是為了節省頁面空間
select標簽屬性
屬性名 | 說明 |
name | 數據提交后端所需字段 |
size | 下拉選項顯示個數 |
multiple | 默認只允許選一個,選多個得加這個屬性 |
disabled | 所有下拉選項禁止選中 |
<form>
<select name="age" size="4" multiple="multiple" disabled="disabled">
<option>18歲以下</option>
<option>18-28歲</option>
<option>28-38歲</option>
<option>38歲以上</option>
</select>
</form>
option標簽屬性
屬性名 | 說明 |
selected | 默認選中 |
value | 被選中,數據提交后端的值 |
disabled | 該下拉選項禁止選中 |
<form>
<select name="age" size="5">
<option value="1">18歲以下</option>
<option value="2" disabled="disabled">18-28歲</option>
<option value="3" selected="selected">28-38歲</option>
<option value="4">38歲以上</option>
</select>
</form>
<iframe src="URL" width="數值" height="數值"></iframe>
框架標簽常用屬性
屬性名 | 說明 |
src | 嵌入的文檔地址 |
width | 標簽寬度 |
height | 標簽高度 |
<iframe src="https://www.bilibili.com" width="300" height="200"></iframe>
有些文檔禁止被嵌入
HTML標簽分為三種,行內標簽、塊級標簽和行內塊級標簽。
特點:
1、在頁面內只占據剛好能包裹自己內容的空間
2、沒有寬高,內容多大就多大,行內標簽不能嵌套塊級標簽(a標簽除外)
3、行內標簽設置寬高無效,可以對行高line-height進行設置
4、可以設置外邊距margin和內邊距padding,但只對左右邊距有效果,上下無效
5、常見行內標簽span、a、strong、ins、del、br等
span標簽
雙標簽,行內標簽,本身沒有固定樣式
<p>我是<span>中國人</span></p>
特點:
1、獨占一行
2、高度、寬度、外邊距、內邊距都可以設置生效
3、寬度默認是父級寬度的100%
4、是一個容器盒子,可以嵌套多層子級行內標簽、塊級標簽,文本類塊級標簽除外
5、常見塊級標簽div、p、h1~h6、ol、ul、li等
div標簽
雙標簽,塊級標簽,本身沒有固定樣式
<!-- 頭部區域 -->
<div></div>
<!-- 內容區域 -->
<div></div>
特點
1、在頁面內只占據剛好能包裹自己內容的空間
2、高度、寬度、外邊距、內邊距都可以設置生效
3、常見塊級標簽img、input、td
通過css樣式display屬性轉換,這是css的內容
*請認真填寫需求信息,我們會在24小時內與您取得聯系。