我正在尝试创建一行 HTML div,当您单击它们时会展开和折叠。请参阅此 jsFiddle 以了解我的意思:http: //jsfiddle.net/Lm6Pg/3/。(您可能必须展开结果窗格或使用全屏结果以使所有 div 显示在一行中。)
目前,我正在使用One% CSS Grid让所有 div 出现在一行上,然后根据当前状态和单击的 div 切换不同的 CSS 列类以展开和折叠 div。
<div id="content" class="onepcssgrid-1200">
<div class="onerow">
<div class="tile col4" id="about">
<h3>About</h3>
<div class="text">
<p>Lorem ipsum dolor sit amet.</p>
</div>
</div>
<div class="tile col4" id="other">
<h3>Other</h3>
<div class="text">
<p>Lorem ipsum dolor sit amet.</p>
</div>
</div>
<div class="tile col4 last" id="stuff">
<h3>Stuff</h3>
<div class="text">
<p>Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
这是我的javascript(我已经从jsFiddle中的内容更改了它,因为我在动态确定需要切换哪些列类):
$(".tile").click(function() {
var tile = $(this);
var otherTiles = tile.siblings();
var currentSelectedTile = otherTiles.filter(".selected");
var unselectedOtherTiles = otherTiles.not(".selected");
var otherTileWeight, tileWeight;
if (currentSelectedTile.length) {
otherTileWeight = 3;
tileWeight = 3;
} else {
otherTileWeight = 4;
tileWeight = 4;
}
tile.toggleClass("selected col" + tileWeight + " col6", 600);
currentSelectedTile.toggleClass("selected col3 col4", 600);
unselectedOtherTiles.toggleClass("col" + otherTileWeight + " col3", 600);
});
这似乎有很多代码可能包含在 jQuery UI 函数或其他一些库中,当我将它们放在一起时,这些库让我无法理解。有没有更简单、更简洁或更好的方法来做到这一点?该解决方案不需要使用 jQuery 或 One% CSS Grid,任何库都可以。但是,它确实需要采用响应式布局,当 div 彼此重叠时,它最好仍能按预期工作。