首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何插入转换延迟

如何插入转换延迟
EN

Stack Overflow用户
提问于 2018-05-29 18:21:04
回答 3查看 115关注 0票数 0

我使用一个简单的JavaScript关闭和打开菜单,但我想知道如何在打开菜单时插入延迟。

代码语言:javascript
复制
 <a href="#1" onclick="return show();">open Menu</a>
 <a href="#1" onclick="return hide();">Hide Menu</a>

   <div id="container">
     <div id="side-menu" style="display:none">Left menu</div>
     <div id="body">body</div>
   </div>

CSS

代码语言:javascript
复制
 #container{ position: absolute;display: table}
 #side-menu, #body {display:table-cell;}
 #body {width: 80%;}
 #side-menu {width: 260px;}

JavaScript:

代码语言:javascript
复制
 <script> 
    function show() { 
     if(document.getElementById('side-menu').style.display=='none') { 
        document.getElementById('side-menu').style.display='block';            

     } 
      return false;
     } 
      function hide() { 
        if(document.getElementById('side-menu').style.display=='block') { 
        document.getElementById('side-menu').style.display='none'; 
     } 
        return false;
     }   
</script>

当您单击“打开”菜单时,它将打开侧栏菜单,并将身体推到右侧。我的问题是如何让它以延迟的方式把身体推到右边,或者说是关于.8s的过渡。

JavaScript有办法处理这件事吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-29 18:25:14

使用jquery

代码语言:javascript
复制
$("#side-menu").hide(800)

您还可以添加不同类型的动画

更新您的javascript代码:

代码语言:javascript
复制
function showHide() { 
  if($("#side-menu").is(":visible") { 
      $("#side-menu").hide(800);         
  } else {
      $("#side-menu").show(800);
  }
}
票数 0
EN

Stack Overflow用户

发布于 2018-05-29 18:34:30

我更喜欢一个完整的CSS解决方案:

代码语言:javascript
复制
#side-menu {
    left: -260px;
    width: 260px;
    position: absolute;
    transition-property: left;
    transition-delay: 0.5s;
    transition-duration: 0.8s;
}
#side-menu.open {
    left: 0;
}

(请注意,我在这里很懒,并且绝对地定位了元素,这会让它滑到身体上。)这是因为使用left演示转换是最简单的;您可以使用width代替定位元素。)

票数 0
EN

Stack Overflow用户

发布于 2018-05-29 18:51:53

这没有jQuery,也没有滑动:

你的纽扣:

代码语言:javascript
复制
 <a href="#1" onclick="show();">open Menu</a>
 <a href="#1" onclick="hide();">Hide Menu</a>

你的套路:

代码语言:javascript
复制
function show() {
  setTimeout( function() {document.getElementById('side-menu').style.display='block'; }, 800);            
} 
function hide() { 
  setTimeout( function() {document.getElementById('side-menu').style.display='none'; }, 800);
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50590620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档