如何使用CSS和JavaScript创建一个可展开的网格?


可展开网格是指点击某个方块时会展开的网格。默认情况下它是隐藏的,但点击方块一次后会展开到100%。我们将创建三个相邻的等宽列。点击任何一列,网格就会展开。此外,展开区域将有一个可关闭按钮来关闭并返回到初始状态。

创建一个包含三列的容器

从一个包含三列的父div开始。点击任何一个方块,onclick属性将打开相应的选项卡:

<div class="container">
   <div class="left" onclick="openTab('tab1');" ;>
      <h1>Some text on the left</h1>
   </div>
   <div class="center" onclick="openTab('tab2');">
      <h1>Some text in center</h1>
   </div>
   <div class="right" onclick="openTab('tab3');">
      <h1>Some text on the right</h1>
   </div>
</div>

设置列的位置

使用float属性将三列定位到左边。所有这些列都并排浮动。宽度设置为33%,以便每列宽度相等:

.left, .right, .center {
   float: left;
   width: 33%;
   color: white;
   padding: 10px;
   height: 200px;
   text-align: center;
}

打开选项卡的脚本

点击任何一个方块,将使用下面的脚本打开选项卡:

<script>
   function openTab(tabName) {
      var i, x;
      x = document.querySelectorAll(".containerTab");
      Array.from(x).forEach(item => {
         item.style.display = "none";
      });
      document.getElementById(tabName).style.display = "block";
   }
</script>

左侧选项卡

以下是左侧列的代码。点击“x”符号,它将关闭,因为onclick属性设置为display: none。此部分默认隐藏:

<div id="tab1" class="containerTab" style="display:none;background:tomato">
   <span onclick="this.parentElement.style.display='none'" class="closebtn">×</span>
   <h2>Tab 1</h2>
   <p>
      Lorem ipsum dolor sit amet, te quo doctus abhorreant, et pri deleniti intellegat, te sanctus inermis ullamcorper nam. Ius error diceret deseruisse ad
   </p>
</div>

中间选项卡

以下是中间列的代码。点击“x”符号,它将关闭,因为onclick属性设置为display: none。此部分默认隐藏:

<div id="tab2" class="containerTab" style="display:none;background:rgb(166, 71, 255)">
   <span onclick="this.parentElement.style.display='none'" class="closebtn">×</span>
   <h2>Tab 2</h2>
   <p>
      Lorem ipsum dolor sit amet, te quo doctus abhorreant, et pri deleniti intellegat, te sanctus inermis ullamcorper nam. Ius error diceret deseruisse ad
   </p>
</div>

右侧选项卡

以下是右侧列的代码。点击“x”符号,它将关闭,因为onclick属性设置为display: none。此部分默认隐藏:

<div id="tab3" class="containerTab" style="display:none;background:teal">
   <span onclick="this.parentElement.style.display='none'" class="closebtn">×</span>
   <h2>Tab 3</h2>
   <p>
      Lorem ipsum dolor sit amet, te quo doctus abhorreant, et pri deleniti intellegat, te sanctus inermis ullamcorper nam. Ius error diceret deseruisse ad
   </p>
</div>

示例

要使用CSS和JavaScript创建一个可展开网格,代码如下:

<!DOCTYPE html>
<html>
<head>
   <style>
      body {
         padding: 1%;
         font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
      }
      * {
         box-sizing: border-box;
      }
      .left, .right, .center {
         float: left;
         width: 33%;
         color: white;
         padding: 10px;
         height: 200px;
         text-align: center;
      }
      .left {
         background-color: tomato;
      }
      .right {
         background-color: teal;
      }
      .center {
         background-color: rgb(166, 71, 255);
      }
      .container:after {
         clear: both;
      }
      .closebtn {
         float: right;
         color: white;
         font-size: 35px;
         cursor: pointer;
      }
      .closebtn:hover {
         transform: scale(1.5);
      }
      .containerTab {
         padding: 20px;
         width: 99%;
         color: white;
      }
   </style>
</head>
<body>
   <h1 style="text-align: center;">Three Column grid example</h1>
   <div class="container">
      <div class="left" onclick="openTab('tab1');" ;>
         <h1>Some text on the left</h1>
      </div>
      <div class="center" onclick="openTab('tab2');">
         <h1>Some text in center</h1>
      </div>
      <div class="right" onclick="openTab('tab3');">
         <h1>Some text on the right</h1>
      </div>
   </div>
   <div id="tab1" class="containerTab" style="display:none;background:tomato">
      <span onclick="this.parentElement.style.display='none'" class="closebtn">×</span>
      <h2>Tab 1</h2>
      <p>
         Lorem ipsum dolor sit amet, te quo doctus abhorreant, et pri deleniti intellegat, te sanctus inermis ullamcorper nam. Ius error diceret deseruisse ad
      </p>
   </div>
   <div   id="tab2"   class="containerTab"   style="display:none;background:rgb(166, 71, 255)">
      <span onclick="this.parentElement.style.display='none'" class="closebtn">×</span>
      <h2>Tab 2</h2>
      <p>
         Lorem ipsum dolor sit amet, te quo doctus abhorreant, et pri deleniti intellegat, te sanctus inermis ullamcorper nam. Ius error diceret deseruisse ad
      </p>
   </div>
   <div id="tab3" class="containerTab" style="display:none;background:teal">
      <span onclick="this.parentElement.style.display='none'" class="closebtn">×</span>
      <h2>Tab 3</h2>
      <p>
         Lorem ipsum dolor sit amet, te quo doctus abhorreant, et pri deleniti intellegat, te sanctus inermis ullamcorper nam. Ius error diceret deseruisse ad
      </p>
   </div>
   <script>
      function openTab(tabName) {
         var i, x;
         x = document.querySelectorAll(".containerTab");
         Array.from(x).forEach(item => {
            item.style.display = "none";
         });
         document.getElementById(tabName).style.display = "block";
      }
   </script>
</body>
</html>

更新于:2023年12月14日

浏览量:506

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.