javascript - 我正在尝试使用 jQuery 制作滑入式菜单

标签 javascript jquery html css

因此,我已经编写了所有 HTML,并为将用作主体和滑入式菜单的两个不同面板分配了 ID。但是当我添加 jQuery 时,它似乎没有响应。这适用于 Code Academy,但不适用于其他任何东西。

HTML:

<body>
    <div ID="menu">
        <div ID="exit">
            <img src="http://www.thaddius.net/mems/hvit.jpg"/>
        </div>

        <ul>
            <li><a ID="Links" href="http://www.thaddius.net/soup.webm/">Suppe, ja?</a></li>
            <li><a ID="Links" href="http://www.thaddius.net/skjermavbildninger">Skjermdump?</a></li>
            <li><a ID="Links" href="https://www.youtube.com/watch?v=MC0hV3dea9g">Gotta go fast!</a></li>
            <li><a ID="Links" href="http://www.frankrobert.no">Men, Flørenes?</a></li>
            <li><a ID="Links" href="http://www.mjaavatten.no/">Men, Mjaavatten?</a></li>
            <li><a ID="Links" href="http://www.nittenbokstaverlang.com/">Men, Kristian?</a></li>
        </ul>
        <img src="http://www.thaddius.net/mems/longlast.jpg"
    </div></div>
    <div ID="body">
        <div ID="open">
            <img src="http://www.thaddius.net/mems/hvit.jpg"/>
            MENU
        </div>
    </div>




<script src="script.js"></script>
</body>

CSS:

#Links:hover{
    text-decoration: none;
    background-color: red;
    font-size: 110%;
}
#Links:link{
    font-weight: bold;
    text-decoration: none;
    color: white;
}
#Links:visited {
    text-decoration: none;
    font-weight: bold;
    color: white;
}
#menu {
    background-color: gray;
    padding: 8px;
    left: -288px;
    height: 100%;
    position: fixed;
    width: 272px;
}
li {
    border-bottom: 1px solid black;
    font-family: Comic sans MS;
    margin: left;
}
#exit {
    cursor: pointer
}
#open {
    display:inline-block;
    cursor: pointer;
    color: white;
    font-size: 30px;

}
body {
    background-color: black;

}

JS:

var main = function() {
    $('#open').click(function(){
        $('#menu').animate({left: '0px'}, 400);
        $('body').animate({left: '288px'}, 400);
    });
    $('#exit').click(function(){
        $('#menu').animate({left:'-288px'}, 400);
        $('body').animate({left:'0px'},400);
    });
}

$(document).ready(main);

最佳答案

好吧,让我们开始吧。 首先在您的 head 标记中包含 jQuery 的 CDN 版本:

<script type="text/javascript" src="//code.jquery.com/jquery-1.10.1.js"></script>

因此,首先您需要开始合规并删除链接上的这些相同 ID。您甚至不需要属性来使用 CSS 定位这些链接。将 #Links 替换为 #menu li a。这不会影响性能;毕竟 CSS 选择器仍然非常快。

HTML

<div id="menu">
    <div id="exit">
        <img src="http://www.thaddius.net/mems/hvit.jpg"/>
    </div>

    <ul>
        <li><a href="http://www.thaddius.net/soup.webm/">Suppe, ja?</a></li>
        <li><a href="http://www.thaddius.net/skjermavbildninger">Skjermdump?</a></li>
        <li><a href="https://www.youtube.com/watch?v=MC0hV3dea9g">Gotta go fast!</a></li>
        <li><a href="http://www.frankrobert.no">Men, Flørenes?</a></li>
        <li><a href="http://www.mjaavatten.no/">Men, Mjaavatten?</a></li>
        <li><a href="http://www.nittenbokstaverlang.com/">Men, Kristian?</a></li>
    </ul>
    <img src="http://www.thaddius.net/mems/longlast.jpg" />
</div>
<div id="body">
    <div id="open">
        <img src="http://www.thaddius.net/mems/hvit.jpg" />
        MENU
    </div>
</div>

CSS

#menu li a:hover{
    text-decoration: none;
    background-color: red;
    font-size: 110%;
}
#menu li a:link{
    font-weight: bold;
    text-decoration: none;
    color: white;
}
#menu li a:visited {
    text-decoration: none;
    font-weight: bold;
    color: white;
}
#menu {
    background-color: gray;
    padding: 8px;
    left: -288px;
    height: 100%;
    position: fixed;
    width: 272px;
}
#menu li {
    border-bottom: 1px solid black;
    font-family: Comic sans MS;
    margin: left;
}
#exit {
    cursor: pointer
}
#open {
    display:inline-block;
    cursor: pointer;
    color: white;
    font-size: 30px;
}


/* Animate any left property value change */
#body, #menu {
    /* Add vendor prefixes too if you're not pre-compiling your stylesheet */
    -webkit-transition: left 0.5s ease-in-out;
    -moz-transition: left 0.5s ease-in-out;
    -ms-transition: left 0.5s ease-in-out;
    -o-transition: left 0.5s ease-in-out;
    /* This is the standard declaration */
    transition: left 0.5s ease-in-out;
}
/* Toggle menu open */
body.menu-open #menu{
    left: 0;
}
body.menu-open #body{
    left: 288px;
}

Javascript 这将在用户单击任一切换按钮时切换 body 元素上的类 menu-open

$(function(){
    var $toggles = $('#open, #exit'), $body = $('body');
    $toggles.bind('click', function(){ $body.toggleClass('menu-open'); });
});

Here's a working fiddle

关于javascript - 我正在尝试使用 jQuery 制作滑入式菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30733534/

相关文章:

javascript - 使用插件压缩 webpack 包

javascript - 如何在javascript函数中返回json对象?

jQuery 事件绑定(bind)

html - 如何使用 CSS 隐藏某些页面上的 div

javascript - 与jQuery中的serializeArray相反(恢复形式)

html - 包含绝对定位 div 的 div 的 IE8 不透明度

javascript - 如何从数组结果中删除文本值,以便只有数字值

javascript - 使用 Javascript 可排序/可搜索列表

javascript - 如果编辑器的宽度太小,是否有办法将工具栏按钮换行到 TinyMCE 的下一行?

javascript - 使用 jQuery 在单击时换出主体背景图像并在加载时随机化