【问题标题】:how to start the animation immediately after loading the page?加载页面后如何立即启动动画?
【发布时间】:2017-10-25 09:26:18
【问题描述】:

示例:https://codepen.io/pseudop/pen/Xedbam

在示例中,页面加载时,第一个圆圈没有动画,但是,一旦它循环,它就会动画

html

<div class="swiper-container">

<div class="swiper-wrapper">

<div class="swiper-slide">Slide 1 <p>123.</p></div>
<div class="swiper-slide">Slide 2 <p>321.</p></div>
<div class="swiper-slide">Slide 3 <p>123</p></div>
</div>
<div class="swiper-pagination"></div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>

css

/* svg style */
.circ {transform: rotate(-90deg);}
.circ circle {stroke-dasharray: 440px;}
.circ1 {stroke-dashoffset: 440px;}

/* overwrite swiper */
.swiper-slide {height: 200px;}
.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet {margin: 0 40px;}
.swiper-pagination-bullet {background: 0;}
.swiper-pagination-bullet-active .circ1 {stroke-dashoffset: 220px; transition: linear 2s stroke-dashoffset; transform: scale(1);}
.swiper-button-prev, .swiper-button-next {display: none;}

js

var mySwiper = new Swiper ('.swiper-container', {
    loop: true,
    speed: 600,
    autoplay: 1400,
    pagination: '.swiper-pagination',
    nextButton: '.swiper-button-next',
    prevButton: '.swiper-button-prev',
    // add SVG in bullets
    paginationBulletRender: function (swiper, index, className) {
        return `<span class="${className}"><svg class="circ" width="90" height="90" class="circ">
                <circle class="circ1" cx="46" cy="46" r="33" stroke="#FF964C" stroke-width="3" fill="none"/>
                <circle class="circ2" cx="46" cy="46" r="33" stroke="#7F3400" stroke-width="1" fill="none"/>
                </svg></span>`;
    }
});

【问题讨论】:

    标签: javascript jquery css swiper


    【解决方案1】:

    问题是当滑动事件发生时会发生圆形动画(将'.swiper-pagination-bullet-active'类赋予.swiper-pagination-bullet)。

    进入页面时第一个.swiper-pagination-bullet已经有那个类了。

    为了解决这个问题,我想出的一个解决方案是在第一个圆圈上使用 CSS 动画。动画的持续时间等于您进入页面和第二个文本滑入之间的延迟。(我已经从自动播放 1400 设置了 1.4 秒,但您可以根据需要更改它)。您还可以使用更多参数自定义 css 动画。

    见下面的 sn-p 或CodePen

    var mySwiper = new Swiper ('.swiper-container', {
    loop: true,
    speed: 600,
    autoplay: 1400,
    pagination: '.swiper-pagination',
    nextButton: '.swiper-button-next',
    prevButton: '.swiper-button-prev',
    // add SVG in bullets
    paginationBulletRender: function (swiper, index, className) {
    return `<span class="${className} active"><svg class="circ" width="90" height="90" class="circ">
    <circle class="circ1" cx="46" cy="46" r="33" stroke="#FF964C" stroke-width="3" fill="none"/>
    <circle class="circ2" cx="46" cy="46" r="33" stroke="#7F3400" stroke-width="1" fill="none"/>
    </svg></span>`;
    }
    });
    /*
    ref: http://www.iliketofu.eu/
    i used a little es6
    svg and slider animation isn't synced yet
    */
    /* svg style */
    
    .circ {
      transform: rotate(-90deg);
    }
    
    .circ circle {
      stroke-dasharray: 440px;
    }
    
    .circ1 {
      stroke-dashoffset: 440px;
    }
    
    
    /* overwrite swiper */
    
    .swiper-slide {
      height: 200px;
    }
    
    .swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet {
      margin: 0 40px;
    }
    
    .swiper-pagination-bullet {
      background: 0;
    }
    
    .swiper-pagination-bullet-active .circ1 {
      stroke-dashoffset: 220px;
      transition: linear 2s stroke-dashoffset;
      transform: scale(1);
    }
    .swiper-pagination-bullet:first-child .circ1 {
      animation-name:circ1;
      animation-duration:1.4s;
      
    }
    .swiper-button-prev,
    .swiper-button-next {
      display: none;
    }
    
    
    @keyframes circ1 {
      0% {stroke-dashoffset: 440px;}
      100% {stroke-dashoffset: 220px;}
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.2/js/swiper.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.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>
    <div class="swiper-pagination"></div>
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
    </div>

    【讨论】:

    • 非常感谢你
    猜你喜欢
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 2011-08-11
    • 2011-08-10
    • 2023-03-03
    • 2021-08-26
    相关资源
    最近更新 更多