实现布局切换
在这一步中,你将学习如何实现产品列表布局切换的功能。请按照以下步骤完成此操作:
- 在
index.html 文件中,找到 <div class="bar"> 元素。
- 在该元素内部,分别添加两个类名为
grid-icon 和 list-icon 的 <a> 元素。
<div class="bar">
<a class="grid-icon"></a>
<a class="list-icon"></a>
</div>
- 在 Vue 实例中创建一个
changeBar 数据属性,用于跟踪当前布局,将默认值设置为 0,即默认使用网格布局。
var vm = new Vue({
el: "#app",
data: {
changeBar: 0
//...
}
});
- 为每个
<a> 元素绑定 @click 事件,当点击 grid-icon 时,将 changeBar 设置为 0,并为 grid-icon 添加 active 类。从 list-icon 中移除 active 类。
<div class="bar">
<a
class="grid-icon"
:class="changeBar == 0? 'active' : ''"
@click="changeBar = 0"
></a>
<!--... -->
</div>
- 为每个
<a> 元素绑定 @click 事件,当点击 list-icon 时,将 changeBar 设置为 1,并为 list-icon 添加 active 类。从 grid-icon 中移除 active 类。
<div class="bar">
<!--... -->
<a
class="list-icon"
:class="changeBar == 1? 'active' : ''"
@click="changeBar = 1"
></a>
</div>
- 使用
v-if 和 v-else 指令,根据 changeBar 的值有条件地渲染网格和列表布局。
<ul class="grid" v-if="changeBar == 0">
<li v-for="item in goodsList">
<a :href="item.url" target="_blank">
<img :src="item.image.large" />
</a>
</li>
</ul>
<ul class="list" v-else>
<li v-for="item in goodsList">
<a :href="item.url" target="_blank">
<img :src="item.image.small" />
</a>
<p>{{item.title}}</p>
</li>
</ul>