自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

復(fù)雜的可過濾下拉選框?只需要一個Datalist 標(biāo)簽

開發(fā) 前端
本文將介紹 HTML5 規(guī)范中,比較有意思的一個標(biāo)簽 <datalist>,通過它,我們可以快速構(gòu)建下拉選框,快速構(gòu)建可輸入過濾選項的下拉選框。

[[429941]]

大家好,我是 Coco,今天給大家?guī)硪粋€很有意思的標(biāo)簽<datalist>,閱讀本文需要 5 分鐘。,閱讀本文需要 5 分鐘。

本文將介紹 HTML5 規(guī)范中,比較有意思的一個標(biāo)簽 <datalist>,通過它,我們可以 ,通過它,我們可以

  1. 快速構(gòu)建下拉選框
  2. 快速構(gòu)建可輸入過濾選項的下拉選框

什么是 <datalist>

經(jīng)常制作表單的同學(xué)一定對下拉選框不陌生。

傳統(tǒng)的下拉選框 select[1],類似于這樣:

  1. <label for="pet-select">Choose a pet:</label> 
  2. <select name="pets" id="pet-select"
  3.     <option value="">--Please choose an option--</option> 
  4.     <option value="dog">Dog</option
  5.     <option value="cat">Cat</option
  6.     <option value="hamster">Hamster</option
  7.     <option value="parrot">Parrot</option
  8.     <option value="spider">Spider</option
  9.     <option value="goldfish">Goldfish</option
  10. </select

然而,這僅僅是最基礎(chǔ)的用法。通常而言,業(yè)務(wù)中對一個下拉選框的要求會更多。

其中一項便是當(dāng)選項特別多的時,需要有可搜索過濾的功能,譬如 Element-UI[2] 封裝的 Select 組件,就提供搜索的功能:

其實,HTML5 也原生提供了可以輸入過濾的下拉選框,也就是本文將介紹的 -- <datalist>。 。

使用 <datalist> 實現(xiàn)輸入過濾的下拉選框 實現(xiàn)輸入過濾的下拉選框

使用 <datalist> 其實非常簡單,它的核心就是提供了可輸入過濾的下拉選框功能。

我們需要利用一個 <input> 標(biāo)簽和 <datalist> 關(guān)聯(lián)起來,簡單的示例如下: 其實非常簡單,它的核心就是提供了可輸入過濾的下拉選框功能。

  1. <label>Choose a browser from this list: 
  2. <input list="browsers" name="myBrowser" /></label> 
  3. <datalist id="browsers"
  4.   <option value="Chrome"
  5.   <option value="Firefox"
  6.   <option value="Internet Explorer"
  7.   <option value="Opera"
  8.   <option value="Safari"
  9. </datalist> 

關(guān)聯(lián)起來, 內(nèi)的 list 屬性的值為關(guān)聯(lián)的 的 id。

上述代碼通過了 <input> 內(nèi)的 list 屬性和定義的 <datalist> 關(guān)聯(lián)起來,<input> 內(nèi)的 list 屬性的值為關(guān)聯(lián)的 <datalist> 的 id。

這樣,我們就能直接實現(xiàn)一個可輸入過濾的下拉選框功能:

一看就懂,其實 <datalist> 使用起來還是非常簡單。 使用起來還是非常簡單。

使用的局限性

其實成為標(biāo)準(zhǔn)已經(jīng)很久了。然而,大家會發(fā)現(xiàn)這個標(biāo)簽的出鏡率其實并不高。<datalist> 使用的局限性

<datalist> 其實成為標(biāo)準(zhǔn)已經(jīng)很久了。然而,大家會發(fā)現(xiàn)這個標(biāo)簽的出鏡率其實并不高。

限制了 <datalist> 被大規(guī)模使用的原因在于其 CSS 樣式無法得到有效的修改,<datalist> 和 <select> 非常類似,很難用 CSS 進(jìn)行高效的設(shè)計。

瀏覽給這類元素定義了默認(rèn)樣式,并且我們無法通過 CSS 去修改它們。最為致命的是,瀏覽器默認(rèn)樣式的表現(xiàn)在不同瀏覽器之間并不一致。這給追求穩(wěn)定,UI 表現(xiàn)一致的業(yè)務(wù)來說,是災(zāi)難性的缺點!

所以我們?nèi)粘V惺褂玫綐I(yè)務(wù)中的這些復(fù)雜表單元素,通常都是使用了使用非語義元素 <div>、<ul> 等普通標(biāo)簽?zāi)M HTML 結(jié)構(gòu),使用了 JavaScript 添加行為,再使用 WAI-ARIA 來提供語義。

當(dāng)然,這也不代表它們完全沒有用武之地,在一些非業(yè)務(wù)環(huán)境下,合理使用 <datalist> 還是能夠很少代碼量的。
被大規(guī)模使用的原因在于其 CSS 樣式無法得到有效的修改,

參考資料

[1]select:

https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/select

[2]Element-UI:

https://element.eleme.io/#/zh-CN/component/select

 

責(zé)任編輯:姜華 來源: iCSS前端趣聞
相關(guān)推薦

2018-08-03 12:21:02

2020-07-21 08:42:16

搞垮服務(wù)器日志

2016-12-13 17:02:49

androidjava移動應(yīng)用開發(fā)

2022-08-24 16:26:51

Linuxcheat 命令

2021-04-16 09:17:39

機(jī)器學(xué)習(xí)人工智能AI

2020-04-01 11:12:43

腦機(jī)接口機(jī)器翻譯人工智能

2009-04-09 16:52:47

LinuxUbuntu 9.04

2019-10-31 10:43:05

Python 開發(fā)編程語言

2018-03-07 10:03:40

2023-05-23 10:01:51

冪等性抽象代數(shù)

2019-10-28 11:30:43

架構(gòu)數(shù)據(jù)結(jié)構(gòu)布隆過濾器

2023-10-11 12:45:49

Windows系統(tǒng)

2022-10-08 06:26:48

人工智能機(jī)器學(xué)習(xí)藝術(shù)

2010-03-16 16:47:25

Ubuntu 9.04

2021-07-13 08:14:27

色彩用色類型輔助色

2021-02-03 11:20:41

Docker架構(gòu)容器

2018-01-05 15:36:12

工具博客寫作

2018-01-09 15:44:57

2018-03-18 23:34:57

2019-08-06 09:03:52

程序員Java編程語言
點贊
收藏

51CTO技術(shù)棧公眾號