当单击菜单时,应用过渡效果来减慢子菜单的打开速度
Applying transition effects to slow down opening of submenu when menu is clicked
当用户单击父菜单时,我有一个带下拉菜单的垂直菜单,显示该父菜单中的子元素。。。子元素打开得很快,我想在显示子元素时放慢速度。
这是我创建的演示http://codepen.io/raju9642182468/pen/grWZPa
我怎样才能放慢菜单打开的速度。。有人帮我做
function showmenu(elem) {
// Clear any currently open menu
var elementClicked = event.target;
if (elementClicked.className != 'sectionMenu')
return;
var openMenu = document.getElementById("activeMenu");
if (openMenu) {
openMenu.removeAttribute("id");
// Stop if we're just closing the current menu
if (openMenu === elem) {
return;
}
}
// Only apply it if the element actually has LI child nodes.
// OPTIONAL: Will still work without if statement.
if (elem.getElementsByTagName("li")) {
elem.setAttribute("id", "activeMenu");
}
}
function focusStyle(elem) {
if (document.getElementById("anchor") != null) {
document.getElementById("anchor").removeAttribute("id");
}
var anchorClicked = event.target;
if (elem.getElementsByTagName("li")) {
elem.setAttribute("id", "anchor");
}
}
以下是如何使用CSS transition
和max-height
的示例
需要注意的是,由于不能使用height: auto
制作高度动画,因此使用max-height
。使其工作的诀窍是将其设置为一个始终大于实际菜单列表的值。
我在下面的例子中使用了400px,通过改变这个和持续时间,可以非常接近完美的动画。
function showmenu(event,elem) {
// Clear any currently open menu
var elementClicked = event.target;
if (elementClicked.className != 'sectionMenu')
return;
var openMenu = document.getElementById("activeMenu");
if (openMenu) {
openMenu.removeAttribute("id");
// Stop if we're just closing the current menu
if (openMenu === elem) {
return;
}
}
// Only apply it if the element actually has LI child nodes.
// OPTIONAL: Will still work without if statement.
if (elem.getElementsByTagName("li")) {
elem.setAttribute("id", "activeMenu");
}
}
function focusStyle(event,elem) {
if (document.getElementById("anchor") != null) {
document.getElementById("anchor").removeAttribute("id");
}
var anchorClicked = event.target;
if (elem.getElementsByTagName("li")) {
elem.setAttribute("id", "anchor");
}
}
div {
height: 100%;
}
nav{
height:100%;
}
#nav1 {
background-color: #ffffff;
height: 100%;
cursor: pointer;
}
ul {
padding-left: 0px;
margin-bottom: 0px;
font-weight:400;
font-size:14px;
letter-spacing:0;
}
ul li {
line-height:30px;
position: relative;
color:#ff6a00;
}
ul li:hover {
background-color: #00ff21;
}
#main-menu > li.active > a {
color: #b6ff00;
background-color: #F4F4F4;
}
nav #nav1 #activeMenu .sectionMenu{
background-color: rgb(69,199,77);
}
ul li a{
padding: 0.5em 1.25em 0.5em 3.125em;
font-weight: 500;
display: block;
color:#585858;
padding-left:50px;
}
ul li a i {
position: absolute;
right: 20px;
font-size:1.5em;
}
ul ul {
transition: max-height 0.5s ease-out;
max-height: 0;
overflow: hidden;
}
ul ul li a {
color: #7f7f7f;
padding: 0.875em 1.25em 0.875em 0.625em;
font-weight: 500;
display: block;
height: 1.875em;
}
#activeMenu ul {
max-height: 400px;
}
li.sectionMenu:before {
/*content: ''2795';
content: ''1401';
content: ''2206'; */
height:10px;
font-weight:20px;
font-size: inherit;
color: #000000;
text-rendering:auto;
float: right;
display:inline-block;
padding-right:25px;
}
#activeMenu {
background-color: #ffffff;
}
#anchor {
background-color:#e7e7e7;
}
ul li ul li{
padding-left:80px;
}
ul ul li a i {
padding-right:123px;
}
#buildIcon{
right: 190px;
}
span{
float:right;
}
ul ul li i {
visibility:hidden;
}
<ul id="nav1">
<li onclick="showmenu(event,this)" class="sectionMenu dropdown">
<a class="sectionMenu">
Class !
</a>
<ul>
<li> <a>
A
</a>
</li>
<li class="active-class" >
<a>
b
</a>
</li>
<li class="active-class" >
<a >
c
</a>
</li>
<li class="active-class" >
<a>
d
</a>
</li>
</ul>
</li>
<li onclick="showmenu(event,this)" class="sectionMenu dropdown">
<a class="sectionMenu">
Class II
</a>
<ul>
<li class="active-class"> <a>1</a> </li>
<li class="active-class"> <a>2 </a></li>
<li class="active-class"> <a>3</a> </li>
<li class="active-class"> <a>4 </a></li>
<li class="active-class"> <a>5 </a></li>
<li class="active-class"> <a>6</a> </li>
</ul>
</li>
<li onclick="showmenu(event,this)" class="sectionMenu dropdown">
<a class="sectionMenu">
Class III
</a>
<ul>
<li class="active-class"> <a>1 </a></li>
<li class="active-class"> <a>2 </a></li>
<li class="active-class"> <a> 3 </a></li>
<li class="active-class"> <a>4 </a></li>
<li class="active-class"> <a>5 </a></li>
<li class="active-class"> <a>6 </a></li>
</ul>
</li>
</ul>
相关文章:
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- angular的下拉菜单
- 使用JQuery的动态上下文菜单
- 创建带有和不带有JavaScript的Bootstrap下拉菜单
- 创建下拉菜单
- Wacom stu-430签名捕获速度太慢
- 下拉菜单在菜单按钮的边缘闪闪发光
- Div根据<选择>菜单
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- 硒IDE下拉菜单
- 将JavaScript弹出菜单转换为警报框
- 调整屏幕大小后不显示子菜单
- 固定位置菜单时滚动,直到它击中一个相对容器的底部
- 我的下拉菜单中的链接不起作用
- 如何在速度模板中获取LiferayPortlet实例id
- Pebble.js菜单项渲染速度慢
- 当单击菜单时,应用过渡效果来减慢子菜单的打开速度
- 如何设置下拉菜单的速度
- 如何使用速度制作多层次的Liferay菜单