如何使用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>
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP