javascript - 专注于绝对元素

标签 javascript css angular focus css-position

我有一个按钮女巫仅在父(父类)元素悬停时显示。父类有position:relative,按钮有absolute:position。它工作正常。

现在我想要一个只有在我点击按钮时才会出现的下拉列表。

我尝试将 absolute:positiondisplay:none 设置为下拉列表类,并且仅当我聚焦按钮时才显示下拉列表。 但它不起作用。

这是一个示例代码:

<div class="parent-class">
   <button class="btn" >button</button>
   <ul class="dropdown-list">
    <li > content1</li>
    <li > content1</li>
   </ul>
</div>

.parent-class{
 position: relative;
}

.parent-class:hover .btn{
 display:block;
}

.btn{
 position:absolute;
 display:none;
}

.btn:focus .dropdown-list{
 display: block;
}

.dropdown-list{
position: absolute;
display: none;
}

我还使用了 Angular 2,所以如果有办法用 Angular 2 解决这个问题,那将是完美的

最佳答案

您的问题是,当您使用 .btn:focus .dropdown-list 时,您希望 .dropdown-list 元素成为 的子元素.btn 元素(在你的情况下 - 它们不是)。 .dropdown-list.btn 的兄弟元素。

您可以使用 ~(同级选择器)解决这个问题:

.parent-class{
  position: relative;
  border: 1px solid red;
  width: 100px;
  height: 100px;
}

.parent-class:hover .btn{
  display:block;
}

.btn{
  position:absolute;
  display:none;
}

.btn:focus ~ .dropdown-list{
  display: block;
}

.dropdown-list{
  position: absolute;
  display: none;
}
<div class="parent-class">
  <button class="btn" >button</button>
  <ul class="dropdown-list">
    <li > content1</li>
    <li > content1</li>
  </ul>
</div>

关于javascript - 专注于绝对元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41740179/

相关文章:

javascript - 工具提示内的任何 HTML 标记都会导致基本工具提示在悬停时关闭

html - Bootstrap 3 下拉菜单更改子菜单焦点的背景

javascript - 自定义 Bootstrap 3 导航丸不起作用

angular - 在 Angular2 中使用 Router 将状态重定向到默认子状态

angular - Angular 6中单个项目下的多个应用程序

javascript - 需要在下拉菜单中列出以在单击数字后显示结果

javascript - Canvasjs:根据屏幕尺寸不同设置

Javascript 函数改变 NCS 颜色

html - 在两个箭头之间添加文本

javascript - 在 Angular 中显示 ContentFul RichText