html - 如何在输入聚焦时设置表单元素的样式?

标签 html css

我有一个结构类似于下面的表单。当 input[type=text] 获得焦点时,如何使用 CSS 设置 input[type=submit] 元素的样式?

例如:

<form id="example">
    <input type="text" name="search">
    <input type="submit" value="Search">
</form>

<style>
    #example > input[type="text"]:focus {
        // please style input[type="submit"]
    }
</style>

我正在尝试完成此操作,因为 wordpress 主题有一个搜索表单,其中包含内嵌的搜索输入和提交按钮。当用户专注于输入时,我希望输入字段和提交按钮具有相同的边框颜色变化。

或者,我可以围绕输入和提交按钮设置整个 div 的样式,但随后我们会回到在一个元素获得焦点时设置另一个元素样式的问题。

这甚至可以通过 CSS3 实现,还是我必须求助于 javascript 函数? (最后的手段。)

最佳答案

如果您实际代码中的结构与您发布的问题相同,您可以使用 +(相邻的)选择器在文本输入上选择提交按钮。

这是您正在寻找的选择器:#example > input[type="text"]:focus + input[type="submit"]

要阅读更多关于 + 选择器的信息,this answer to "What does the “+” (plus sign) CSS selector mean?"以简短的方式对其进行了解释,甚至涵盖了浏览器支持。


这是一个片段来展示它的实际效果。看起来不太漂亮,但确实有用:)

#example > input[type="text"]:focus + input[type="submit"] {
  background: gray;
}
<form id="example">
    <input type="text" name="search">
    <input type="submit" value="Search">
</form>

关于html - 如何在输入聚焦时设置表单元素的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39048893/

相关文章:

html - 仅在一侧显示框阴影

html - 在移动 View 中使用 css 显示隐藏的 div

javascript - 如何将计数器输出显示为文本而不是输入

internet-explorer - LESS mixin 中参数的单引号

jquery - 将 div 列添加到 Bootstrap 选项卡内容中

仅 css div 内部边框

html - 我如何将每个换行符转换/替换为 '<br/>'?

html - 带有 jquery ui 标题的样式 div

javascript - html表格列调整大小

html - 第二个导航栏位于顶部的第一个导航栏下方