国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
名稱的重要性:下拉列表、菜單、導航
自定義的需求
構建“混合”選擇器
可用性測試
關於類似菜單的選擇器
結語
首頁 web前端 css教學 在本機和自定義選擇元素之間達到平衡

在本機和自定義選擇元素之間達到平衡

Apr 05, 2025 am 09:32 AM

Striking a Balance Between Native and Custom Select Elements

本文探討如何構建既美觀又易訪問的樣式化下拉選擇元素。我們將巧妙地結合原生<select></select>元素和自定義樣式,實現(xiàn)最佳用戶體驗。

名稱的重要性:下拉列表、菜單、導航

在研究過程中,我們發(fā)現(xiàn)“下拉列表”、“菜單”、“導航”等術語經(jīng)?;煊?,導致歧義。本文將明確定義“下拉列表”:

下拉列表:一種交互式組件,包含一個按鈕,用於顯示和隱藏項目列表,通常通過鼠標懸停、點擊或輕觸觸發(fā)。列表默認隱藏,交互後顯示。列表通常以塊狀內容(即選項)的形式覆蓋其他內容。

許多界面元素看起來像下拉列表,但簡單地將其稱為“下拉列表”如同用“魚”來描述動物一樣籠統(tǒng)。我們需要區(qū)分菜單、導航和選擇元素這三種不同類型的下拉列表:

  • 菜單:頁面內容中用戶可執(zhí)行的命令或操作列表。
  • 導航:用於網(wǎng)站導航的鏈接列表。
  • 選擇:表單控件(<select></select> ),用於在表單中顯示供用戶選擇的選項列表。

不同用戶對界面的感知和交互方式不同,因此對UI元素的命名和設計模式的定義存在主觀性。

<menu></menu>元素已棄用,不推薦使用。關於包含式菜單和菜單按鈕的詳細說明,以及為什麼不應將ARIA 菜單角色用於站點導航,請參考相關資源。

我們將專注於作為<select></select>元素的下拉列表類型。

<select></select>元素的樣式化挑戰(zhàn)

根據(jù)MDN 的說法,樣式化表單控件存在“好、壞、醜”三種情況。<select></select>元素無疑屬於“醜”的範疇,其樣式化支持不足,導致開發(fā)者常常尋求替代方案。

理想情況下,如果可以避免使用<select></select>,就應該避免。然而,在某些情況下,<select></select>仍然是最佳選擇,例如選項數(shù)量眾多、佈局空間有限或時間/預算不足等。

自定義<select></select>的需求

創(chuàng)建自定義<select></select>時,通常需要滿足以下需求:

  • 按鈕顯示當前選定的選項。
  • 點擊按鈕切換選項列表的可見性。
  • 點擊選項列表中的選項會更新所選值,按鈕文本隨之更改,選項列表關閉。
  • 點擊組件外部會關閉選項列表。
  • 觸發(fā)器包含一個指向下方的三角形圖標,指示存在選項。

然而,這僅僅滿足了部分需求。原生<select></select>元素還提供以下功能:

  • 無論用戶的視覺能力如何,選定的選項都清晰可見。
  • 組件能夠以可預測的方式與鍵盤交互(例如,使用箭頭鍵導航,Enter 鍵選擇,Esc 鍵取消等)。
  • 輔助技術(例如屏幕閱讀器)能夠清晰地向用戶宣布元素,包括其角色、名稱和狀態(tài)。
  • 選項列表位置調整(即不會被屏幕裁剪)。
  • 元素遵守用戶的操作系統(tǒng)偏好設置(例如高對比度、配色方案、動畫等)。

許多自定義<select></select>組件都無法完全滿足這些需求。

構建“混合”選擇器

構建簡單的自定義<select></select>會犧牲功能性以換取美觀性。更好的方法是默認提供原生<select></select>,並在可能的情況下將其替換為更美觀的自定義版本。這就是“混合”選擇器的理念。它包含兩個選擇器:

  • 原生<select></select>,默認可見且可訪問。
  • 自定義<select></select>,默認隱藏,僅在使用鼠標時顯示。

以下是HTML 結構示例:

 <label for="selectNative">Main job role</label>
<div>
  <select id="selectNative" class="selectNative">
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
  </select>
  <div class="selectCustom">
    <!-- Custom select content -->
  </div>
</div>

CSS 代碼用於控制兩個選擇器的顯示和位置:

 .selectNative,
.selectCustom {
  position: relative;
  width: 22rem;
  height: 4rem;
}

.selectCustom {
  position: absolute;
  top: 0;
  left: 0;
  display: none;
}

@media (hover: hover) {
  .selectCustom {
    display: block;
  }
  .selectNative:focus .selectCustom {
    display: none;
  }
}

JavaScript 代碼用於處理點擊事件、同步兩個選擇器的值以及鍵盤導航。

可用性測試

我們進行了一次小型可用性測試,測試對象包括殘疾人士,使用不同的設備和輔助技術進行測試。測試結果表明該方法有效,但仍需進行更廣泛的測試。

該方法的優(yōu)點在於:

  • 移動設備和平板電腦用戶獲得原生<select></select>,提供更好的用戶體驗和性能。
  • 鍵盤用戶能夠以預期的方式與原生<select></select>交互。
  • 輔助技術能夠像正常一樣與原生<select></select>交互。
  • 鼠標用戶能夠與增強的自定義<select></select>交互。

該方法為所有用戶提供必要的原生功能,無需額外的工作量來實現(xiàn)所有原生特性。

然而,這種方法並非萬能的,它適用於簡單的選擇器,對於復雜的交互可能無效。

關於類似菜單的選擇器

如果選擇器始終具有選定選項(例如排序內容),則可以使用原生<select></select>或自定義菜單。需要注意WCAG 3.2.2 輸入準則:

除非在用戶使用組件之前已告知其行為,否則更改任何用戶界面組件的設置不應自動導致上下文更改。

為了滿足此準則,需要在用戶交互之前警告用戶操作,或在選擇器後添加說明。

結語

構建真正易訪問的選擇器組件比看起來更難。 “混合”選擇器是嘗試在保持美觀的同時獲得盡可能多的原生功能的一種方法。如果資源允許,請確保在發(fā)布組件之前進行充分的測試。

記住在創(chuàng)建“下拉列表”組件時使用正確的名稱。 ?

以上是在本機和自定義選擇元素之間達到平衡的詳細內容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

什麼是'渲染障礙CSS”? 什麼是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會阻塞頁面渲染是因為瀏覽器默認將內聯(lián)和外部CSS視為關鍵資源,尤其是使用引入的樣式表、頭部大量內聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。 1.提取關鍵CSS並內嵌至HTML;2.延遲加載非關鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合併CSS減少請求。建議使用工具提取關鍵CSS,結合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復雜腳本控制。

外部與內部CSS:最好的方法是什麼? 外部與內部CSS:最好的方法是什麼? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

我的CSS必須在較低的情況下嗎? 我的CSS必須在較低的情況下嗎? Jun 19, 2025 am 12:29 AM

否,CSSDOESNOTHAVETOBEINLOWERCASE.CHOMENDENS,使用flowercaseisrecommondendendending:1)一致性和可讀性,2)避免使用促進性技術,3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

CSS案例靈敏度:了解重要的 CSS案例靈敏度:了解重要的 Jun 20, 2025 am 12:09 AM

cssismostlycaseminemintiment,buturlsandfontfamilynamesarecase敏感。 1)屬性和valueslikeColor:紅色; prenotcase-sensive.2)urlsmustmustmatchtheserver'server'scase,例如

什麼是AutoPrefixer,它如何工作? 什麼是AutoPrefixer,它如何工作? Jul 02, 2025 am 01:15 AM

Autoprefixer是一個根據(jù)目標瀏覽器範圍自動為CSS屬性添加廠商前綴的工具。 1.它解決了手動維護前綴易出錯的問題;2.通過PostCSS插件形式工作,解析CSS、分析需加前綴的屬性、依配置生成代碼;3.使用步驟包括安裝插件、設置browserslist、在構建流程中啟用;4.注意事項有不手動加前綴、保持配置更新、非所有屬性都加前綴、建議配合預處理器使用。

什麼是CSS計數(shù)器? 什麼是CSS計數(shù)器? Jun 19, 2025 am 12:34 AM

csscounterscanautomationallymentermentermentections和lists.1)usecounter-ensettoInitializize,反插入式發(fā)芽,andcounter()orcounters()

CSS:何時重要(何時不)? CSS:何時重要(何時不)? Jun 19, 2025 am 12:27 AM

在CSS中,選擇器和屬性名不區(qū)分大小寫,而值、命名顏色、URL和自定義屬性則區(qū)分大小寫。 1.選擇器和屬性名不區(qū)分大小寫,例如background-color和Background-Color相同。 2.值中的十六進制顏色不區(qū)分大小寫,但命名顏色區(qū)分大小寫,如red有效而Red無效。 3.URL區(qū)分大小寫,可能導致文件加載問題。 4.自定義屬性(變量)區(qū)分大小寫,使用時需注意大小寫一致。

什麼是圓錐級函數(shù)? 什麼是圓錐級函數(shù)? Jul 01, 2025 am 01:16 AM

theconic-Gradient()functionIncsscreatesCircularGradientsThatRotateColorStopSaroundAcentralPoint.1.IsidealForPieCharts,ProgressIndicators,colordichers,colorwheels和decorativeBackgrounds.2.itworksbysbysbysbydefindefingincolordefingincolorstopsatspecificains off.

See all articles