首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swiper Slider...removing箭头

Swiper Slider...removing箭头
EN

Stack Overflow用户
提问于 2018-05-09 22:04:53
回答 3查看 13K关注 0票数 0

我想删除箭头上的iDangerous滑块,除非箭头是必要的。例如,我目前有4个并排的图像,如果用户在移动设备(或较小的计算机屏幕)上,并且显示的图像少于4个,那么我希望箭头显示出来,以便用户可以滚动。但是,如果所有4个图像都显示了,那么我不希望箭头出现。

我试着用jQuery来做这件事,但是我所做的都不起作用。

代码语言:javascript
复制
<script>
var swiper = new Swiper('.swiper-container', {
                slidesPerView: 4,
                slidesPerGroup: 4,
                loopedSlides: 4,
                centeredSlides: false,
                spaceBetween: 0,
                grabCursor: true,
                loop:false,
                pagination: '.swiper-pagination',
                paginationClickable: true,
                breakpoints: {
                    1200: {
                        slidesPerView: 4,
                        loopedSlides: 4,
                        spaceBetween: 10
                    },
                    1024: {
                        slidesPerView: 3,
                        loopedSlides: 3,
                        spaceBetween: 10
                    },
                    768: {
                        slidesPerView: 2,
                        loopedSlides: 2,
                        spaceBetween: 10
                    },
                    675: {
                        slidesPerView: 1,
                        loopedSlides: 1,
                        spaceBetween: 20
                    }
                }
            });
document.querySelector('.prepend-2-slides').addEventListener('click', function (e) {
  e.preventDefault();
  swiper.prependSlide([
    '<div class="swiper-slide">Slide ' + (--prependNumber) + '</div>',
    '<div class="swiper-slide">Slide ' + (--prependNumber) + '</div>'
    ]);
});
document.querySelector('.prepend-slide').addEventListener('click', function (e) {
  e.preventDefault();
  swiper.prependSlide('<div class="swiper-slide">Slide ' + (--prependNumber) + '</div>');
});
document.querySelector('.append-slide').addEventListener('click', function (e) {
  e.preventDefault();
  swiper.appendSlide('<div class="swiper-slide">Slide ' + (++appendNumber) + '</div>');
});
document.querySelector('.append-2-slides').addEventListener('click', function (e) {
  e.preventDefault();
  swiper.appendSlide([
    '<div class="swiper-slide">Slide ' + (++appendNumber) + '</div>',
    '<div class="swiper-slide">Slide ' + (++appendNumber) + '</div>'
    ]);
});
var slides = document.querySelectorAll('.swiper-wrapper .swiper-slide');
var arrowPrev = document.querySelector('.swiper-button-prev');
var arrowNext = document.querySelector('.swiper-button-prev');

if (slides.length < 4) {
arrowPrev.style.display = 'none';
arrowNext.style.display = 'none';
 }
 </script>

这不起作用,事实上,它弄乱了滑块(而不是有4个独立的图像,我在屏幕上有一个图像。然后我用下面的代码替换了最后一部分,它也将其更改为屏幕上的一个图像,箭头仍然在那里。

代码语言:javascript
复制
  var swiper__slidecount = mySwiper.slides.length;
    if (swiper__slidecount > 3) {
      $('.swiper-button-prev,.swiper-button-next').remove();
    }

这是一个link to the website这是一个JS Fiddle link.奇怪的是,在我的网站上运行的代码,不能在JS link to the website上运行,这让我更加困惑。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-09 23:17:36

你可以检查它,我已经为你创建了一个片段,我会解释说,我已经创建了一个函数,检查视口时,其定义在滑动断点当视口小于1024,这是3幻灯片,然后箭头将出现一次是大于1024,然后箭头将消失,只要其4幻灯片如你所想。

小提琴https://jsfiddle.net/61LLnfh7/6/

代码语言:javascript
复制
var mySwiper = new Swiper('.swiper-container', {
  slidesPerView: 4,
  slidesPerGroup: 4,
  loopedSlides: 4,
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },
  breakpoints: {
    1200: {
      slidesPerView: 4,
      loopedSlides: 4,
      spaceBetween: 10
    },
    1024: {
      slidesPerView: 3,
      loopedSlides: 3,
      spaceBetween: 10
    },
    768: {
      slidesPerView: 2,
      loopedSlides: 2,
      spaceBetween: 10
    },
    675: {
      slidesPerView: 1,
      loopedSlides: 1,
      spaceBetween: 20,
    }
  },
  on: {
    init: function() {
			checkArrow();
    },
    resize: function () {
			checkArrow();
    }
  }
});

function checkArrow() {
  var swiperPrev = document.querySelector('.swiper-button-prev');
  var swiperNext = document.querySelector('.swiper-button-next');
  if ( window.innerWidth < 1024  ) {
    console.log('Success', window.innerWidth);
    swiperPrev.style.display = 'block';
    swiperNext.style.display = 'block';
  } else {
    swiperPrev.style.display = 'none';
    swiperNext.style.display = 'none';
  }
}
代码语言:javascript
复制
.swiper-wrapper .swiper-slide {
  background-color: #eee;
  height: 250px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.swiper-button-prev,
.swiper-button-next {
  display: none;
}
代码语言:javascript
复制
<link href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.2.6/css/swiper.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.2.6/js/swiper.min.js"></script>

<!-- Slider main container -->
<div class="swiper-container">
    <!-- Additional required wrapper -->
    <div class="swiper-wrapper">
        <!-- Slides -->
        <div class="swiper-slide">Slide 1</div>
        <div class="swiper-slide">Slide 2</div>
        <div class="swiper-slide">Slide 3</div>
        <div class="swiper-slide">Slide 4</div>
        
    </div>
    <!-- If we need pagination -->
    <div class="swiper-pagination"></div>

    <!-- If we need navigation buttons -->
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>

</div>

票数 3
EN

Stack Overflow用户

发布于 2020-08-27 19:59:40

不过,我设法用另一种方式让它正常工作。我只是想在导航箭头未被“禁用”时显示它们。

Swiper API上,我们有disabledClass,这是当箭头被禁用时(不做导航,即滑块的开始或结束)时要应用的类。

代码语言:javascript
复制
navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
    disabledClass: 'disabled_swiper_button'
  },

然后在css方面只需简单地:

代码语言:javascript
复制
.disabled_swiper_button {
    opacity: 0;
    cursor: auto;
    pointer-events: none;
}
票数 3
EN

Stack Overflow用户

发布于 2018-05-09 22:26:19

我的第一个想法是

代码语言:javascript
复制
console.log(slides);

并检查并查看它在运行时的编号。

还修复了控制台错误:

代码语言:javascript
复制
Uncaught TypeError: Cannot read property 'addEventListener' of null
at (index):449

似乎找不到此元素:

代码语言:javascript
复制
document.querySelector('.prepend-2-slides').addEventListener('click', function (e) {
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50255429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档