【问题标题】:Vue v-for not rendering shadow correctly in slideVue v-for 在幻灯片中没有正确渲染阴影
【发布时间】:2019-08-12 05:52:24
【问题描述】:

我正在尝试在我的 Vue 项目中使用 iDangero.us Swiper。除了幻灯片中的阴影外,一切正常。每次分页后,阴影都会变得越来越大,越来越暗。在圆圈结束并且我回到 第二 滑动后,阴影会再次恢复正常。

这是插图,发生了什么:

这就是我正在做的:

<template>
  <div class="product-slider">
    <div class="product-slider__wrp swiper-wrapper">
      <product-slide :item="item" v-for="item in items" :key="item.id"/>
    </div>
  <div class="product-slider__pagination"></div>
</div>
</template>



  data() {
    return {

      swiperOptions: {
        vertical: true,
        spaceBetween: 30,
        effect: 'fade',
        loop: true,
        mousewheel: {
          invert: false,
        },
        // autoHeight: true,
        pagination: {
          el: '.product-slider__pagination',
          clickable: true,
        }
      },
    };
  },

  mounted(){
    const swiper = new Swiper('.product-slider', {
      spaceBetween: 30,
      effect: 'fade',
      loop: true,
      mousewheel: {
        invert: false,
      },
      // autoHeight: true,
      pagination: {
        el: '.product-slider__pagination',
        clickable: true,
      }
    });
    swiper.slideTo(3, 1000, false)
  },

这是幻灯片组件:

<template>
<div class="product-slider__item swiper-slide">

  <div class="product-slider__img">
    <inner-slick-slider :images="item.imageUrl" :imageTitle="item.title | decrypt"/>
  </div>

  <div class="product-slider__content">
    <span class="product-slider__code"> test </span>
  </div>

</div>
</template>

这是幻灯片组件上的阴影:box-shadow: 4px 13px 30px 1px rgba(112, 137, 249, 0.2);

我尝试了所有可以从谷歌找到的东西。还尝试在更新和更新之前重新渲染等。我做错了什么?非常感谢任何帮助!

【问题讨论】:

  • 您好,您可以在此处添加产品幻灯片模板代码
  • 您的盒子阴影可能会堆叠。你在哪里应用它?快速浏览api我发现活动幻灯片有一个名为swiper-slide-active的类。尝试为此类设置 box-shadow。
  • @joy 嘿!我还添加了幻灯片组件的代码。它几乎只有 html 结构,没有脚本逻辑。我将阴影应用到.product-slider__img
  • 你也在哪个类中应用了这个盒子阴影css??
  • @joy This CodePen 几乎是完整的例子,它有同样的问题,即使它根本不使用 v-for 和 vue。您给的建议很有帮助,非常感谢。

标签: jquery html css vue.js


【解决方案1】:

嗨,实际上问题是由于过渡和盒子阴影而出现的 CSS。

在代码中,CSS 应用于所有 div,因此我将其删除并仅在当前处于活动状态的 img 上添加了 box-shadow。

我在这里添加了 box shadow css。

&.swiper-slide-active {
  .blog-slider__img {
    box-shadow: 4px 13px 30px 1px rgba(252, 56, 56, 0.2);
    img {
      opacity: 1;
    transition-delay: .3s;

    }
  }

并从下面的类中删除了 box shadow css。

&__img {
     // width: 40%;
    width: 300px;
    flex-shrink: 0;
    height: 300px;
    background-image: linear-gradient(147deg, #fe8a39 0%, #fd3838 74%);

    border-radius: 20px;
    transform: translateX(-80px);

    overflow: hidden;

    &:after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: linear-gradient(147deg, #fe8a39 0%, #fd3838 74%);
      border-radius: 20px;
    opacity: 0.8;
}

这里是更新的codepen的链接。

【讨论】:

  • 非常感谢。正是我想要的。
  • @TarvoMäesepp 更新了描述,请查看。由于过渡和 box-shadow CSS 会出现问题。您可以使用浏览器检查选项并查看 CSS 的应用位置...
  • 所以你基本上把&amp;__img块移出了&amp;.swiper-slide-active?我不明白,因为那些&amp;__img 之前也没有&amp;.swiper-slide-active,如果我错了,请纠正我。我只是找不到区别 :D 我知道在那种情况下我听起来很愚蠢。但我很高兴你的版本完美运行:)
  • 基本上,我只为现在可见的活动图像添加了框阴影,并从所有图像中删除。 @TarvoMäesepp
  • 好的,我知道了。再次非常感谢你?
猜你喜欢
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 2013-05-28
  • 2013-07-12
相关资源
最近更新 更多