Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Swiper slider中设置边缘幻灯片的样式_Javascript_Css_Swiper - Fatal编程技术网

Javascript 如何在Swiper slider中设置边缘幻灯片的样式

Javascript 如何在Swiper slider中设置边缘幻灯片的样式,javascript,css,swiper,Javascript,Css,Swiper,我正在使用Swiper滑块插件()。我需要在可视视口边缘的幻灯片上添加不透明度0.5 我发现我可以使用此选择器选择正确的幻灯片,并在可见幻灯片数量发生变化时通过媒体查询进行更改: .swiper-slide-active + * + * + * { opacity: 0.5; } 但是这个技巧对从左侧滑出的幻灯片不起作用。我想没有唯一的CSS解决方案,我必须使用JS来检测可见幻灯片 const specialSlider = new Swiper('.special-slider'

我正在使用Swiper滑块插件()。我需要在可视视口边缘的幻灯片上添加不透明度0.5

我发现我可以使用此选择器选择正确的幻灯片,并在可见幻灯片数量发生变化时通过媒体查询进行更改:

.swiper-slide-active + * + * + * {
      opacity: 0.5;
}
但是这个技巧对从左侧滑出的幻灯片不起作用。我想没有唯一的CSS解决方案,我必须使用JS来检测可见幻灯片

const specialSlider = new Swiper('.special-slider', {
    loop: true,
    speed: 1000,
    slidesPerView: 'auto',
    spaceBetween: 30,
    centeredSlides: true,

    navigation: {
      nextEl: '.special-slider__next',
      prevEl: '.special-slider__prev',
    },
    watchOverflow: true,
    grabCursor: true,

  });

我发现了一个解决方案:

const specialSlider = new Swiper('.special-slider', {
    loop: true,
    speed: 1000,
    slidesPerView: 'auto',
    spaceBetween: 0,
    centeredSlides: true,

    navigation: {
      nextEl: '.special-slider__next',
      prevEl: '.special-slider__prev',
    },
    watchOverflow: true,
    grabCursor: true,

    on: {

      init: makeSlidesTransparent,
      slideChangeTransitionStart: makeSlidesTransparent,
    }

  });

  function makeSlidesTransparent() {

    //Hide old slides
    const oldSlides = d.getAll('.special-slider__item.js-visible');
    for (let i = 0; i < oldSlides.length; i++) {
      oldSlides[i].classList.remove('js-visible')
    }

    const width = window.innerWidth;

    if (width >= 0 && width < 960) {
      //Make visible new slides
      const activeSlide = d.get('.special-slider__item.swiper-slide-active');
      activeSlide.classList.add('js-visible');
    }

    if (width >= 960 && width < 1700) {
      //Make visible new slides
      const activeSlide = d.get('.special-slider__item.swiper-slide-active');
      const prev1 = activeSlide.previousElementSibling;
      const next1 = activeSlide.nextElementSibling;

      prev1.classList.add('js-visible');
      activeSlide.classList.add('js-visible');
      next1.classList.add('js-visible');
    }

    if (width >= 1700) {
      //Make visible new slides
      const activeSlide = d.get('.special-slider__item.swiper-slide-active');
      const prev1 = activeSlide.previousElementSibling;
      const prev2 = prev1.previousElementSibling;
      const next1 = activeSlide.nextElementSibling;
      const next2 = next1.nextElementSibling;

      prev1.classList.add('js-visible');
      prev2.classList.add('js-visible');
      activeSlide.classList.add('js-visible');
      next1.classList.add('js-visible');
      next2.classList.add('js-visible');
    }

  }

我发现了一个解决方案:

const specialSlider = new Swiper('.special-slider', {
    loop: true,
    speed: 1000,
    slidesPerView: 'auto',
    spaceBetween: 0,
    centeredSlides: true,

    navigation: {
      nextEl: '.special-slider__next',
      prevEl: '.special-slider__prev',
    },
    watchOverflow: true,
    grabCursor: true,

    on: {

      init: makeSlidesTransparent,
      slideChangeTransitionStart: makeSlidesTransparent,
    }

  });

  function makeSlidesTransparent() {

    //Hide old slides
    const oldSlides = d.getAll('.special-slider__item.js-visible');
    for (let i = 0; i < oldSlides.length; i++) {
      oldSlides[i].classList.remove('js-visible')
    }

    const width = window.innerWidth;

    if (width >= 0 && width < 960) {
      //Make visible new slides
      const activeSlide = d.get('.special-slider__item.swiper-slide-active');
      activeSlide.classList.add('js-visible');
    }

    if (width >= 960 && width < 1700) {
      //Make visible new slides
      const activeSlide = d.get('.special-slider__item.swiper-slide-active');
      const prev1 = activeSlide.previousElementSibling;
      const next1 = activeSlide.nextElementSibling;

      prev1.classList.add('js-visible');
      activeSlide.classList.add('js-visible');
      next1.classList.add('js-visible');
    }

    if (width >= 1700) {
      //Make visible new slides
      const activeSlide = d.get('.special-slider__item.swiper-slide-active');
      const prev1 = activeSlide.previousElementSibling;
      const prev2 = prev1.previousElementSibling;
      const next1 = activeSlide.nextElementSibling;
      const next2 = next1.nextElementSibling;

      prev1.classList.add('js-visible');
      prev2.classList.add('js-visible');
      activeSlide.classList.add('js-visible');
      next1.classList.add('js-visible');
      next2.classList.add('js-visible');
    }

  }

这很容易,斯威普帮你搬重物。只需将此项添加到您的刷卡器设置中:

watchSlidesVisibility:true
现在,您可以使用类
swiper slide visible
来设置可视幻灯片的样式

例如:

.swiper幻灯片{
不透明度:.25;
}
.滑梯可见{
不透明度:1;
}
请记住,更改每个类的命名空间很容易:

slideClass:'myslider\uu slide',
slideVisibleClass:“myslider_uu幻灯片--可见”

更新

更新2

这很简单,swiper帮你搬运重物。只需将此项添加到您的刷卡器设置中:

watchSlidesVisibility:true
现在,您可以使用类
swiper slide visible
来设置可视幻灯片的样式

例如:

.swiper幻灯片{
不透明度:.25;
}
.滑梯可见{
不透明度:1;
}
请记住,更改每个类的命名空间很容易:

slideClass:'myslider\uu slide',
slideVisibleClass:“myslider_uu幻灯片--可见”

更新

更新2

你可以考虑在屏幕的左、右上覆盖一个半不透明的白色div,等于显示的部分幻灯片的宽度。你可以用 >:<和 >:在滑块本身的伪元素之后。你可以考虑在屏幕的左边和右边叠加一个半不透明的白色div,等于显示的部分幻灯片的宽度。您可以使用滑块本身上的
:before
:after
伪元素来完成此操作。唯一的问题是,我希望边缘上的幻灯片不透明度为0.25,但它们也具有
。swiper slide visible class
。只需编辑swiper默认css。我在答案中添加了一个例子。嘿@Bitpunk,如果它应该是最后一个(右侧)呢?我试着使用你的代码,到目前为止,wich仍然有效,但是我被它绊住了,因为我只是想改变右边缘的不透明度。Thx提前您可以使用
+
选择器解决此问题。这不是最好的解决方案,但它可能足以满足您的需求。我在答案中添加了一个新的示例。唯一的问题是,我希望边上的幻灯片不透明度为0.25,但它们也有
。swiper slide visible class
。只需编辑swiper默认css。我在答案中添加了一个例子。嘿@Bitpunk,如果它应该是最后一个(右侧)呢?我试着使用你的代码,到目前为止,wich仍然有效,但是我被它绊住了,因为我只是想改变右边缘的不透明度。Thx提前您可以使用
+
选择器解决此问题。这不是最好的解决方案,但它可能足以满足您的需求。我在答案中增加了一个新的例子。