javascript - 条件样式未应用于 div
问题描述
我正在尝试映射包含在 div 中的一组卡片,但我希望第一个、第二个、倒数第二个以及这些 div 中的最后一个导致新行/占据整行。我正在使用 Vue3 和 PrimeVue 组件库。
<div class="row" v-for="(task, index) in tasks" :class="{
'p-col-12 dp-block': index === 0,
'p-col-12 dp-block': index === 1,
'p-col-12': index == tasks.length-2,
'p-col-12': index === tasks.length-1,
}" :key="task">
<Card style="width: 25em; vertical-align: middle;">
// card content
</Card>
</div>
在上面的代码中,我正在检查数组中每个项目的索引,如果该项目的索引为 0、1、tasks.length-1 或 tasks.length-2,它应该具有“p-col-12”应用到它的类。
在我的情况下,倒数第二个元素没有应用该类。
我的条件样式代码似乎是正确的,但我很想从更有经验的人那里得到意见。
解决方案
您可以仅使用 CSS 来定位这些元素,通过:nth-child
and:nth-last-child
并应用样式以使元素100%
变宽,因此您不需要引入不必要的逻辑。
例如
section {
display: flex;
flex-flow: row wrap;
gap: 10px;
}
div {
background: yellowgreen;
height: 100px;
flex: 1 1 auto;
}
div:is(:nth-child(1),
:nth-child(2),
:nth-last-child(1),
:nth-last-child(2)) {
flex-basis: 100%;
}
<section>
<div class="row">1</div>
<div class="row">2</div>
<div class="row">3</div>
<div class="row">4</div>
<div class="row">5</div>
<div class="row">6</div>
<div class="row">7</div>
<div class="row">8</div>
<div class="row">9</div>
</section>
推荐阅读
- java - 为什么我们不能将默认访问修饰符和抽象关键字一起用于接口中的方法?
- android - okhttp websocket连接处理与不同的互联网
- sql - 将时间转换为0015格式Sql
- css - CSS 更改无济于事
- python - 将自定义构建步骤添加到 bdist
- python - 如何对条形图 matplotlib 进行分组和绘制值
- graph - 如何在 neo4j 中创建相似/平行路径之间的关系?
- google-app-engine - 如何配置从 BitBucket 到 Google Cloud 的 CI/CD 管道?
- css - BEM CSS、全局和类命名
- database-design - Cassandra 按地图查询