html - 包含带焦点输入的 div 的 CSS 选择器

标签 html css css-selectors

我在页面顶部有一个链接,当鼠标悬停在该链接上时,会显示一个搜索菜单。

#dropdown {
  display: none;
}

li:hover #dropdown {
  display: block;
}
<ul class="nav navbar-nav">
  <li><a href="">Link 1</a></li>
  <li><a href="">Link 2</a></li>
  <li>
    <a href="">Search</a>
    <div id="dropdown">
      <input name="txtSearch" type="text" id="txtSearch" class="form-control" />
      <input type="submit" name="btnSearch" value="Search" id="btnSearch" class="btn" />
    </div>
  </li>
</ul>

由于下拉列表中有一个文本框<div> , 如果用户在文本框中键入内容,我希望下拉列表即使在未悬停时也保持可见。

是否有纯 CSS 方法来做到这一点?

最佳答案

您可以添加 :focus-within pseudo-class任何父元素。

li:hover #dropdown,
li:focus-within #dropdown {
  display: block;
}

但是,请记住this is not supported in Microsoft browsers .为此,您需要一个基于 JavaScript 的解决方案。这是一个使用 jQuery 的:

$(document).on('focus','#txtSearch,#btnSearch',function(e) {
   $(this).closest('li').addClass('hover');
}).on('blur','#txtSearch,#btnSearch',function(e) {
   $(this).closest('li').removeClass('hover');
});
#dropdown {
  display: none;
}

li:hover #dropdown,
li.hover #dropdown {
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav navbar-nav">
  <li><a href="">Link 1</a></li>
  <li><a href="">Link 2</a></li>
  <li>
    <a href="">Search</a>
    <div id="dropdown">
      <input name="txtSearch" type="text" id="txtSearch" class="form-control" />
      <input type="submit" name="btnSearch" value="Search" id="btnSearch" class="btn" />
    </div>
  </li>
</ul>

关于html - 包含带焦点输入的 div 的 CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46671273/

相关文章:

html - 固定导航栏覆盖的间距元素

php - 如何为我的自定义博客文章创建文件?

javascript - 仅在图像的一部分上触发单击/鼠标悬停

CSS - 课前的星号是什么意思?

css - nth-child 表达式选择 X 和 Up 元素

css3 选择器问题 : hover effect another element

html - HTML 文档中的非 HTML 标签对 SEO 不利吗?

javascript - 移动设备上的粘性导航而非桌面设备

html - Rad Editor 样式问题

jquery - 在 <li> 中并排添加元素