滑块内容与滑块一起移动 [英] Slider content moving along with slider

查看:131
本文介绍了滑块内容与滑块一起移动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一个滑块问题:幻灯片内容应该保持固定到右下角并在此处预制动画,但首先沿着滑块移动,然后回到原来的位置。我想让它在幻灯片进入幻灯片时从右向左滑动,当幻灯片消失时,它会滑回到不可见的位置。



这是我的代码:



var theSlider = {track :document.querySelector('。m-tract-slider-wrapp'),//必须匹配CSS中的`transition-duration`:duration:450,reset:function(){var slides = document.querySelectorAll('。m -tract-slider-wrapp> div'); for(var i = 0; i< slides.length; i ++){slides [i] .className ='';幻灯片[i] .classList.add(i> 1?'之后':(i?'current':'before'))}},init:function(){theSlider.reset(); theSlider.track.classList.remove('not-loaded')},next:function(){theSlider.track.classList.add('go-right'); setTimeout(function(){var firstSlide = document.querySelector('。m-tract-slider-wrapp> div:first-child'); theSlider.track.appendChild(firstSlide); theSlider.reset(); theSlider.track .classList.remove('go-right')},theSlider.duration)},prev:function(){theSlider.track.classList.add('go-left'); setTimeout(function(){var lastSlide = document.querySelector('。m-tract-slider-wrapp> div:last-child'); theSlider.track.insertBefore(lastSlide,theSlider.track.firstChild); theSlider.reset (); theSlider.track.classList.remove('go-left')},theSlider.duration)},prevButton:document.querySelector('。slide-left'),nextButton:document.querySelector('。slide-right ')}; window.addEventListener(load,theSlider.init); theSlider.prevButton.addEventListener('click',theSlider.prev); theSlider.nextButton.addEventListener('click',theSlider.next);

  .m-tract-slider {width:100%;身高:75vh;保证金:5em汽车;位置:相对;溢出:隐藏; background-color:#f5f5f5} .m-tract-slider-wrapp {height:100%; -webkit-transition:全部350ms立方贝塞尔(.08,.13,0,.81); -moz-transition:全部350ms立方贝塞尔(.08,.13,0,.81); -o-transition:全部350ms立方贝塞尔(.08,.13,0,.81);过渡:所有350毫米立方贝塞尔(.08,.13,0,.81); opacity:1} .m-tract-slider-wrapp.not-loaded {opacity:0} .m-tract-slider-wrapp> div {height:100%;位置:绝对;背景:透明不重复50%50%/覆盖; m-tract-slider-wrappp> div.before {margin-left:-100%}。m-tract-slider-wrapp> div.current + div {margin-left:100%}。m -tract-slider-wrapp> div.current .m-tract-slide-content {transform:translateX(0); -ms-transform:translateX(0); -webkit-transform:translateX(0); -webkit转换:转换350ms缓解; -moz-transition:转换350ms缓入; -o-transition:350ms缓和;过渡:转换350ms缓入;转换延迟:.6s; margin-left:0} .m-tract-slider-wrapp> div.after〜div {opacity:0} .m-tract-slide-content {position:absolute;底部:0;正确:0;宽度:40%;背景:#fff;填充:3em;保证金:0;身高:50vh; transform:translateX(100%); -ms-transform:translateX(100%); -webkit-transform:translateX(100%); -webkit转换:转换350ms缓解; -moz-transition:转换350ms缓入; -o-transition:350ms缓和;过渡:转换350ms缓入; transition-delay:.6s} .m-tract-slide_title {font-size:32px; font-weight:700;颜色:#212121} .m-tract-slide_text {font-size:18px;显示:块; margin-top:2em;颜色:#ccc; font-weight:300} .m-tract-slider-control {position:absolute;底部:0;左:0;背景:#fff; padding:1em} .m-tract-slider-btn {display:inline-block;光标:指针; margin-left:1em} .m-tract-slider-btn:first-child {margin-left:0} .go-right div {transform:translateX(-100%); -ms-transform:translateX(-100%); -webkit-transform:translateX(-100%)}。go-left div {transform:translateX(100%); -ms-transform:translateX(100%); -webkit-transform:translateX(100%)}。go-left div,.go-right div {-webkit-transition:transform 450ms cubic-bezier(.4,0,.2,1); -moz-transition:变换450ms立方贝塞尔(.4,0,.2,1); -o-transition:变换450ms立方贝塞尔(.4,0,.2,1); transition:transform 450ms立方贝塞尔(.4,0,2,1)}  

 < div class =m-tract-slider> < div class =m-tract-slider-wrapp> < div style =background-image:url('https://static.pexels.com/photos/126282/pexels-photo-126282.jpeg')class =before> < div class =m-tract-slide-content first-slide> < span class =m-tract-slide_title> Gdećešprovestivečnost?< / span> < span class =m-tract-slide_text> Lorem ipsum dolor坐amet,consectetur adipisicing elit。 Voluptatum ea assumenda,nam quia,distinctio omnis。 Aspernatur,molestias nostrum dolores? Voluptas sequi labore暨ipsum necessitatibus possimus,soluta veritatis aut dicta。 < /跨度> < / DIV> < / DIV> < div style =background-image:url('https://static.pexels.com/photos/29017/pexels-photo-29017.jpg')class =current> < div class =m-tract-slide-content first-slide> < span class =m-tract-slide_title>标题2< / span> < span class =m-tract-slide_text> Lorem ipsum dolor坐amet,consectetur adipisicing elit。 Voluptatum ea assumenda,nam quia,distinctio omnis。 Aspernatur,molestias nostrum dolores? Voluptas sequi labore暨ipsum necessitatibus possimus,soluta veritatis aut dicta。 < /跨度> < / DIV> < / DIV> < div style =background-image:url('https://static.pexels.com/photos/70760/dandelion-dandelion-seeds-taraxacum-fluffy-70760.jpeg')class =after> < div class =m-tract-slide-content first-slide> < span class =m-tract-slide_title>标题3< / span> < span class =m-tract-slide_text> Lorem ipsum dolor坐amet,consectetur adipisicing elit。 Voluptatum ea assumenda,nam quia,distinctio omnis。 Aspernatur,molestias nostrum dolores? Voluptas sequi labore暨ipsum necessitatibus possimus,soluta veritatis aut dicta。 < /跨度> < / DIV> < / DIV> < / DIV> < div class =m-tract-slider-control> < div class =m-tract-slider-btn slide-left>上一个< / div> < div class =m-tract-slider-btn slide-right>下一步< / div> < / div>< / div>  

解决方案

当你处理影响动画的属性时,你需要非常小心你的选择器。 $ b

.go-right div .go-left div 选择器正在影响 .go-right .go-left 的每个兄弟,而您可能只想要因此,我用 .go-right>> div .go-left> div替换了它们的直接兄弟姐妹(幻灯片) code>:



var theSlider = { track:document.querySelector('。m-tract-slider-wrapp'),//必须匹配CSS中的`transition-duration`:duration:450,reset:function(){var slides = document.querySelectorAll('。 m-tract-slider-wrapp> div'); for(var i = 0; i< slides.length; i ++){slides [i] .className ='';幻灯片[i] .classList.add(i> 1?'之后':(i?'current':'before'))}},init:function(){theSlider.reset(); theSlider.track.classList.remove('not-loaded')},next:function(){theSlider.track.classList.add('go-right'); setTimeout(function(){var firstSlide = document.querySelector('。m-tract-slider-wrapp> div:first-child'); theSlider.track.appendChild(firstSlide); theSlider.reset(); theSlider.track .classList.remove('go-right')},theSlider.duration)},prev:function(){theSlider.track.classList.add('go-left'); setTimeout(function(){var lastSlide = document.querySelector('。m-tract-slider-wrapp> div:last-child'); theSlider.track.insertBefore(lastSlide,theSlider.track.firstChild); theSlider.reset (); theSlider.track.classList.remove('go-left')},theSlider.duration)},prevButton:document.querySelector('。slide-left'),nextButton:document.querySelector('。slide-right ')}; window.addEventListener(load,theSlider.init); theSlider.prevButton.addEventListener('click',theSlider.prev); theSlider.nextButton.addEventListener('click',theSlider.next);

  .m-tract-slider {width:100%;身高:75vh;保证金:5em汽车;位置:相对;溢出:隐藏; background-color:#f5f5f5} .m-tract-slider-wrapp {height:100%;过渡:所有350毫米立方贝塞尔(.08,.13,0,.81); opacity:1} .m-tract-slider-wrapp.not-loaded {opacity:0} .m-tract-slider-wrapp> div {height:100%;位置:绝对;背景:透明不重复50%50%/覆盖; m-tract-slider-wrappp> div.before {margin-left:-100%}。m-tract-slider-wrapp> div.current + div {margin-left:100%}。m -tract-slider-wrapp> div.current .m-tract-slide-content {transform:translateX(0); margin-left:0} .m-tract-slider-wrapp> div.after〜div {opacity:0} .m-tract-slide-content {position:absolute;底部:0;正确:0;宽度:40%;背景:#fff;填充:3em;保证金:0;身高:50vh; transform:translateX(100%);过渡:转换350ms缓入; transition-delay:0s; / *是.6s * /}。m-tract-slide_title {font-size:32px; font-weight:700;颜色:#212121} .m-tract-slide_text {font-size:18px;显示:块; margin-top:2em;颜色:#999; font-weight:300} .m-tract-slider-control {position:absolute;底部:0;左:0;背景:#fff; padding:1em} .m-tract-slider-btn {display:inline-block;光标:指针; margin-left:1em} .m-tract-slider-btn:第一个孩子{margin-left:0} .go-right> div {transform:translateX(-100%);}。go-left> div {transform:translateX(100%);}。go-left> div,.go-right> div {transition:transform 450ms cubic-bezier(.4,0,.2,1)}  

 < div class =m-tract-slider> < div class =m-tract-slider-wrapp> < div style =background-image:url('https://static.pexels.com/photos/126282/pexels-photo-126282.jpeg')class =before> < div class =m-tract-slide-content first-slide> < span class =m-tract-slide_title> Gdećešprovestivečnost?< / span> < span class =m-tract-slide_text> Lorem ipsum dolor坐amet,consectetur adipisicing elit。 Voluptatum ea assumenda,nam quia,distinctio omnis。 Aspernatur,molestias nostrum dolores? Voluptas sequi labore暨ipsum necessitatibus possimus,soluta veritatis aut dicta。 < /跨度> < / DIV> < / DIV> < div style =background-image:url('https://static.pexels.com/photos/29017/pexels-photo-29017.jpg')class =current> < div class =m-tract-slide-content first-slide> < span class =m-tract-slide_title>标题2< / span> < span class =m-tract-slide_text> Lorem ipsum dolor坐amet,consectetur adipisicing elit。 Voluptatum ea assumenda,nam quia,distinctio omnis。 Aspernatur,molestias nostrum dolores? Voluptas sequi labore暨ipsum necessitatibus possimus,soluta veritatis aut dicta。 < /跨度> < / DIV> < / DIV> < div style =background-image:url('https://static.pexels.com/photos/70760/dandelion-dandelion-seeds-taraxacum-fluffy-70760.jpeg')class =after> < div class =m-tract-slide-content first-slide> < span class =m-tract-slide_title>标题3< / span> < span class =m-tract-slide_text> Lorem ipsum dolor坐amet,consectetur adipisicing elit。 Voluptatum ea assumenda,nam quia,distinctio omnis。 Aspernatur,molestias nostrum dolores? Voluptas sequi labore暨ipsum necessitatibus possimus,soluta veritatis aut dicta。 < /跨度> < / DIV> < / DIV> < / DIV> < div class =m-tract-slider-control> < div class =m-tract-slider-btn slide-left>上一个< / div> < div class =m-tract-slider-btn slide-right>下一步< / div> < / div>< / div>  

提示如何保持开发的可管理性:



  • 使用较短的类名(您只需要一个特定的较长类或id将CSS应用于特定元素。
  • 不要在同一元素的不同状态下复制/粘贴转换或转换,只需将它们置于始终处于活动状态的状态并仅覆盖属性作为最后一步,
  • 只会在您的属性前加上前缀;否则,它们会在您完成开发后为您的属性添加前缀,如果您没有理由使用 em ,请使用workspace而不添加任何内容; 使用
  • rem 。如果您希望滑块的填充和边距受到< body> 的<$ c $影响c> font-size 使用 r em 。如果你想让它固定在你设置的滑动条上,使用 em (并且设置 font-size <


    这些原则的快速降级适用于你所拥有的(这不完美,可以进一步简化,但我认为你会发现它更容易处理)。我也将你的CSS转换为SCSS,因为它更容易控制。



    不要被SCSS吓倒。你不必使用变量和混合(尽管它们一旦学习它们就非常强大和方便)。但是我相信你会发现简单的类嵌套方便初学者。

    为了从代码片段中得到结果,检查源代码,你会发现它转换成CSS。


    I have a problem with a slider: slide content should stay fixed to the right bottom corner and preform animation there, but instead it first moves along the slider and then animates back to the position. I would like to make it that when the slide comes in it slides from right to left, and when slides goes away it slides back to position where it is not visible.

    Here is my code:

    var theSlider = {
      track: document.querySelector('.m-tract-slider-wrapp'),
      // has to match `transition-duration` in CSS:
      duration: 450,
      reset: function() {
        var slides = document.querySelectorAll('.m-tract-slider-wrapp > div');
        for (var i = 0; i < slides.length; i++) {
          slides[i].className = '';
          slides[i].classList.add(i > 1 ? 'after' : (i ? 'current' : 'before'))
        }
      },
    
      init: function() {
        theSlider.reset();
        theSlider.track.classList.remove('not-loaded')
      },
    
      next: function() {
        theSlider.track.classList.add('go-right');
        setTimeout(function() {
          var firstSlide = document.querySelector('.m-tract-slider-wrapp > div:first-child');
          theSlider.track.appendChild(firstSlide);
          theSlider.reset();
          theSlider.track.classList.remove('go-right')
        }, theSlider.duration)
      },
    
      prev: function() {
        theSlider.track.classList.add('go-left');
        setTimeout(function() {
          var lastSlide = document.querySelector('.m-tract-slider-wrapp > div:last-child');
          theSlider.track.insertBefore(lastSlide, theSlider.track.firstChild);
          theSlider.reset();
          theSlider.track.classList.remove('go-left')
        }, theSlider.duration)
      },
    
      prevButton: document.querySelector('.slide-left'),
      nextButton: document.querySelector('.slide-right')
    };
    
    window.addEventListener("load", theSlider.init);
    theSlider.prevButton.addEventListener('click', theSlider.prev);
    theSlider.nextButton.addEventListener('click', theSlider.next);

    .m-tract-slider {
      width: 100%;
      height: 75vh;
      margin: 5em auto;
      position: relative;
      overflow: hidden;
      background-color: #f5f5f5
    }
    
    .m-tract-slider-wrapp {
      height: 100%;
      -webkit-transition: all 350ms cubic-bezier(.08, .13, 0, .81);
      -moz-transition: all 350ms cubic-bezier(.08, .13, 0, .81);
      -o-transition: all 350ms cubic-bezier(.08, .13, 0, .81);
      transition: all 350ms cubic-bezier(.08, .13, 0, .81);
      opacity: 1
    }
    
    .m-tract-slider-wrapp.not-loaded {
      opacity: 0
    }
    
    .m-tract-slider-wrapp>div {
      height: 100%;
      position: absolute;
      background: transparent no-repeat 50% 50%/cover;
      width: 100%
    }
    
    .m-tract-slider-wrapp>div.before {
      margin-left: -100%
    }
    
    .m-tract-slider-wrapp>div.current+div {
      margin-left: 100%
    }
    
    .m-tract-slider-wrapp>div.current .m-tract-slide-content {
      transform: translateX(0);
      -ms-transform: translateX(0);
      -webkit-transform: translateX(0);
      -webkit-transition: transform 350ms ease-in;
      -moz-transition: transform 350ms ease-in;
      -o-transition: transform 350ms ease-in;
      transition: transform 350ms ease-in;
      transition-delay: .6s;
      margin-left: 0
    }
    
    .m-tract-slider-wrapp>div.after~div {
      opacity: 0
    }
    
    .m-tract-slide-content {
      position: absolute;
      bottom: 0;
      right: 0;
      width: 40%;
      background: #fff;
      padding: 3em;
      margin: 0;
      height: 50vh;
      transform: translateX(100%);
      -ms-transform: translateX(100%);
      -webkit-transform: translateX(100%);
      -webkit-transition: transform 350ms ease-in;
      -moz-transition: transform 350ms ease-in;
      -o-transition: transform 350ms ease-in;
      transition: transform 350ms ease-in;
      transition-delay: .6s
    }
    
    .m-tract-slide_title {
      font-size: 32px;
      font-weight: 700;
      color: #212121
    }
    
    .m-tract-slide_text {
      font-size: 18px;
      display: block;
      margin-top: 2em;
      color: #ccc;
      font-weight: 300
    }
    
    .m-tract-slider-control {
      position: absolute;
      bottom: 0;
      left: 0;
      background: #fff;
      padding: 1em
    }
    
    .m-tract-slider-btn {
      display: inline-block;
      cursor: pointer;
      margin-left: 1em
    }
    
    .m-tract-slider-btn:first-child {
      margin-left: 0
    }
    
    .go-right div {
      transform: translateX(-100%);
      -ms-transform: translateX(-100%);
      -webkit-transform: translateX(-100%)
    }
    
    .go-left div {
      transform: translateX(100%);
      -ms-transform: translateX(100%);
      -webkit-transform: translateX(100%)
    }
    
    .go-left div,
    .go-right div {
      -webkit-transition: transform 450ms cubic-bezier(.4, 0, .2, 1);
      -moz-transition: transform 450ms cubic-bezier(.4, 0, .2, 1);
      -o-transition: transform 450ms cubic-bezier(.4, 0, .2, 1);
      transition: transform 450ms cubic-bezier(.4, 0, .2, 1)
    }

    <div class="m-tract-slider">
      <div class="m-tract-slider-wrapp">
    
        <div style="background-image:url('https://static.pexels.com/photos/126282/pexels-photo-126282.jpeg')" class="before">
          <div class="m-tract-slide-content first-slide">
            <span class="m-tract-slide_title">Gde ćeš provesti večnost?</span>
            <span class="m-tract-slide_text">
              Lorem ipsum dolor sit amet, consectetur adipisicing elit.
              Voluptatum ea assumenda, nam quia, distinctio omnis. Aspernatur,
              molestias nostrum dolores? Voluptas sequi labore cum ipsum
              necessitatibus possimus, soluta veritatis aut dicta.
            </span>
          </div>
        </div>
    
        <div style="background-image:url('https://static.pexels.com/photos/29017/pexels-photo-29017.jpg')" class="current">
          <div class="m-tract-slide-content first-slide">
            <span class="m-tract-slide_title">Title 2</span>
            <span class="m-tract-slide_text">
              Lorem ipsum dolor sit amet, consectetur adipisicing elit.
              Voluptatum ea assumenda, nam quia, distinctio omnis. Aspernatur,
              molestias nostrum dolores? Voluptas sequi labore cum ipsum
              necessitatibus possimus, soluta veritatis aut dicta.
             </span>
          </div>
        </div>
    
        <div style="background-image:url('https://static.pexels.com/photos/70760/dandelion-dandelion-seeds-taraxacum-fluffy-70760.jpeg')" class="after">
          <div class="m-tract-slide-content first-slide">
            <span class="m-tract-slide_title">Title 3</span>
            <span class="m-tract-slide_text">
              Lorem ipsum dolor sit amet, consectetur adipisicing elit.
              Voluptatum ea assumenda, nam quia, distinctio omnis. Aspernatur,
              molestias nostrum dolores? Voluptas sequi labore cum ipsum
              necessitatibus possimus, soluta veritatis aut dicta.
            </span>
          </div>
        </div>
    
      </div>
    
      <div class="m-tract-slider-control">
        <div class="m-tract-slider-btn slide-left">Prev</div>
        <div class="m-tract-slider-btn slide-right">Next</div>
      </div>
    </div>

    解决方案

    When you deal with properties that affect animations you need to be very careful about your selectors.

    The .go-right div and .go-left div selectors are affecting each sibling of .go-right and .go-left, while you probably only want the immediate siblings (the slides) to be affected, so I replaced them with .go-right>div and .go-left>div :

    var theSlider = {
      track: document.querySelector('.m-tract-slider-wrapp'),
      // has to match `transition-duration` in CSS:
      duration: 450,
      reset: function() {
        var slides = document.querySelectorAll('.m-tract-slider-wrapp > div');
        for (var i = 0; i < slides.length; i++) {
          slides[i].className = '';
          slides[i].classList.add(i > 1 ? 'after' : (i ? 'current' : 'before'))
        }
      },
    
      init: function() {
        theSlider.reset();
        theSlider.track.classList.remove('not-loaded')
      },
    
      next: function() {
        theSlider.track.classList.add('go-right');
        setTimeout(function() {
          var firstSlide = document.querySelector('.m-tract-slider-wrapp > div:first-child');
          theSlider.track.appendChild(firstSlide);
          theSlider.reset();
          theSlider.track.classList.remove('go-right')
        }, theSlider.duration)
      },
    
      prev: function() {
        theSlider.track.classList.add('go-left');
        setTimeout(function() {
          var lastSlide = document.querySelector('.m-tract-slider-wrapp > div:last-child');
          theSlider.track.insertBefore(lastSlide, theSlider.track.firstChild);
          theSlider.reset();
          theSlider.track.classList.remove('go-left')
        }, theSlider.duration)
      },
    
      prevButton: document.querySelector('.slide-left'),
      nextButton: document.querySelector('.slide-right')
    };
    
    window.addEventListener("load", theSlider.init);
    theSlider.prevButton.addEventListener('click', theSlider.prev);
    theSlider.nextButton.addEventListener('click', theSlider.next);

    .m-tract-slider {
      width: 100%;
      height: 75vh;
      margin: 5em auto;
      position: relative;
      overflow: hidden;
      background-color: #f5f5f5
    }
    
    .m-tract-slider-wrapp {
      height: 100%;
      transition: all 350ms cubic-bezier(.08, .13, 0, .81);
      opacity: 1
    }
    
    .m-tract-slider-wrapp.not-loaded {
      opacity: 0
    }
    
    .m-tract-slider-wrapp>div {
      height: 100%;
      position: absolute;
      background: transparent no-repeat 50% 50%/cover;
      width: 100%
    }
    
    .m-tract-slider-wrapp>div.before {
      margin-left: -100%
    }
    
    .m-tract-slider-wrapp>div.current+div {
      margin-left: 100%
    }
    
    .m-tract-slider-wrapp>div.current .m-tract-slide-content {
      transform: translateX(0);
      margin-left: 0
    }
    
    .m-tract-slider-wrapp>div.after~div {
      opacity: 0
    }
    
    .m-tract-slide-content {
      position: absolute;
      bottom: 0;
      right: 0;
      width: 40%;
      background: #fff;
      padding: 3em;
      margin: 0;
      height: 50vh;
      transform: translateX(100%);
      transition: transform 350ms ease-in;
      transition-delay: 0s; /* was .6s */
    }
    
    .m-tract-slide_title {
      font-size: 32px;
      font-weight: 700;
      color: #212121
    }
    
    .m-tract-slide_text {
      font-size: 18px;
      display: block;
      margin-top: 2em;
      color: #999;
      font-weight: 300
    }
    
    .m-tract-slider-control {
      position: absolute;
      bottom: 0;
      left: 0;
      background: #fff;
      padding: 1em
    }
    
    .m-tract-slider-btn {
      display: inline-block;
      cursor: pointer;
      margin-left: 1em
    }
    
    .m-tract-slider-btn:first-child {
      margin-left: 0
    }
    
    .go-right > div {
      transform: translateX(-100%);
    }
    
    .go-left > div {
      transform: translateX(100%);
    }
    
    .go-left > div,
    .go-right > div {
      transition: transform 450ms cubic-bezier(.4, 0, .2, 1)
    }

    <div class="m-tract-slider">
      <div class="m-tract-slider-wrapp">
    
        <div style="background-image:url('https://static.pexels.com/photos/126282/pexels-photo-126282.jpeg')" class="before">
          <div class="m-tract-slide-content first-slide">
            <span class="m-tract-slide_title">Gde ćeš provesti večnost?</span>
            <span class="m-tract-slide_text">
              Lorem ipsum dolor sit amet, consectetur adipisicing elit.
              Voluptatum ea assumenda, nam quia, distinctio omnis. Aspernatur,
              molestias nostrum dolores? Voluptas sequi labore cum ipsum
              necessitatibus possimus, soluta veritatis aut dicta.
            </span>
          </div>
        </div>
    
        <div style="background-image:url('https://static.pexels.com/photos/29017/pexels-photo-29017.jpg')" class="current">
          <div class="m-tract-slide-content first-slide">
            <span class="m-tract-slide_title">Title 2</span>
            <span class="m-tract-slide_text">
              Lorem ipsum dolor sit amet, consectetur adipisicing elit.
              Voluptatum ea assumenda, nam quia, distinctio omnis. Aspernatur,
              molestias nostrum dolores? Voluptas sequi labore cum ipsum
              necessitatibus possimus, soluta veritatis aut dicta.
             </span>
          </div>
        </div>
    
        <div style="background-image:url('https://static.pexels.com/photos/70760/dandelion-dandelion-seeds-taraxacum-fluffy-70760.jpeg')" class="after">
          <div class="m-tract-slide-content first-slide">
            <span class="m-tract-slide_title">Title 3</span>
            <span class="m-tract-slide_text">
              Lorem ipsum dolor sit amet, consectetur adipisicing elit.
              Voluptatum ea assumenda, nam quia, distinctio omnis. Aspernatur,
              molestias nostrum dolores? Voluptas sequi labore cum ipsum
              necessitatibus possimus, soluta veritatis aut dicta.
            </span>
          </div>
        </div>
    
      </div>
    
      <div class="m-tract-slider-control">
        <div class="m-tract-slider-btn slide-left">Prev</div>
        <div class="m-tract-slider-btn slide-right">Next</div>
      </div>
    </div>

    A few more tips on how to keep developing manageable:

    • use shorter classnames (you only need one specific longer class or id to apply your CSS to specific elements. So use shorter classnames for its children.
    • do not copy/paste transition or transforms over different states of the same element. Just place them on the state that's always active and only override the property that changes. It really improves animation performance and also increases your ability to understand and control it.
    • only prefix your properties after you're done developing, as a last step; otherwise, they'll clutter up your "workspace" without adding anything, really;
    • when you don't have a reason to use em, use rem. If you want your slider's paddings and margins to be affected by <body>'s font-size use rem. If you want it fixed to whatever you set on slider, use em (and set font-size on your slider).

    A quick ran-down of those principles applied to what you have (it's not perfect and can be further streamlined, but I think you'll find it easier to workwith). I also transformed your CSS into SCSS as, again, it's easier to control.

    Don't be intimidated by SCSS. You don't have to use variables and mixins (although they are pretty powerful and handy once you learn them). But I'm sure you'll find the simple class nesting handy for starters.
    To get the result from the snippet, inspect source and you'll find it transformed into CSS.

    这篇关于滑块内容与滑块一起移动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆