gpt4 book ai didi

html - 更少的 CSS - & :focus not working in variable selector

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:22 25 4
gpt4 key购买 nike

我的 .less 样式表中有以下代码。

@text-inputs: input[type=text], input[type=password], input[type=email], input[type=number];
@shade: rgba(0, 0, 0, 0.1);

.highlight {
background: @shade;
}

.input-highlight {
@{text-inputs} {
.highlight;
}
}

.input-highlight-subtle {
@{text-inputs} {
&:focus {
.highlight;
}
}
}

我的 HTML:

<body class="input-highlight-subtle">
<input type="text" placeholder="Type Here" />
<input type="password" placeholder="Type Here"/>
</body>

上述 CSS 的结果:即使我没有悬停在输入上,输入的背景也是 @shade 颜色。我检查了我的浏览器开发者工具,显然它生成了这样的代码:

.highlight {
background: rgba(0, 0, 0, 0.1);
}
.input-highlight-subtle input[type=text], input[type=password], input[type=email], input[type=number]:focus {
background: rgba(0, 0, 0, 0.1);
}

那么我该如何解决呢?

编辑:

基本上我想要这样的输出:

.input-highlight-subtle input[type="text"]:focus, .input-highlight-subtle input[type="password"]:focus, .input-highlight-subtle  input[type="email"]:focus, .input-highlight-subtle input[type="number"]:focus {
.highlight;
}

我怎样才能用更少的代码实现 ^? (双关语)

最佳答案

你可以试试:

.text-inputs() {
input[type=text], input[type=password],input[type=email], input[type=number]{
.text-inputs-properties();
}
}

@shade: rgba(0, 0, 0, 0.1);

.highlight {
background: @shade;
}

.input-highlight {
.text-inputs();
.text-inputs-properties() {
.highlight;
}
}

.input-highlight-subtle {
.text-inputs();
.text-inputs-properties() {
&:hover{
.highlight;
}
}
}

感谢@seven-phases-max 的回答Focused selector in variable . How to do that stuff in LESS like in SCSS

我刚刚根据您的情况对其进行了调整,您可以在此处处理此 FIDDLE例如,我希望这有帮助

编辑 1: 我找到了 this @scottgit comment我认为它也应该被考虑

“有一种方法可以使用 LESS 1.7 的功能将属性分配给变量中定义的一组选择器。考虑一下:”

//I modified the code a litter bit for your case   

@shade: rgba(0, 0, 0, 0.1);

@inputs: {input[type=text], input[type=email], input[type=password], input[type=number] {.getProps()}};
@pseudo: ~':hover';
@props: { background: @shade;};

.input-highlight-subtle{
.setProps(@selectors; @props; @extension: ~'') {
@selectors();
.getProps() {
&@{extension} { @props(); }
}
}

.setProps(@inputs; @props; @pseudo);
}

“所以我可以根据需要分配一个伪类,并根据需要传递一组属性。关键是将 mixin .getProps() 调用放入 block 中为变量 @inputs 定义选择器,然后在 .setProps() 中将其作为本地混合调用,以便将属性放在我们想要的位置。 @extension 可以是任何转义字符串,作为选择器字符串的附加部分添加到每个选择器。上面我将 :focus 作为伪类,但我可以做 ~' > div + div' 作为子项和兄弟项的组合,或其他任何形式。"

here the jsfiddle example

关于html - 更少的 CSS - & :focus not working in variable selector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30696131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com