jquery - 垂直整页宽度和高度 Accordion 式菜单

标签 jquery html css

我真的很努力在做这件事,但还没有得出结论。这就是我的 HTML 和 CSS 现在的样子:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link type="text/css" rel="stylesheet" href="style2.css"/>
</head>
<body>
    <div id="wrapper">
        <div id="static"><a href="#"><img src="unai.jpg"/></a></div>
        <div class="menu"><div class="content"></div>   <a href="#"><img src="unai.jpg"/></a></div>
        <div class="menu"><div class="content"></div>   <a href="#"><img src="unai.jpg"/></a></div>
        <div class="menu"><div class="content"></div>   <a href="#"><img src="unai.jpg"/></a></div>
        <div class="menu"><div class="content"></div>   <a href="#"><img src="unai.jpg"/></a></div>
    </div>
</body>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="javascript2.js"></script>
</html>

CSS:

*{
    margin: 0;
    padding: 0; 
    }

html, body, #wrapper, #wrapper div{
    height:100%;
    }

#wrapper{
    width: 100%;
    }
    #wrapper #static{
        float: left;
        }

    #wrapper > div{ 
        position: relative;
        width: 20%;
        background-color: #9F81F7;      
        float: right;
        z-index: 9999;
        }
        #wrapper div.content{
            position: relative;
            left: 0;
            top: 0;
            width: 100%;
            opacity: 0.01;
            background-color: #FF0000;
            z-index: -1;
            }
        #wrapper div:last-child:after{
            content: " ";
            clear: both;
        }

    #wrapper a{
        width: 137px;
        position:absolute;
        top:50%;
        left: 68px;
        margin-top: -106px;
    }

而我需要实现的是:

ACCORDION

我已经在这个问题上坐了一整天了,但还没有。尝试了一些 JQuery 代码,但似乎无法满足我的需要。
我所需要的只是实现这种 Accordion 效果。休息可以自己做。 任何帮助表示赞赏。

最佳答案

这个概念很简单。您想要捕获图像上的点击事件,重置按下图像的父容器的所有 sibling 的宽度,然后继续拉伸(stretch)其宽度。

像这样简单的东西:

$(document).on("click", "#wrapper div.content a", function(){
    var $this = $(this);
    $this
        .closest("div.content")
        .css("width","300px")
        .siblings()
        .css("width","50px");
});

on() 从 1.7 版开始添加到 jQuery 中。如果您使用的是早期版本,请使用 live()bind()。请记住,函数的语法已更改,因此请注意。

代替 document 的父级越接近,事件委托(delegate)就越好。

300px50px 只是这种情况下的示例。您可以使用任何您想要的宽度。

在整个页面宽度方面,Apple.com 对他们的导航做了一个非常偷偷摸摸的事情,以符合他们不断扩大的搜索栏。他们在每个导航元素上应用了 display:table-cell,这样当一个元素展开时,另一个元素也会展开。实际上,它非常巧妙,您可以将其应用到您的情况中。

关于jquery - 垂直整页宽度和高度 Accordion 式菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287129/

相关文章:

CSS 倒三 Angular 形图像叠加

html - ul in ul 的正确语义

css - 使用 :nth from a specific class in list

javascript - 如何在验证失败时保留输入表单值 Spring MVC

javascript - 单击时如何停止下拉菜单子(monad)项向上滑动

Javascript 退出页面事件

javascript - 如何删除 pinterest 小部件的板边框?

javascript - 如何在没有弹出窗口的情况下将测验分数作为文本获取

javascript - 将所有项目总计计算为小计 Jquery

javascript - Ajax 请求循环并等待直到完成