好的,我最终找到了Sass混合库Bourbon。
他们有一个针对HTML5输入类型的“附加组件”(这是他们创建的.scss文件的链接),但它没有:hover
或:focus
伪元素。所以我添加了它们。
老实说,我不知道我所做的是否是编写此mixin的最佳方法,但这个东西运行得非常好:
$inputs-list: 'input[type="email"]',
'input[type="number"]',
'input[type="password"]',
'input[type="search"]',
'input[type="tel"]',
'input[type="text"]',
'input[type="url"]',
'input[type="color"]',
'input[type="date"]',
'input[type="datetime"]',
'input[type="datetime-local"]',
'input[type="month"]',
'input[type="time"]',
'input[type="week"]';
$unquoted-inputs-list: ();
@each $input-type in $inputs-list {
$unquoted-inputs-list: append($unquoted-inputs-list, unquote($input-type), comma);
}
$all-text-inputs: $unquoted-inputs-list;
$inputs-list-hf:'input[type="email"]:hover',
'input[type="number"]:hover',
'input[type="password"]:hover',
'input[type="search"]:hover',
'input[type="tel"]:hover',
'input[type="text"]:hover',
'input[type="url"]:hover',
'input[type="color"]:hover',
'input[type="date"]:hover',
'input[type="datetime"]:hover',
'input[type="datetime-local"]:hover',
'input[type="month"]:hover',
'input[type="time"]:hover',
'input[type="week"]:hover',
'input[type="email"]:focus',
'input[type="number"]:focus',
'input[type="password"]:focus',
'input[type="search"]:focus',
'input[type="tel"]:focus',
'input[type="text"]:focus',
'input[type="url"]:focus',
'input[type="color"]:focus',
'input[type="date"]:focus',
'input[type="datetime"]:focus',
'input[type="datetime-local"]:focus',
'input[type="month"]:focus',
'input[type="time"]:focus',
'input[type="week"]:focus';
$unquoted-inputs-list-hf: ();
@each $input-type-hf in $inputs-list-hf {
$unquoted-inputs-list-hf: append($unquoted-inputs-list-hf, unquote($input-type-hf), comma);
}
$all-text-inputs-hf: $unquoted-inputs-list-hf;
如您所见,我复制并粘贴了原始混合,并添加了前缀-hf
以及新规则中的:hover
和:focus
。
我的 .scss 文件中添加了这个@import:
@import "html5-input-types";
(不需要下划线_
或文件扩展名.scss
)
在我的 .scss 文件的 '表单' 部分中,我添加了以下规则:
/*Normal state*/
#{$all-text-inputs},
textarea,
select { ... }
/*:hover and :focus states*/
#{$all-text-inputs-hf},
textarea:hover,
textarea:focus,
select:hover,
select:focus { ... }
我知道我有一个
textarea
和
select
在mixin文件之外(
html5-input-types.scss),不确定是否包含它们,得想一想。无论如何,这对我来说效果很好,虽然如果将来有任何变化,我仍需要更新
html5-input-types.scss,但至少我比以前更有效地处理这些输入字段。希望我做的能帮到别人。如果您有改进mixin的建议,请务必让我(我们)知道。谢谢。
input{}
在这种情况下也可以达到同样的效果... - Christoph