我似乎无法对此所做的下拉菜单应用过渡。它看起来不好的原因是因为它仅用于测试目的,因此为什么我来这里寻求帮助。如果您能帮助我,将不胜感激:)
我可能做错了什么,或者我做的是下拉列表,这样过渡不会影响任何事情。
这里是我的HTML代码:
* {
margin: 0;
padding: 0;
font-family: Arial, Helvetica, sans-serif;
outline: 0;
}
body {
display: grid;
place-items: center;
min-height: 90vh;
}
.container {
width: 200px;
height: 400px;
border: 1px solid black;
text-align: center;
text-transform: capitalize;
list-style: none;
font-size: 20px;
}
li {
padding: 10px;
border-bottom: 1px solid black;
cursor: pointer;
}
li, .box {
transition: .25s;
}
li:hover, .box:hover {
background-color: #f1f1f1;
}
.list-item-1:hover + .dropdown {
display: grid;
}
.dropdown {
display: none;
padding: 10px 50px;
border-bottom: 1px solid black;
}
.dropdown:hover {
display: grid;
}
.box {
padding: 5px 0;
border-bottom: 1px solid black;
cursor: pointer;
}
.box:last-child {
border-bottom: 0;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="style.css">
</head>
<body>
<ul class="container">
<li class="list-item-1">something</li>
<div class="dropdown">
<div class="box">link 1</div>
<div class="box">link 1</div>
<div class="box">link 1</div>
<div class="box">link 1</div>
</div>
<li class="list-item-1">something</li>
<div class="dropdown">
<div class="box">link 1</div>
<div class="box">link 1</div>
<div class="box">link 1</div>
<div class="box">link 1</div>
</div>
</ul>
</body>
</html>
答案 0 :(得分:1)
答案 1 :(得分:1)
如果要向下滑动动画,请使用 height 而不是 display 。它将从0px转换为设定高度或可变高度。使用显示只会使其显示和消失。
答案 2 :(得分:0)
您可以使用max-height处理此类事情
这是具有当前结构的动画
* {
margin: 0;
padding: 0;
font-family: Arial, Helvetica, sans-serif;
outline: 0;
}
body {
display: grid;
place-items: center;
min-height: 90vh;
}
.container {
width: 200px;
height: 400px;
border: 1px solid black;
text-align: center;
text-transform: capitalize;
list-style: none;
font-size: 20px;
}
li {
padding: 10px;
border-bottom: 1px solid black;
cursor: pointer;
}
li:hover, .box:hover {
background-color: #f1f1f1;
}
.list-item-1:hover + .dropdown {
display: grid;
max-height:999px;
padding: 10px 50px;
border-bottom: 1px solid black;
}
.dropdown {
overflow:hidden;
max-height:0em;
transition: max-height .25s ease;
}
.dropdown:hover {
display: grid;
}
.box {
padding: 5px 0;
border-bottom: 1px solid black;
cursor: pointer;
}
.box:first-child {
margin-top: 10px;
}
.box:last-child {
border-bottom: 0;
}
<ul class="container">
<li class="list-item-1">something</li>
<div class="dropdown">
<div class="box">link 1</div>
<div class="box">link 1</div>
<div class="box">link 1</div>
<div class="box">link 1</div>
</div>
<li class="list-item-1">something</li>
<div class="dropdown">
<div class="box">link 1</div>
<div class="box">link 1</div>
<div class="box">link 1</div>
<div class="box">link 1</div>
</div>
</ul>
但我认为您可能希望将其更改为类似的内容
* {
margin: 0;
padding: 0;
font-family: Arial, Helvetica, sans-serif;
outline: 0;
}
body {
display: grid;
place-items: center;
min-height: 90vh;
}
.container {
width: 200px;
height: 400px;
border: 1px solid black;
text-align: center;
text-transform: capitalize;
list-style: none;
font-size: 20px;
}
[class^="list-item"],
.dropdown li {
padding: 10px;
border-bottom: 1px solid black;
cursor: pointer;
}
.box:hover {
background-color: #f1f1f1;
}
.list-item-1:hover .dropdown {
display: grid;
max-height:999px;
}
.dropdown {
overflow:hidden;
max-height:0em;
transition: max-height .25s ease;
}
.dropdown:hover {
display: grid;
}
.box {
padding: 5px 0;
border-bottom: 1px solid black;
cursor: pointer;
}
.box:first-child {
margin-top: 10px;
}
.box:last-child {
border-bottom: 0;
}
<ul class="container">
<li class="list-item-1">something
<ul class="dropdown">
<li class="box">link 1</li>
<li class="box">link 1</li>
<li class="box">link 1</li>
<li class="box">link 1</li>
</ul>
</li>
<li class="list-item-1">something
<ul class="dropdown">
<li class="box">link 1</li>
<li class="box">link 1</li>
<li class="box">link 1</li>
<li class="box">link 1</li>
</ul>
</li>
</ul>