要在添加缺失样式的同时最大化功能,请记住以下关键原则:不要假设。
这意味着我们可以使用 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中文网其他相关文章!

重构自己的代码看起来是什么样的?约翰·瑞亚(John Rhea)挑选了他写的一个旧的CSS动画,并介绍了优化它的思维过程。

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingmatematingmultationmatingMultationPropertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用BombingingWithjavofofofofofoffo

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他们可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑战挑战InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)创造性

使用滚动阴影,尤其是对于移动设备,是克里斯以前涵盖的一个微妙的UX。杰夫(Geoff)涵盖了一种使用动画限制属性的新方法。这是另一种方式。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载
最流行的的开源编辑器

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境