Web頁面 自定義選擇框Select

select下拉列表表單可能大家都很熟悉,不過默認(rèn)的下拉列表表單往往會讓一些網(wǎng)站覺得丑陋,同時(shí)用CSS也很難調(diào)整select的樣式。因此許多網(wǎng)站位了做出更符合網(wǎng)站風(fēng)格的select下拉表單,往往會用JS來模擬這種效果。
比如我們很熟悉的土豆網(wǎng),淘寶商城和亞馬遜都是用JS做的下拉列表表單。
這樣做的結(jié)果很明顯在視覺上與網(wǎng)站整體風(fēng)格統(tǒng)一,并且下拉列表樣式很漂亮,不過也帶來了一些不良反應(yīng),因?yàn)橛肑S來做的,所以會碰到許多預(yù)想不到的效果,下面通過測試者三個(gè)網(wǎng)站我們一一來分析他們各自的缺陷:
土豆的搜索類別選擇框,每次點(diǎn)擊都讓我覺得怪怪的:
1. 點(diǎn)擊后,彈出列表的位置與預(yù)期不同。潛意識里是下拉列表,結(jié)果土豆給了我一個(gè)“中拉列表”。
2. 習(xí)慣性地用上/下鍵選擇,結(jié)果卻讓整個(gè)頁面滾動(dòng)。
3. 一怒之下,想關(guān)閉不用了。按下 ESC 鍵,卻沒有任何響應(yīng)。
4. 禁用 JS 后,完全不可用。
類似,淘寶商城也是看起來很美:
除了第 1 點(diǎn),其它都和土豆一樣,可訪問性和可用性都存在問題。
解決辦法很簡單,采用原生的選擇框即可,比如 Amazon 的:
為什么不鼓勵(lì)在 Web 頁面中使用自定義選擇框呢?
Select 選擇框是一個(gè)非常成熟的交互控件。成熟意味著用戶很容易接受,但成熟也意味著對各種用戶都考慮很周全,有著非常豐富的交互細(xì)節(jié)。比如:對 PgUp/PgDn, Home/End 等鍵盤操作的響應(yīng),以及在不同位置能自動(dòng)調(diào)節(jié)下拉列表的彈出方向等等。
采用 JS 來模擬選擇框,需要大量的工作和細(xì)致的測試。即使公司愿意投入,也依舊無法實(shí)現(xiàn)原生控件的某些特性。比如:上面 Amazon 的選擇框,我把瀏覽器拉到很矮,這時(shí)下拉列表能伸出到瀏覽器外面去。
為了一丁點(diǎn)“視覺小甜點(diǎn)”,讓交互喪失了如此多的實(shí)用細(xì)節(jié),還得耗費(fèi)前端程序員的大量時(shí)間,結(jié)果卻費(fèi)力不討好,實(shí)在是很糟糕。
PS:要使用自定義選擇框,得滿足以下條件:
1. 像 google 一樣瘋狂,愿意花費(fèi)大量時(shí)間和資源。
2. 像 google 一樣細(xì)致,要做就做好,要模擬就模擬透。
3. 在 web app 上應(yīng)用。
可惜,在國內(nèi),像 google 或 facebook 一樣瘋狂和細(xì)致的公司,還沒出現(xiàn)。
相關(guān)文章
- HTML表格用于在網(wǎng)頁上展示數(shù)據(jù),通過標(biāo)簽及其相關(guān)標(biāo)簽來創(chuàng)建,表格由行和列組成,每一行包含一個(gè)或多個(gè)單元格,單元格可以包含文本、圖像、鏈接等元素,本文將詳細(xì)介紹HTML表格2025-03-12
- 本文介紹了三種禁止HTML頁面滾動(dòng)的方法:通過CSS的overflow屬性、使用JavaScript的滾動(dòng)事件監(jiān)聽器以及使用CSS的position:fixed屬性,每種方法都有其適用場景和優(yōu)缺點(diǎn),感興2025-02-24
使用HTML和CSS實(shí)現(xiàn)文字鏤空效果的代碼示例
在 Web 開發(fā)中,文本的視覺效果是提升用戶體驗(yàn)的重要因素之一,通過 CSS 技巧,我們可以創(chuàng)造出許多獨(dú)特的效果,例如文字鏤空效果,本文將帶你一步一步實(shí)現(xiàn)一個(gè)簡單的文字鏤空2024-11-17Html去除a標(biāo)簽的默認(rèn)樣式的操作代碼
在Html中,a標(biāo)簽?zāi)J(rèn)的超鏈接樣式是藍(lán)色字體配下劃線,這可能不滿足所有設(shè)計(jì)需求,如需去除這些默認(rèn)樣式,可以通過CSS來實(shí)現(xiàn),本文給大家介紹Html去除a標(biāo)簽的默認(rèn)樣式的操作代碼2024-09-25HTML文本域如何設(shè)置為禁止用戶手動(dòng)拖動(dòng)
在HTML中,可以通過設(shè)置CSS的resize屬性為none,來禁止用戶手動(dòng)拖動(dòng)文本域(textarea)的大小,這種方法簡單有效,適用于大多數(shù)現(xiàn)代瀏覽器,但需要在老舊瀏覽器中進(jìn)行測試以確保2024-09-25如何通過HTML/CSS 實(shí)現(xiàn)各類進(jìn)度條的功能
本文詳細(xì)介紹了如何利用HTML和CSS實(shí)現(xiàn)多種風(fēng)格的進(jìn)度條,包括基礎(chǔ)的水平進(jìn)度條、環(huán)形進(jìn)度條以及球形進(jìn)度條等,還探討了如何通過動(dòng)畫增強(qiáng)視覺效果,內(nèi)容涵蓋了使用HTML原生標(biāo)簽2024-09-19HTML中Canvas關(guān)鍵知識點(diǎn)總結(jié)
Canvas 提供了一套強(qiáng)大的 2D 繪圖 API,適用于各種圖形繪制、圖像處理和動(dòng)畫制作,可以幫助你創(chuàng)建復(fù)雜且高效的網(wǎng)頁圖形應(yīng)用,這篇文章主要介紹了HTML中Canvas關(guān)鍵知識點(diǎn)總結(jié)2024-06-03html table+css實(shí)現(xiàn)可編輯表格的示例代碼
本文主要介紹了html table+css實(shí)現(xiàn)可編輯表格的示例代碼,主要使用HTML5的contenteditable屬性,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)2024-03-06HTML中使用Flex布局實(shí)現(xiàn)雙行夾批效果
本文主要介紹了HTML中使用Flex布局實(shí)現(xiàn)雙行夾批效果,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)2024-02-22HTML+CSS實(shí)現(xiàn)炫酷登錄切換的項(xiàng)目實(shí)踐
在網(wǎng)站開發(fā)中,登錄頁面是必不可少的一部分,本文就來介紹一下HTML+CSS實(shí)現(xiàn)登錄切換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需2024-02-02