RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 865796
Accepted
stiv
stiv
Asked:2020-08-08 13:48:11 +0000 UTC2020-08-08 13:48:11 +0000 UTC 2020-08-08 13:48:11 +0000 UTC

单击时如何填充光滑滑块按钮的边框?

  • 772

每次单击时,按钮的边框应逐渐填满,即当到达最后一张幻灯片时,按钮周围将有一个完整的边框。

一般来说,它看起来是这样的——点击“后退”按钮,“前进”按钮的行程会减少,即“前进”按钮充当progress bar

在此处输入图像描述

在codepen上有一个例子:

https://codepen.io/st-iv/pen/JBmvWO 您可能可以将下面的进度条作为基础,但到目前为止有些东西不起作用。而难点在于如何在元素周围布置这个不完整的边框

$slider.slick({
    slidesToShow: 3,
    slidesToScroll: 1,
    speed: 400,
    nextArrow: '<div class="slider-arrow arrow-next"><img src="https://upload.wikimedia.org/wikipedia/commons/a/a0/Green_Arrow_Right.svg" alt=""></div>', // Кастомная стрелка "далее"
    prevArrow: '<div class="slider-arrow arrow-prev"><img src="https://upload.wikimedia.org/wikipedia/commons/a/a0/Green_Arrow_Right.svg" alt=""></div>', // Кастомная стрелка "назад"
  });  
});
javascript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    zhurof
    2020-08-10T03:16:46Z2020-08-10T03:16:46Z

    $('.slider').on('init reInit afterChange',function(event,slick,currentSlide){
      //Рассчитываем длину окружности в кнопке по школьной формуле (с=2πr)
      var circleLength = $('.slick-next circle').attr('r')*Math.PI*2;
      
      //Определяем индекс текущего слайда. При событиях "init" и "reInit" параметр "currentSlide" не определён, в этом случае currentSlide приравниваем к нулю. Также добавляем единицу, т.к. отсчёт слайдов начинается с нуля. 
      var i =  (currentSlide ? currentSlide : 0) + 1;
      
      //Определяем долю заполнения, разделив индекс текущего слайда на общее количество слайдов
      var part = i/slick.slideCount;
      
      //Задаём кругу внутри кнопки свойство "stroke-dasharray". Первый параметр - длина видимой части границы, второй - длина пустого промежутка.
      $('.slick-next circle').css('stroke-dasharray', circleLength*part+','+circleLength);
    });
    
    $('.slider').slick({
      dots:false,
      arrows:true,
      nextArrow:'<svg class="slick-arrow slick-next" viewBox="0 0 40 40"><circle cx="20" cy="20" r="18" transform="rotate(-90,20,20)" /><path d="M18,10 l10,10 -10,10" /></svg>',
      prevArrow:'<svg class="slick-arrow slick-prev" viewBox="0 0 40 40"><circle cx="20" cy="20" r="18" /><path d="M22,10 l-10,10 10,10" /></svg>',
      appendArrows:$('.nav')
    });
    *{
      box-sizing:border-box;
    }
    body{
      background-color:#cda;
    }
    .slide{
      height:100px;
      background-color:gray;
      color:#fff;
      line-height:100px;
      text-align:center;
      font-weight:bold;
      font-size:75px;
    }
    .slick-arrow{
      display:inline-block;
      width:40px;
      height:40px;
      cursor:pointer;
    }
    .slick-arrow circle{
      fill:#fff;
      stroke:green;
      stroke-width:2;
      stroke-dasharray:0,1000px;
      transition: all .2s linear;
    }
    .slick-arrow path{
      stroke-width:2;
      fill:none;
      stroke:black;
      stroke-linecap:round;
      
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script>
    <link href="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css" rel="stylesheet"/>
    <div class="slider">
      <div class="slide">1</div>
      <div class="slide">2</div>
      <div class="slide">3</div>
      <div class="slide">4</div>
      <div class="slide">5</div>
    </div>
    <div class="nav"></div>

    • 8

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5