`
西蜀石兰
  • 浏览: 119183 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CSS+JS写折叠下拉菜单

 
阅读更多
看到别人通过id和增加的属性来对应父子关系,觉得麻烦,想着能不能定义一个类来实现。最终的代码类似这样
<ul>
<li>一级菜单</li>
<li>一级菜单存在子菜单<li>
<li class="hasSon">
<ul>
<li>二级菜单</li>
<li>二级菜单</li>
<li>二级菜单</li>
</ul>
</li>
</ul>


实现的功能是点击存在子菜单的一级菜单,能够打开或关闭该子菜单下的二级菜单。

之前想通过纯CSS来实现,找了很久发现CSS无法监听onclick动作,最终放弃,结合js来做。其实用JQuery来实现更简单,不过为了更加通用,还是决定用原生js来实现。

这里定义了一对样式,分别是in和out,表示关闭和打开折叠菜单。利用css选择器,选择紧连着li的ul标签,设置display属性。这样js部分,只需要替换class的样式就可以了。

.out {
}

.out + ul {
    display: block;
}

.in {
}

.in + ul {
    display: none;
}



js代码如下,用到的知识点比较多,获取对象的方法,替换字符串的方法,遍历对象组的方法等。
//获取所有拥有子菜单的对象
var objects = document.getElementsByClassName("hasSon");
        for (var i = 0; i < objects.length; i++) {
            var element = objects[i];
//遍历对象,绑定点击事件方法    
            element.onclick = function () {
                var temp = this.className;
//替换out、in对象
                if (temp.indexOf("out") != -1) {
                    this.className = temp.replace(/out/, "in");
                } else if (temp.indexOf("in") != -1) {
                    this.className = temp.replace(/in/, "out");
                } else {
                    this.className = "out";
                }
            }
        }

分享到:
评论

相关推荐

    jQuery+CSS3+HTML5折叠卡片式下拉菜单特效

    **jQuery+CSS3+HTML5折叠卡片式下拉菜单特效详解** 在网页设计中,下拉菜单是一种常见的交互元素,用于展示多级导航结构。本特效利用jQuery的事件处理、DOM操作,结合CSS3的动画效果和HTML5的新特性,构建出一种...

    css+js 无限极树形菜单

    "CSS+JS无限极树形菜单"就是利用这两种前端技术来创建一个可以无限制扩展层级的树形菜单。下面我们将详细探讨如何通过CSS和JavaScript实现这一功能。 首先,CSS(层叠样式表)主要用于控制网页的布局和样式。在创建...

    jQuery+CSS3+HTML5折叠卡片式下拉菜单特效.zip

    在折叠卡片式下拉菜单中,CSS3用于定义菜单的样式,包括颜色、布局、过渡效果等。例如,可以使用`:hover`伪类来定义鼠标悬停时的样式变化,用`transition`属性实现平滑的展开和折叠动画。 HTML5作为最新的超文本...

    css+javascript+xml实现二级菜单

    此外,JavaScript可以处理菜单的展开和折叠,确保用户在离开一级菜单时二级菜单会自动隐藏。 XML(可扩展标记语言)在本例中可能不是必需的,因为HTML通常更适合用于结构化数据和页面内容。然而,在某些复杂项目中...

    css3折叠下拉菜单

    在网页设计中,CSS3(层叠样式表第三版)为开发者提供了许多强大的新特性,其中之一就是实现交互式的折叠下拉菜单。对于初学者来说,理解并掌握这一技术是提升网页交互体验的关键步骤。HTML5则提供了更好的结构化...

    css3折叠下拉菜单.zip

    CSS3折叠下拉菜单就是一种常见的交互式导航设计,它利用CSS3的新特性提供了丰富的动画效果,增强了用户体验。本篇文章将深入探讨如何使用CSS3来创建这种折叠下拉菜单。 首先,我们来理解CSS3中的关键特性。CSS3...

    Javascript、Css、Html下拉式折叠菜单

    ### JavaScript、CSS、HTML 下拉式折叠菜单知识点详解 #### 一、项目概述 本案例展示了一个使用JavaScript、CSS及HTML实现的经典下拉式折叠菜单。该菜单在网页设计中非常常见,它不仅可以提高用户体验,还能使页面...

    10款CSS+JS(jquery)结合的实用代码

    3. **下拉菜单**:使用CSS构建基本样式,再用jQuery监听鼠标悬停事件,触发子菜单的显示与隐藏,实现层次感丰富的下拉菜单。 4. **图片懒加载**:使用CSS隐藏未加载的图片,jQuery监听滚动事件,当图片进入视口时,...

    无限层级浏览器全兼容国外开源JS与CSS下拉菜单

    标题中的“无限层级浏览器全兼容国外开源JS与CSS下拉菜单”是指一种基于JavaScript和CSS技术实现的下拉菜单组件,它可以支持无限级别的子菜单,并且能在各种主流浏览器上正常运行,提供良好的兼容性。这样的组件对于...

    近50种伸缩滑动折叠菜单(js、css、div实现),有滑动导航、工具条,下拉菜单等,是目前web设计中导航效果最全面的打包文件

    本打包文件提供了近50种不同的伸缩滑动折叠菜单的实现方式,这些菜单利用了JavaScript(js)、层叠样式表(CSS)以及HTML的div元素,旨在满足现代Web设计中的各种导航需求。下面我们将详细探讨这些技术及其在创建...

    jQuery折叠下拉菜单收缩展开.zip

    jQuery折叠下拉菜单收缩展开是一种常见的网页交互设计,它能够为用户提供更加友好和直观的浏览体验。在网页设计中,这种菜单通常用于呈现网站的层级结构,尤其适用于内容丰富的大型网站,帮助用户快速找到所需信息。...

    几个经典的导航条,css+div+js写的,个人收集

    1. **菜单展开/收起**:使用JavaScript控制`&lt;ul&gt;`的`style.display`属性,实现点击按钮后展开或折叠下拉菜单。 2. **滚动监听**:通过`window.scrollY`和`window.innerHeight`等属性,当用户滚动到特定位置时,可以...

    CSS3触屏终端多级下拉菜单.zip

    虽然纯CSS3可以实现基本的下拉菜单,但某些复杂交互可能需要JavaScript辅助。例如,如果需要在用户点击一级菜单后保持下拉菜单的打开状态,或者在触摸设备上处理触摸事件,可以编写一些简单的JS代码: ```...

    js css折叠展开菜单简洁版.rar

    这个“js css折叠展开菜单简洁版”是一个实用的脚本实例,它允许用户通过鼠标单击主菜单项来展开或收起子菜单,这种效果也常常被称为下拉菜单。下面我们将详细探讨这个菜单实现的技术细节及其应用。 首先,...

    div+css下拉菜单

    本主题聚焦于"div+css"实现的下拉菜单,这是一种无JavaScript依赖、基于纯CSS样式控制的菜单制作方法,对SEO友好且响应性能良好。 首先,我们来理解"div+css"的概念。`div`(division)是HTML中的一个块级元素,常...

    5款漂亮的纯CSS下拉菜单

    本文将详细介绍纯CSS实现的下拉菜单,这种技术无需依赖JavaScript,只通过CSS样式来构建功能完整的下拉菜单,既提高了页面加载速度,也简化了代码维护。 纯CSS下拉菜单主要利用CSS的盒模型、定位(positioning)、...

    经典导航 CSS+DIV布局

    在网页设计领域,CSS(Cascading Style Sheets)与DIV布局是构建网页结构的重要技术,而JavaScript(JS)则是实现动态交互的关键。本主题聚焦于"经典导航"的设计,特别是利用CSS+DIV布局以及JS来创建高效、美观的...

    炫酷CSS3 3D折叠二级下拉菜单代码

    【CSS3 3D折叠二级下拉菜单代码详解】 在网页设计中,下拉菜单是构建用户友好且直观导航的重要元素。本示例中的“炫酷CSS3 3D折叠二级下拉菜单代码”旨在提供一种创新的方式,通过利用CSS3的特性来实现独特且...

    jQuery垂直手风琴折叠下拉菜单代码

    本项目名为“jQuery垂直手风琴折叠下拉菜单代码”,它提供了一种高效的方式,让用户能够优雅地浏览网站的多级导航菜单。 首先,我们来了解下“手风琴”效果。手风琴是一种UI设计模式,常用于展示内容,尤其适用于...

Global site tag (gtag.js) - Google Analytics