CSS指定伪元素:在以下输入之后

CSS指定伪元素:在以下输入之后,css,input,pseudo-element,Css,Input,Pseudo Element,我有无法更改的html代码。 我不能用JS来帮助你。所以唯一的选择是CSS。示例如下: HTML: <!-- code for input --> <div class="form-group complete"> <label>label for text input</label> <input type="text"/> <span class="error-message

我有无法更改的html代码。 我不能用JS来帮助你。所以唯一的选择是CSS。示例如下:

HTML

<!-- code for input -->
<div class="form-group complete">
<label>label for text input</label>
<input type="text"/> <span class="error-message">This is an error message</span>

</div>
<!-- code for dropdown -->
<div class="form-group complete">
<label>label for select input</label>
<div class="custom-selectbox custom-selectbox-form">
    <select name="sth" required>
        <option>a</option>
        <option>b</option>
        <option>c</option>
        <option>d</option>
    </select> <span class="selectedValue">&nbsp;</span>
<span class="is-visually-hidden">select to open the list</span>

</div> <span class="error-message">This is an error message</span>

</div>
.complete:after {
    content:'OK';
}
我需要为输入字段显示其他内容(在本例中为“确定”),但不为select显示

交互组件后的跨距是可选的,因此不必存在


你知道如何定义这个选择器吗?

既然你不能使用
:在
输入
元素上的
之后,我能想到的就是一个真正的黑客解决方案:选择后面的元素,在它前面插入一个
:伪元素

.complete input[type="text"] + .error-message:before {
    content:'OK';
}
作为一个有效的例子

编辑

.error message
元素并不总是存在,这会影响计划。您可以对:before(
+:before
)进行非固定调用,但如果以下元素以某种方式隐藏,则OK消息也将隐藏。即使它存在,它也会选择下面元素的样式。看


我将把这个想法留给大家看,但它看起来不适合你的目的。

可能的重复不能在“输入”元素上使用伪元素。@TonyChen哦,我想我误解了他的意思。如果是这样的话,您可以对:before进行非固定调用,例如,
input[type=“text”]+:before{}
。但这也有它自己的问题。我会更新帖子的。