【发布时间】:2019-10-04 13:54:06
【问题描述】:
我正在尝试创建两个按钮,每个按钮在使用 CSS grid 时切换一个特定的列。
我有一个简单的网格,可以切换第一列和最后一列的宽度。 (见 sn-p)
我希望能够独立切换列宽(无需进一步的 javascript)。
因为
active类应用于容器,每一列都无法推断出另一列的活动状态。使用 flex,活动类将直接应用到列 (例如
item1),这不是问题。
问题
是否有 CSS 网格列宽属性可以应用于列(例如 item1) 覆盖 grid-template-columns 中的设置?
或
是否有像 grid-template-columns 这样的 CSS 网格属性可以针对单个列而不是一个属性中的所有列?
$("#js-btn-left").on("click", function () {
$(".grid-container").toggleClass("active");
});
$("#js-btn-right").on("click", function () {
$(".grid-container").toggleClass("active");
});
.grid-container {
display: grid;
grid-template-columns: 50px auto 50px;
grid-gap: 10px;
}
.grid-container > div {
background-color: #b00;
border:2px solid #000;
text-align: center;
padding: 20px 0;
font-size: 30px;
}
.grid-container.active{
grid-template-columns: 100px auto 100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="js-btn-left" type="button" value="TOGGLE COLUMN 1"/>
<input id="js-btn-right" type="button" value="TOGGLE COLUMN 3"/>
<div class="grid-container">
<div class="item1">1</div>
<div class="item2">2</div>
<div class="item3">3</div>
</div>
【问题讨论】:
-
不...我不相信这是可能的。这些不是元素,因此不能由 JS 或 CSS 选择。解析和调整
template-columns是一种方法,这很复杂。