html - 幻灯片下拉打开

标签 html css

编辑: 我找不到没有 JS 的任何解决方案,所以我用 JavaScript 实现了它(解决方案作为答案)。

我正在尝试创建一个没有任何 JavaScript 的幻灯片打开下拉列表。我用谷歌搜索了一下,但找不到任何使用固定 height、使用固定 max-height 或 well.. JavaScript 的解决方案。

我做了什么:

我的元素与容器的高度相同,所以我可以只使用 3 倍的高度,但现在我有了另一个常量。

代码:

.dropdown_menu {
  display: inline-block;
  font-family: Arial;
  position: relative;
}

.dropdown_title {
  background-color: #505050;
  color: white;
  margin: 0;
  padding: 20px 50px;
}

.dropdown_content {
  background-color: #646464;
  position: absolute;
  width: 100%;
  z-index: 1; 
  height: 0;
  overflow: hidden;
  transition: height .3s;
}

.dropdown_content > * {
  color: white;
  display: block;
  padding: 20px 0;
  text-align: center;
  text-decoration: none;
}

.dropdown_content > *:hover {
  background-color: #7D7D7D;
}

.dropdown_menu:hover .dropdown_content {
 height: 300%;
}
<div class="dropdown_menu">
  <p class="dropdown_title">Dropdown</p>
  <div class="dropdown_content">
    <a href="">Option 1</a>
    <a href="">Option 2</a>
    <a href="">Option 3</a>
  </div>
</div>

是否可以创建这个?

最佳答案

使用 max-height 而不是 height,并将悬停时的最大高度设置为非常大。另请注意,过渡时间是相对于完整的最大高度的,因此您必须设置更长的过渡时间。

.dropdown_menu {
  display: inline-block;
  font-family: Arial;
  position: relative;
}

.dropdown_title {
  background-color: #505050;
  color: white;
  margin: 0;
  padding: 20px 50px;
}

.dropdown_content {
  background-color: #646464;
  position: absolute;
  width: 100%;
  z-index: 1; 
  max-height: 0;
  overflow: hidden;
  transition: max-height 1s;
}

.dropdown_content > * {
  color: white;
  display: block;
  padding: 20px 0;
  text-align: center;
  text-decoration: none;
}

.dropdown_content > *:hover {
  background-color: #7D7D7D;
}

.dropdown_menu:hover .dropdown_content {
 max-height: 1000px;
}
<div class="dropdown_menu">
  <p class="dropdown_title">Dropdown</p>
  <div class="dropdown_content">
    <a href="">Option 1</a>
    <a href="">Option 2</a>
    <a href="">Option 3</a>
  </div>
</div>


<div class="dropdown_menu">
  <p class="dropdown_title">Dropdown</p>
  <div class="dropdown_content">
    <a href="">Option 1</a>
    <a href="">Option 2</a>
    <a href="">Option 3</a>
    <a href="">Option 4</a>
    <a href="">Option 5</a>
  </div>
</div>

关于html - 幻灯片下拉打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54109993/

相关文章:

javascript - 如何避免无序列表项上方和下方的小分隔线?

css - 为什么背景图像在 Firefox 中不可见?

html - 使用 HTML <abbr> 标签解释内容

html - 构建自定义导航

javascript - 在 Firefox 中单击链接时,有没有办法删除蓝色突出显示?

html - 仅单击 block 元素的文本

css - 为什么不定位 :sticky; work

html - 添加 img 标签会导致溢出。如何避免这种情况

html - 背景图像中的线条

javascript - IE6 上的 removeAttr/addClass 问题