【发布时间】:2019-10-07 18:31:12
【问题描述】:
我正在尝试使用前缀和后缀元素进行输入:
- 单独,输入四舍五入
- 带有前缀 (resp. suffix) 的左侧 (resp. right) 边是圆角的,而不是右侧 (resp. left) 边
- 同时使用前缀和后缀,输入根本不会四舍五入(按钮是四舍五入的)
我已经设法处理了前缀元素,但我似乎找不到一个 CSS 选择器来表示“如果元素跟随输入,则在输入的右侧圆整”,让它在输入上或其上容器。
我只想在 HTML/CSS 中做(没有 JS)。有任何想法吗 ?
PS : 我不是要求以前的同级选择器。我在问是否有办法选择后跟后缀的输入。其中包括:
- 上一个兄弟选择器(不存在)
- 元素后面跟着另一个元素(正好相反,所以可能也不存在)
- 父容器将输入作为最后一个子容器,没有其他内容
- 父母有 N 个孩子(让我知道如果有 3 个孩子,那么输入应该四舍五入)
:root {
--radius: 5px;
}
div {
height: 36px;
margin: 12px;
}
* {
box-sizing: border-box;
}
input {
height: 100%;
padding: 0;
border-radius: var(--radius);
border: 1px solid #ccc;
padding: 0 6px;
}
button {
height: 100%;
background: teal;
border: 0;
color: white;
}
button[prefix] {
border-radius: var(--radius) 0 0 var(--radius);
}
button[suffix] {
border-radius: 0 var(--radius) var(--radius) 0;
}
div > button[prefix] + input {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
div > button[suffix] ~ input {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
<div>
<input type="text" placeholder="Type here">
</div>
<div>
<button prefix>P</button>
<input type="text" placeholder="Type here">
<button suffix>S</button>
</div>
<div>
<input type="text" placeholder="Type here">
<button suffix>S</button>
</div>
<div>
<button prefix>P</button>
<input type="text" placeholder="Type here">
</div>
【问题讨论】:
-
这不是以前的兄弟问题...这正是您要问的?
-
正如你已经提到的,没有previous sibling selector。如果您只是向父级添加一个类,这可能是最简单的,具体取决于场景(
with-suffix和/或with-prefix)。您根本无法通过其后面的元素来选择一个元素(反之亦然)。 -
@Paulie_D 因为如前所述,我正在其他两种情况下(使用父容器)寻找灵感,因为我似乎找不到解决方案。前面的兄弟选择器是许多可能的解决方案之一,而不是唯一的一个!
-
@ssc-hrep3 我正在使用 JS 框架,输入将被封装到父容器中,例如
<form-field>。目前,由于 JS,我能够对输入进行四舍五入,但我认为它仅在 CSS 中可行,无需使用其他类,只需选择器。 -
@Paulie_D 说的很大胆。我考虑了您的反馈,但也许其他人可能已经解决了这个问题(例如,使用容器)而您不知道?
标签: html css css-selectors