要在添加缺失樣式的同時最大化功能,請記住以下關鍵原則:不要假設。
這意味著我們可以使用 CSS 變數來設定相對填充、邊距、邊框和顏色,但我們不會指定複選框的外觀。這是專案層級的樣式決策,而不是特定於元素的決策。 (一些設計系統,例如 Material Design,對每個元素都進行了嚴格的樣式設計,從而阻礙了單個組件的重用。)
複選框樣式
對於複選框,只需交換複選框和標籤位置即可。讓整個專案設計來處理複選框的外觀。 有兩種方法:一種簡單的方法和一種更複雜的方法。 複雜的方法使用 CSS,如下圖:
.cr-field { /* Target previous sibling */ .cr-label:has(~ [type="checkbox"]) { /* Crucial: remove transform in all cases */ transform: none !important; inset-block-start: 0; inset-inline-start: 0; padding-inline-start: 1.8rem; position: relative; display: inline-block; background: none; cursor: pointer; } .cr-input[type="checkbox"] { position: absolute; inset-inline-start: 0; } }
一個更簡單的解決方案涉及明確地將新類型屬性分配給 cr-field
:
<!-- input.partial --> <div class="cr-field cr-checkbox"> <!-- ... --> </div>
然後,用這個不太複雜的 CSS:
.cr-field.cr-checkbox { .cr-label { /* Same as above */ } .cr-input { /* Same as above */ } .cr-feedback { margin-block-start: 0; float: none; } .cr-required { position: static; } }
這個更簡單的選擇器為其他元素的樣式提供了更大的靈活性,例如所需的星號、幫助文字和回饋訊息。 有時,不太複雜的方法會更好。
解邊緣情況
一個場景涉及一個模糊的必需星號,位於最右側。 在不更改庫組件或共享 CSS 的情況下,我們可以透過設定其容器的樣式來提高其可見性:
/* Set container width to c-5 and display as block */
這涉及:
- 將容器的寬度設定為所需的百分比並將其顯示變更為
block
(Angular 元件預設為contents
)。 - 將內部組件寬度調整為每個 50%。
- 將錯誤訊息更新為“新增未來日期”,包含過期日期和所需值規則。
自訂複選框樣式
項目通常具有獨特的複選框樣式。 使用我們現有的 CSS,讓我們使用 MDN 範例來設定複選框的樣式:
.gr-something .cr-field.cr-checkbox { .cr-input { /* Remove default appearance */ appearance: none; width: 44px; height: 24px; border-radius: 12px; transition: all 0.4s; } /* ...rest of MDN-based styles... */ }
這表明避免過於複雜的選擇器可以防止 CSS 衝突。
隱藏和自動填充欄位
隱藏輸入簡化了驗證。 如果在 cr-field
內,驗證就很簡單。對於此上下文之外的隱藏輸入,我們相應地引入 type="hidden"
屬性和樣式:
.cr-field.cr-hidden { .cr-label { display: none; } .cr-input[required] ~ .cr-required { display: none; } .cr-feedback { float: none; margin-block-start: 0; margin-inline-start: 0; } }
對於自動填充字段,我們使用 type="static"
來防止佔位符標籤重疊:
.cr-field { /* Target previous sibling */ .cr-label:has(~ [type="checkbox"]) { /* Crucial: remove transform in all cases */ transform: none !important; inset-block-start: 0; inset-inline-start: 0; padding-inline-start: 1.8rem; position: relative; display: inline-block; background: none; cursor: pointer; } .cr-input[type="checkbox"] { position: absolute; inset-inline-start: 0; } }
結論
我們的目標是:原生 HTML 輸入、最少的驗證規則、靈活的 Angular 表單、基於屬性的樣式、鬆散的表單提交以及最小的可替換樣式。 我們相信我們已經實現了這些目標。
以上是驗證風格最終調整的詳細內容。更多資訊請關注PHP中文網其他相關文章!

這是我們在形式可訪問性上進行的小型系列中的第三篇文章。如果您錯過了第二篇文章,請查看“以:focus-visible的管理用戶焦點”。在

本教程演示了使用智能表單框架創建外觀專業的JavaScript表單(注意:不再可用)。 儘管框架本身不可用,但原理和技術仍然與其他形式的建築商相關。

CSS盒子陰影和輪廓屬性獲得了主題。讓我們查看一些在真實主題中起作用的示例,以及我們必須將這些樣式應用於WordPress塊和元素的選項。

本文探討了Envato Market上可用的PHP表單構建器腳本,比較了其功能,靈活性和設計。 在研究特定選項之前,讓我們了解PHP形式構建器是什麼以及為什麼要使用一個。 PHP形式

Svelte Transition API提供了一種使組件輸入或離開文檔(包括自定義Svelte Transitions)時動畫組件的方法。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!