vue.js 如何使用v-for生成divs contiguos方式,而不是一个接着一个

5ssjco0h  于 2023-02-24  发布在  Vue.js
关注(0)|答案(1)|浏览(138)

我创建了一个v-for循环,它读取JSON文件以生成包含不同产品信息的div。虽然div显示正确,但问题是它们是一个在另一个下面而不是并排显示的。我尝试更改div的CSS属性,如display属性,但没有成功。要以连续方式显示div,我需要修改什么?

<container class="newproducts">
  <div class="row">
    <div class="col-xl-12">
      <div class="llista">
        <div class="row">
          <div v-for="p in products" :key="p[0]" style="display: inline-block;">
            <div class="col-xl-3 col-l-3 col-md-3 col-sm-3 col-xs-3">
              <div class="producte">
                <img :src="p[2]" class="productes" alt="producte 1" />
                <p>{{ p[1] }}</p>
                <div v-if="p[4] === 'new'" class="etiqueta">
                  <img src="resources/imgs/sign_new_offer.png" alt="new" srcset="" />
                </div>
                <div v-if="p[4] === 'offert'" class="etiqueta-offer">
                  <img src="resources/imgs/sign_offer.png" alt="offer" srcset="" />
                </div>
                <transition name="fade" appear>
                  <div class="modal-overlay" v-if="showModal" @click="showModal = false"></div>
                </transition>
                <transition name="slide" appear>
                  <div class="modal" v-if="showModal">
                    <button class="close" @click="showModal = false">X</button>
                    <img src="resources/imgs/detail_offer2.png" class="detailimg" alt="offer2">
                    <p>HACOA MASKING TAPE HOLDER</p>
                    <p class="price">22, 00€</p>
                    <div class="etiqueta-purchase">
                      <img src="resources/imgs/sign_new_offer_purchase.png" alt="newpurchase">
                    </div>
                    <input v-model="value" type="text" />
                    <p class="error">{{ errorMessage }}</p>
                    <button class="comprar" @click="addToCart">COMPRAR</button>
                  </div>
                </transition>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</container>
a64a0gku

a64a0gku1#

我认为您需要将包含v-for的div与包含col类的div合并:

<div
  v-for="p in products"
  :key="p[0]" 
  class="col-xl-3 col-lg-3 col-md-3 col-sm-3 col-xs-3"
>
  ...

实际上,您创建的是row的子元素,而不是col的子元素,每个子元素都包含一个列。您可以通过使divs为flex来弥补这一点,但仍然会丢失一些格式。
请查看代码段以了解差异:
x一个一个一个一个x一个一个二个x
还要注意的是,你使用的是col-l-3,但我认为它必须是col-lg-3。如果我没记错的话,Bootstrap仍然会使用3个插槽,因为它目前是下一个更小屏幕上的设置(iidoEe. col-sm-3),但仍然,以后可能会让你失望...

相关问题