通过js实现多个盒子的点击展开或关闭
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>通过js实现多个盒子点击展开闭合</title>
6
7 <script type="text/javascript">
8
9 var boxCondition = true; //定义盒子初始状态,true则执行展开语句,false则执行闭合语句
10
11 /*通过鼠标点击决定展开或是闭合盒子*/
12 function mouseClick(x){
13 var boxId = document.getElementById("box_0"+x);
14
15 switch(x){
16 case 1: /*判断点击的是一号盒子还是二号盒子*/
17 if(boxCondition == true){ /*判断该执行展开语句还是闭合语句*/
18 boxId.style="height:160px;"; //展开盒子
19 boxCondition = false; //给boxCondition赋予新值,以便鼠标再次点击时,盒子不会执行展开语句,转而执行闭合语句
20 }else{
21 boxId.style="height:80px;"; //闭合盒子
22 boxCondition = true; //给boxCondition赋予新值,以便鼠标再次点击时,盒子不会执行闭合语句,转而执行展开语句
23 }
24 break;
25 case 2:
26 if(boxCondition == true){
27 boxId.style="height:160px;";
28 boxCondition = false;
29 }else{
30 boxId.style="height:80px;";
31 boxCondition = true;
32 }
33 break;
34 }
35
36 }
37
38
39 /*通过获取盒子的高度判断盒子当前处于打开还是关闭状态*/
40 /*通过此函数,能够在展开一号盒子后,鼠标直接移动到二号盒子,此时重新赋值boxCondition,以便二号盒子能够正常打开*/
41 function mouseOver(x){
42 var boxId = document.getElementById("box_0"+x);
43 var computedStyle = document.defaultView.getComputedStyle(boxId, null);
44 var boxHeight = computedStyle.height; //获取盒子高度
45 boxHeight = parseInt(boxHeight); //将盒子高度数值转换为Number类型,因为获取到的高度为转换前为“30px”,是String类型。
46 if(boxHeight == 80){
47 boxCondition = true; //高度为80时,盒子为闭合状态
48 }else{
49 boxCondition = false; //高度不等于80时,盒子为展开状态
50 }
51 }
52
53 </script>
54
55 <style type="text/css">
56 *{
57 margin: 0;
58 padding: 0;
59 }
60 a{
61 position: ;
62 }
63 body{
64 height: 100vh;
65 display: flex;
66 align-items:center;
67 }
68 .boxCss_1{
69 width: 80px;
70 height: 80px;
71 background-color: aqua;
72 margin: auto;
73 }
74 .boxCss_2{
75 width: 80px;
76 height: 80px;
77 background-color: #000;
78 margin: auto;
79 }
80
81
82 </style>
83 </head>
84 <body>
85
86 <div id="box_01" class="boxCss_1" onclick="mouseClick(1)" onmouseover="mouseOver(1)"></div>
87 <div id="box_02" class="boxCss_2" onclick="mouseClick(2)" onmouseover="mouseOver(2)"></div>
88
89 </body>
90 </html>
新手之作献丑了,如果观看的大佬有更好的方法也可以提出来。