目录
复选框样式
解决边缘情况
自定义复选框样式
隐藏和自动填充字段
结论
首页 web前端 css教程 验证风格最终调整

验证风格最终调整

Jan 17, 2025 pm 06:07 PM

要在添加缺失样式的同时最大化功能,请记住以下关键原则:不要假设。

这意味着我们可以使用 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;
  }
}
登录后复制

这个更简单的选择器为其他元素的样式提供了更大的灵活性,例如所需的星号、帮助文本和反馈消息。 有时,不太复杂的方法会更好。

Validation style final tweaks

解决边缘情况

一个场景涉及一个模糊的必需星号,位于最右侧。 在不更改库组件或共享 CSS 的情况下,我们可以通过设置其容器的样式来提高其可见性:

/* Set container width to c-5 and display as block */
登录后复制

Validation style final tweaks

这涉及:

  1. 将容器的宽度设置为所需的百分比并将其显示更改为 block(Angular 组件默认为 contents)。
  2. 将内部组件宽度调整为每个 50%。
  3. 将错误消息更新为“添加未来日期”,包含过期日期和所需值规则。

自定义复选框样式

项目通常具有独特的复选框样式。 使用我们现有的 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... */
}
登录后复制

Validation style final tweaks

这表明避免过于复杂的选择器可以防止 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;
  }
}
登录后复制

Validation style final tweaks

对于自动填充字段,我们使用 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;
  }
}
登录后复制
登录后复制

Validation style final tweaks

结论

我们的目标是:原生 HTML 输入、最少的验证规则、灵活的 Angular 表单、基于属性的样式、松散的表单提交以及最小的可替换样式。 我们相信我们已经实现了这些目标。

Validation style final tweaks

以上是验证风格最终调整的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

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集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

如何使用HTML,CSS和JavaScript创建动画倒计时计时器 如何使用HTML,CSS和JavaScript创建动画倒计时计时器 Apr 11, 2025 am 11:29 AM

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

HTML数据属性指南 HTML数据属性指南 Apr 11, 2025 am 11:50 AM

您想了解的有关HTML,CSS和JavaScript中数据属性的所有信息。

使Sass更快的概念证明 使Sass更快的概念证明 Apr 16, 2025 am 10:38 AM

在一个新项目开始时,Sass汇编发生在眼睛的眨眼中。感觉很棒,尤其是当它与browsersync配对时,它重新加载

我们如何创建一个在SVG中生成格子呢模式的静态站点 我们如何创建一个在SVG中生成格子呢模式的静态站点 Apr 09, 2025 am 11:29 AM

格子呢是一块图案布,通常与苏格兰有关,尤其是他们时尚的苏格兰语。在Tar​​tanify.com上,我们收集了5,000多个格子呢

如何在WordPress主题中构建VUE组件 如何在WordPress主题中构建VUE组件 Apr 11, 2025 am 11:03 AM

内联式模板指令使我们能够将丰富的VUE组件构建为对现有WordPress标记的逐步增强。

php是A-OK用于模板 php是A-OK用于模板 Apr 11, 2025 am 11:04 AM

PHP模板通常会因促进Subpar代码而变得不良说唱,但这并不是这样的情况。让我们看一下PHP项目如何执行基本的

静态表单提供商的比较 静态表单提供商的比较 Apr 16, 2025 am 11:20 AM

让我们尝试在这里造成一个术语:“静态表单提供商”。你带上html

See all articles