javascript - 单击图像时部分暴露的 div 向上滑动

标签 javascript jquery html css slidetoggle

这可能很奇怪,但我想做的是当有人单击图像时使 div 从屏幕底部向上滑动。为了更清楚地描述这一点,想象一下 Windows 桌面,如果您单击开始菜单图像/图标,则整个开始菜单栏将向上滑动以暴露整个 div,而不是从按钮弹出开始菜单。

我现在正在做的(请原谅我,因为我刚刚从codecademy学习了JS和jQuery)正在使用slideUp函数。然而,这会导致 div 向下滑动而不是向上滑动,从而暴露整个 div。目标是,当您单击按钮时,div 会向上滑动,如果您再次单击该按钮(或 div 之外的任何位置),它会向下滑动,并像以前一样暴露顶部 60px。

这是我的 JS/jQuery 代码:

$('#start').click(function() {
$('#nav').slideUp('slow');
});

我的 HTML

<div id="nav" class="nav">
    <img id="start" src="img/btn_start.png">
</div>

我的CSS

* {
    padding: 0px;
    margin: 0px;
}

body {
    width: 100%;
    font-family: Helvetica;
}

.nav {
    width: 100%;
    min-width: 100%;
    height: 500px;
    background: #000;
    color: #fff;
    position: absolute;
    bottom: -440px;
    text-align: center;
    padding: 5px;
    box-sizing: border-box;
    overflow: auto;
 }

.nav ul li {
     display: inline;
}

 .nav li {
     padding: 20px;
     margin-top: 80px;
     position: relative;
     top: 50%;
     transform: translateY(-50%);
 }

 #start {
    float: left;
 }

谢谢,我希望这不会太荒谬。

最佳答案

您应该使用而不是slideUp

$('#start').click(function() {   
    $('#nav').animate({bottom: "0px"}, 1200);   
});

...将从当前位置平滑地进行动画处理,直到底部位于 0px(即与包含元素的底部对齐)。

为了获得更流畅的结果,请查看velocity.js ( http://julian.com/research/velocity/ ),它通过与浏览器框架更新同步来实现更流畅的动画。

这里是 JsFiddle:http://jsfiddle.net/11r46jnm/

您也可以使用 CSS 过渡来实现此目的。对于这样的东西,我喜欢将 CSS 挂接到 HTML 上的数据属性中:

<div id="nav" class="nav" data-nav-state="collapsed">
    <img id="start" src="img/btn_start.png">
</div>

...使用javascript更改属性...

$('#start').click(function() {
    //toggle the nav element between two states
    var currentState = $('#nav').attr("data-nav-state");
    var newState = "collapsed";
    if ( currentState === "collapsed" ) {
        newState = "expanded";
    } 
    $('#nav').attr("data-nav-state", newState);
});

最后我们使用CSS来设置两个状态的位置,并确保过渡平滑。 CSS 过渡的性能比 jQuery 好得多,因此我建议您如果可以的话使用它们:

 #nav[data-nav-state=collapsed] {
      bottom: -440px;
 }

 #nav[data-nav-state=expanded] {
      bottom: 0px;
 }

 #nav {
      transition: bottom 1.2s ease;
 }

请参阅 jsFiddle 进行演示:http://jsfiddle.net/Lv2saepy/1/

关于javascript - 单击图像时部分暴露的 div 向上滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30903686/

相关文章:

jquery - 在 IE8 中鼠标悬停后图像一直显示

javascript - 如何创建单击按钮后打开的 Mailchimp 弹出注册表单

css - html 和 css 中的标题横幅

html - 使用最小/最大宽度和最小/最大设备宽度无法使多个媒体查询工作

javascript - 连接SQlite数据库

javascript - AngularJs:抓取已编译的 html 并设置为工具提示

jquery - 如何检查 cookie 是否已使用 jQuery 设置?

javascript - 检查对离屏 Canvas 的支持

javascript - React 和 HashRouter - 出现空白页

javascript - 必需属性不适用于通过 onclick 按钮选择的标记