Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击菜单时应用过渡效果以减慢子菜单的打开速度_Javascript_Html_Css - Fatal编程技术网

Javascript 单击菜单时应用过渡效果以减慢子菜单的打开速度

Javascript 单击菜单时应用过渡效果以减慢子菜单的打开速度,javascript,html,css,Javascript,Html,Css,我有一个垂直的下拉菜单,当用户点击父菜单时,会显示该父菜单中的子元素…子元素打开得很快,我想在显示子元素时降低速度 这是我创建的演示 我怎么才能放慢菜单打开的速度有人帮我怎么做吗 function showmenu(elem) { // Clear any currently open menu var elementClicked = event.target; if (elementClicked.className

我有一个垂直的下拉菜单,当用户点击父菜单时,会显示该父菜单中的子元素…子元素打开得很快,我想在显示子元素时降低速度

这是我创建的演示

我怎么才能放慢菜单打开的速度有人帮我怎么做吗

   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,通过改变它和持续时间,可以非常接近完美的动画

功能显示菜单(事件、元素){
//清除任何当前打开的菜单
var elementClicked=event.target;
如果(elementClicked.className!=“sectionMenu”)
返回;
var openMenu=document.getElementById(“活动菜单”);
如果(打开菜单){
openMenu.removeAttribute(“id”);
//如果我们刚刚关闭当前菜单,请停止
如果(openMenu==elem){
返回;
}
}
//仅当元素实际具有LI子节点时才应用它。
//可选:在没有if语句的情况下仍将工作。
if(elem.getElementsByTagName(“li”)){
元素setAttribute(“id”、“活动菜单”);
}                      
}
功能焦点样式(事件、元素){
if(document.getElementById(“锚点”)!=null){
document.getElementById(“锚”).removeAttribute(“id”);
}
var anchorClicked=event.target;
if(elem.getElementsByTagName(“li”)){
要素集合属性(“id”、“锚”);
}
}
div{
身高:100%;
}
导航{
身高:100%;
}
#导航1{
背景色:#ffffff;
身高:100%;
光标:指针;
}
保险商实验室{
左侧填充:0px;
边缘底部:0px;
字体大小:400;
字体大小:14px;
字母间距:0;
}
ul li{
线高:30px;
位置:相对位置;
颜色:#ff6a00;
}
ulli:悬停{
背景色:#00ff21;
}
#主菜单>li.active>a{
颜色:#b6ff00;
背景色:#F4;
}
导航#导航1#活动菜单。部分菜单{
背景色:rgb(69199,77);
}
ullia{
填充:0.5em 1.25em 0.5em 3.125em;
字号:500;
显示:块;
颜色:#5858;
左侧填充:50px;
}
ulli a i{
位置:绝对位置;
右:20px;
字号:1.5em;
}  
ul{
过渡:最大高度为0.5s;
最大高度:0;
溢出:隐藏;
}
李安{
颜色:#7f7f7f;
填充:0.875em 1.25em 0.875em 0.625em;
字号:500;
显示:块;
高度:1.875em;
}
#活动菜单{
最大高度:400px;
}
李:菜单:之前{
/*内容:'\2795';
内容:'\1401';
内容:'\2206';*/
高度:10px;
字体大小:20px;
字体大小:继承;
颜色:#000000;
文本呈现:自动;
浮动:对;
显示:内联块;
右边填充:25px;
}
#活动菜单{
背景色:#ffffff;
}
#锚定{
背景色:#e7e7e7;
}
ulli ulli{
左侧填充:80px;
}
ul li a i{
右边填充:123px;
}
#建筑图标{
右:190px;
}
跨度{
浮动:对;
}
李一{
可见性:隐藏;
}
  • 上课!
    • A.
    • B
    • C
    • D
  • 第二类
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 第三类
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

以下是一个示例,说明如何使用CSS
转换和
最大高度

需要注意的是,由于无法使用
height:auto
设置高度动画,因此这将使用
max height
。使其工作的技巧是将其设置为一个值,该值始终大于实际的菜单列表

我在下面的示例中使用了400px,通过改变它和持续时间,可以非常接近完美的动画

功能显示菜单(事件、元素){
//清除任何当前打开的菜单
var elementClicked=event.target;
如果(elementClicked.className!=“sectionMenu”)
返回;
var openMenu=document.getElementById(“活动菜单”);
如果(打开菜单){
openMenu.removeAttribute(“id”);
//如果我们刚刚关闭当前菜单,请停止
如果(openMenu==elem){
返回;
}
}
//仅当元素实际具有LI子节点时才应用它。
//可选:在没有if语句的情况下仍将工作。
if(elem.getElementsByTagName(“li”)){
元素setAttribute(“id”、“活动菜单”);
}                      
}
功能焦点样式(事件、元素){
if(document.getElementById(“锚点”)!=null){
document.getElementById(“锚”).removeAttribute(“id”);
}
var anchorClicked=event.target;
if(elem.getElementsByTagName(“li”)){
要素集合属性(“id”、“锚”);
}
}
div{
身高:100%;
}
导航{
身高:100%;
}
#导航1{
背景色:#ffffff;
身高:100%