将CSS应用于焦点上的输入容器

Jaz*_*zyP 2 javascript css

我有一个带有输入字段和内部按钮的div.我希望隐藏按钮,直到用户专注于输入.

我试图在包含div上使用:focus伪类,因为我认为它会在重点关注输入时继承,但它不起作用.

这是我的HTML

<div class="search">
    <input type="text" placeholder="Search..." />
    <button type="submit">Search</button>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我已经尝试过的CSS

.search button {
    display: none;
}

.search:focus button {
    display: block;
}
Run Code Online (Sandbox Code Playgroud)

没有JavaScript可以做到这一点吗?

Jos*_*ier 7

在这种情况下,您可以使用相邻的兄弟组合器+.

这里的例子

.search input:focus + button {
    display: block;
}
Run Code Online (Sandbox Code Playgroud)

但是,正如FelipeAls指出的那样,如果移除焦点,则无法单击该按钮.因此,你可以做这样的事情:

这里的例子

.search button:hover,
.search button:focus {
    display:block;
}
Run Code Online (Sandbox Code Playgroud)

  • 很好,直到你试图到达这个按钮(编辑:通过Tab键)...然后输入没有焦点,按钮回到其隐藏状态:( (5认同)
  • @FelipeAls你是对的但是这个按钮对于禁用了JavaScript的用户来说是一个后备,在这种情况下会有另一个按钮,当启用JavaScript时会覆盖它,所以我不太担心它不是很实用 (2认同)
  • 上面的工作点击鼠标单击按钮..但是当我按Tab键时按钮消失..因为我们可以使用额外的样式..` .search按钮:focus {display:block; } ...所以,当Tab键也按钮变成那里.. (2认同)