CSS&JS两种方式实现手风琴式折叠菜单

<div class="accordion">
    <div id="one" class="section">
        <h3><a href="#one">折叠栏1</a></h3>
        <div id="image1" class="image"><img src=""></div>
    </div>
    <div id="two" class="section">
        <h3><a href="#two">折叠栏2</a></h3>
        <div id="image2" class="image"><img src=""></div>
    </div>
    <div id="three" class="section">
        <h3><a href="#three">折叠栏3</a></h3>
        <div id="image3" class="image"><img src=""></div>
    </div>
    <div id="four" class="section">
        <h3><a href="#four">折叠栏4</a></h3>
        <div id="image4" class="image"><img src=""></div>
    </div>
    <div id="five" class="section">
        <h3><a href="#five">折叠栏5</a></h3>
        <div id="image5" class="image"><img src=""></div>
    </div>
    <div id="six" class="section">
        <h3><a href="#six">折叠栏6</a></h3>
        <div id="image6" class="image"><img src=""></div>
    </div>
</div>

CSS3 利用  :target  伪类实现

.accordion h3+div{
    height: 0;
    overflow: hidden;/*超出部分隐藏*/
    transition: height 0.3s ease-in;/*展开的一种特效,以0.3s慢慢飞入*/
}

.accordion :target h3+div{
    height: 300px;
    overflow: auto;/*超过部分自动隐藏*/
}

JS实现

function showSection(id) {
    var images=document.getElementsByClassName("image");
    for(var i=0;i<images.length;i++){
        if(images[i].getAttribute("id")!=id){
            images[i].style.display="none";
        }else{
            images[i].style.display="block";
        }
    }
}

function imagesHidden() {
    var images=document.getElementsByClassName("image");
    for(var i=0;i<images.length;i++){
        var id=images[i].getAttribute("id");
        document.getElementById(id).style.display="none";
    }
}
function addClick() {
    var sections=document.getElementsByClassName("section");
    for(var i=0;i<sections.length;i++){
        sections[i].onclick=function () {
            var showID=this.children[1].getAttribute("id");
            showSection(showID);
        }
    }
}

时间: 2024-08-04 13:18:25

CSS&JS两种方式实现手风琴式折叠菜单的相关文章

JS两种方式访问对象属性

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <p> 有两种方式可以访问对象属性: </p> <p> 你可以使用 .property 或 ["property"]. </p>

WordPress引入css/js两种方法

WordPress引入css/js 是我们制作主题时首先面对的一个难点,任何一款主题都要加载自己的css,js,甚至很有可能还需要加载Jquery文件,网上方法特多,说法不一,我们今天借鉴wordpress官方最新的twentysixteen主题来学习总结一下WordPress引入css/js各种常用方法,以及最优化的加载方法. 其实网上的N种方法总结起来就两种:一.模板文件header.php中直接引入文件二.在主题的functions.php中通过WP自带的函数wp_enqueue_scri

日期选择器(Query+bootstrap和js两种方式)

日期选择是在下拉列表中选择年.月.日,年显示前后的五年,12个月,日就是有30.31.29.28天的区别,随着月份的变而变 一.js方式的日期选择 (1)首先就是三个下拉列表了,点击年.月.日显示列表中的内容,这样就是要给这三个列表加"点击事件"onclick <select id="nian" onclick="biantian()"></select>年 <select id="yue" on

js判断复合数据类型的两种方式(typeof不奏效了)

js判断复合数据类型的两种方式(typeof不奏效了) 博客分类: Web前端-JS语言核心 JavaScript 作者:zccst typeof认为所有的复合数据类型都是"object",没法进一步细分,所以还得用其他方法 先上结论: 1,(arr && typeof(arr) === "object" && arr.constructor === Array) 2,Object.prototype.toString.call(ar

css清除浮动的两种方式(clearfix和clear)

最近总是在用浮动,这两种方式总是浮现在眼前,或者说去掉父级和同级浮动样式总在思考中.两种方式怎么写都在base.css中. 在做瑞祥之旅的过程中,还是吃了一个大亏,就是清除浮动,不管是同级还是父级,都没清除浮动,导致经常会有div包不住子级的东西(经常一审查height=0).现利用两例子来巩固下. <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"

js方式清空表单数据的两种方式

方法1:遍历页面元素 /* 清空FORM表单内容  id:表单ID*/ function ClearForm(id) { var objId = document.getElementById(id); if (objId == undefined) { return; } for (var i = 0; i < objId.elements.length; i++) { if (objId.elements[i].type == "text") { objId.elements

js两种定义函数、继承方式及区别

一:js两种定义函数的方式及区别 1:函数声明: function sayA() { alert("i am A"); } 2:函数表达式: var sayB = function() { alert("i am B"); } 区别:code 前者会在代码执行之前提前加载到作用域中,后者则是在代码执行到那一行的时候才会有定义 二:js两种继承方式及区别 对象冒充 临时属性 call() apply() 原型链 code 继承应选哪种 code 三:实例 js两种定义

SpringMVC文件上传的两种方式

搞JavaWEB的应该或多或少都做过文件上传,之前也做过简单的上传,但是如下的需求也确实把我为难了一把: 1.上传需要异步, 2.需要把上传后文件的地址返回来, 3.需要进度条显示上传进度. 项目使用SpringMVC架构+easyUI,初步分析,进度条可以使用easyui自带的进度条,上传可以使用ajaxFileUpload或者ajaxForm.文件传上去,然后把路径带回来是没问题的,关键是上传进度怎么获取.最终,两种方式都实现啦. 首先,不管哪种方式,后台对文件处理都是必须的.文件处理: 1

两种方式实现鼠标悬停图片逐渐变大

鼠标悬停图片逐渐变大这是一个很常见的效果,这里推荐两种方式,各有优缺点: 1.利用js,通过定时器实现宽高的加减. //鼠标移动图片变大 function change_large(obj,speed,target_width,target_height){ var timer = null; var bengin_width = 140;//初始宽度 var bengin_height = 180;//初始高度 clearInterval(timer); timer = setInterval