Maison > Article > interface Web > Comment implémenter la fonction d'arrangement mal aligné de la liste de produits dans vue
Ces dernières années, la technologie de développement front-end s'est développée rapidement. En tant que l'un des frameworks front-end les plus populaires de ces dernières années, Vue a été appréciée et recherchée par de nombreux développeurs. Dans le processus de développement actuel, Vue est souvent utilisé dans l'affichage et le rendu des listes de produits. Cependant, un simple affichage de liste de produits ne peut pas répondre aux besoins des utilisateurs. La conception d'une liste de produits échelonnée peut augmenter le sens artistique et l'expérience utilisateur de la page. Ensuite, introduisons la méthode permettant de réaliser une disposition échelonnée des listes de produits dans Vue.
Pour réaliser la disposition échelonnée de la liste de produits, les étapes suivantes sont nécessaires :
2. Processus de mise en œuvre
const goods = [ { id: 1, name: 'Apple iPhone 12', price: 6999, image: 'https://xxx.com/xxx.jpg' }, { id: 2, name: 'Samsung Galaxy S21', price: 7999, image: 'https://xxx.com/xxx.jpg' }, // ... ];
2. Générer des fiches produits basées sur la source de données
<template> <div class="goods-list"> <div class="goods-card" v-for="item in goods" :key="item.id" > <img :src="item.image" alt="商品图片" /> <div class="info"> <p class="name">{{ item.name }}</p> <p class="price">¥{{ item.price }}</p> </div> </div> </div> </template>
3. En fonction de la largeur et de la hauteur de la carte produit, calculez la position après le désalignement
computed: { // 计算出商品卡片的宽度 cardWidth() { const containerWidth = /* 获取容器宽度 */; const gutter = /* 获取卡片之间的间距 */; const columnNum = /* 获取列数 */; return (containerWidth - gutter * (columnNum - 1)) / columnNum; }, // 计算出商品卡片的高度 cardHeight() { return /* 获取商品卡片的高度 */; }, // 计算出每个商品卡片的错位位置 positions() { const cardList = /* 获取商品卡片列表 */; const gutter = /* 获取卡片之间的间距 */; const positions = []; let x = 0; let y = 0; cardList.forEach((card, index) => { positions.push({ x, y }); x += index % 2 === 0 ? this.cardWidth + gutter : -this.cardWidth - gutter; y += index % 2 === 0 ? 0 : this.cardHeight + gutter; }); return positions; } }
Enfin, on peut appliquer la position calculée en positions à chaque fiche produit. L'implémentation spécifique est la suivante :
<template> <div class="goods-list"> <div class="goods-card" v-for="(item, index) in goods" :key="item.id" :style="{ left: positions[index].x + 'px', top: positions[index].y + 'px' }" > <img :src="item.image" alt="商品图片" /> <div class="info"> <p class="name">{{ item.name }}</p> <p class="price">¥{{ item.price }}</p> </div> </div> </div> </template>
3. Résumé
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!