css基于html的滑块/悬浮显示下一张幻灯片的一部分 [英] css html based slider / show part of next slide on hover

查看:90
本文介绍了css基于html的滑块/悬浮显示下一张幻灯片的一部分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在尝试更长时间,以调整下方滑杆的效果。我试图创建的效果是,当你悬停在右侧或左侧它显示一些下一个或上一张幻灯片。

Been trying for a longer time now to adjust the effect on the slider below. The effect I am trying to create is that when you hover the right or left side it shows a bit of the next or previous slide.

示例:当活动幻灯片幻灯片1,你悬停在左侧(占总幻灯片的10%),它应该显示一张上一张幻灯片,当悬停在幻灯片1的右侧(再10%),它应该显示一下下一张幻灯片。

Example: when the active slide is slide 1 and you hover the left side (say 10% of the total slide) it should show a piece of the previous slide and when hovering the right side of slide 1 (again 10%) it should show a bit of the next slide.

我不完全确定这种效果在CSS / HTML是否可能,但它可能与悬停状态工作。但是如果应该可能,你应该知道一个:)

I am not completely sure whether this effect is possible in CSS/HTML, however it might work with a hover state. But if it should be possible, one of you should probably know that :)

/* Slider wrapper*/
  .css-slider-wrapper {
      display: block;
      background: #FFF;
      overflow: hidden;
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
  }
  /* Slider */
  .slider {
      width: 100%;
      height: 100%;
      background: red;
      position: absolute;
      left: 0;
      top: 0;
      opacity: 1;
      z-index: 0;
      
      display: flex;
      display: -webkit-flex;
      display: -ms-flexbox;
      flex-direction: row;
      flex-wrap: wrap;
      -webkit-flex-align: center;
      -webkit-align-items: center;
      align-items: center;
      justify-content: center;
      align-content: center;
      
      -webkit-transition: -webkit-transform 1600ms;
      transition: -webkit-transform 1600ms, transform 1600ms;
      -webkit-transform: scale(1);
      transform: scale(1);
      }
  /* each slide background color */ 
  .slide1 {
      background: #00bcd7;
      left: 0;
  }
  .slide2 {
      background: #009788;
      left: 100%
  }
  .slide3 {
      background: #ff5608;
      left: 200%
  }
  .slide4 {
      background: #607d8d;
      left: 300%;
  }
  .slider > div {
    text-align: center;
  }
  /* Slider inner content */
  .slider h2 {
      color: #FFF;
      font-weight: 900;
      text-transform: uppercase;
      font-size: 45px;
      line-height: 120%;
      opacity: 0;
      -webkit-transform: translateX(500px);
      transform: translateX(500px);
  }
  .slider .button {
      color: #FFF;
      padding: 5px 50px;
      background: rgba(255,255,255,0.3);
      text-decoration: none;
      opacity: 0;
      font-size: 15px;
      line-height: 30px;
      display: inline-block;
      -webkit-transform: translateX(-500px);
      transform: translateX(-500px);
  }
  .slider h2, .slider .button {
      -webkit-transition: opacity 800ms, -webkit-transform 800ms;
      transition: transform 800ms, opacity 800ms;
      -webkit-transition-delay: 1s; /* Safari */
      transition-delay: 1s;
  }
  /* Next and previous button */ 
  .control {
      position: absolute;
      top: 50%;
      width: 50px;
      height: 50px;
      margin-top: -25px;
      z-index: 55;
  }
  .control label {
      z-index: 0;
      display: none;
      text-align: center;
      line-height: 50px;
      font-size: 50px;
      color: #FFF;
      cursor: pointer;
      opacity: 0.2;
  }
  .control label:hover {
     opacity: 0.5;
  }
  .next {
    right: 1%;
  }
  .previous {
    left: 1%;
  }
  
  /* Slider pagination */ 
  .slider-pagination {
      position: absolute;
      bottom: 20px;
      width: 100%;
      left: 0;
      text-align: center;
      z-index: 1000;
  }
  .slider-pagination label {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      display: inline-block;
      background: rgba(255,255,255,0.2);
      margin: 0 2px;
      border: solid 1px rgba(255,255,255,0.4);
      cursor: pointer;
      }
      
  /* Slider control active css */
  .slide-radio1:checked ~ .next .numb2, 
  .slide-radio2:checked ~ .next .numb3, 
  .slide-radio3:checked ~ .next .numb4, 
  .slide-radio2:checked ~ .previous .numb1, 
  .slide-radio3:checked ~ .previous .numb2, 
  .slide-radio4:checked ~ .previous .numb3 {
      display: block;
      z-index: 1
  }
  /* Slider pagination active css */
  .slide-radio1:checked ~ .slider-pagination .page1, 
  .slide-radio2:checked ~ .slider-pagination .page2, 
  .slide-radio3:checked ~ .slider-pagination .page3, 
  .slide-radio4:checked ~ .slider-pagination .page4 {
      background: rgba(255,255,255,1)
  }
  
  /* css for sliding  effect when you click on control button*/
  .slide-radio1:checked ~ .slider {
      -webkit-transform: translateX(0%);
      transform: translateX(0%);
  }
  .slide-radio2:checked ~ .slider {
      -webkit-transform: translateX(-100%);
      transform: translateX(-100%);
  }
  .slide-radio3:checked ~ .slider {
      -webkit-transform: translateX(-200%);
      transform: translateX(-200%);
  }
  .slide-radio4:checked ~ .slider {
      -webkit-transform: translateX(-300%);
      transform: translateX(-300%);
  }
  
  .slide-radio1:checked ~ .slide1 h2, 
  .slide-radio2:checked ~ .slide2 h2, 
  .slide-radio3:checked ~ .slide3 h2, 
  .slide-radio4:checked ~ .slide4 h2, 
  .slide-radio1:checked ~ .slide1 .button, 
  .slide-radio2:checked ~ .slide2 .button, 
  .slide-radio3:checked ~ .slide3 .button, 
  .slide-radio4:checked ~ .slide4 .button {
      -webkit-transform: translateX(0);
      transform: translateX(0);
      opacity: 1
  }
  
@media only screen and (max-width: 767px) {
  .slider h2 {
      font-size: 20px;
  }
  .slider > div {
      padding: 0 2%
  }
  .control label {
      font-size: 35px;
  }
  .slider .button {
      padding: 0 30px;
  }

<div class="css-slider-wrapper">
    
    <input type="radio" name="slider" class="slide-radio1" checked id="slider_1">
    <input type="radio" name="slider" class="slide-radio2" id="slider_2">
    <input type="radio" name="slider" class="slide-radio3" id="slider_3">
    <input type="radio" name="slider" class="slide-radio4" id="slider_4">
    
    
    <div class="slider-pagination">
        
        <label for="slider_1" class="page1"></label> 
        <label for="slider_2" class="page2"></label>
        <label for="slider_3" class="page3"></label>
        <label for="slider_4" class="page4"></label>
    </div>
    
    <div class="next control">
        <label for="slider_1" class="numb1"><i class="fa fa-arrow-circle-right"></i></label>
        <label for="slider_2" class="numb2"><i class="fa fa-arrow-circle-right"></i></label>
        <label for="slider_3" class="numb3"><i class="fa fa-arrow-circle-right"></i></label>
        <label for="slider_4" class="numb4"><i class="fa fa-arrow-circle-right"></i></label>
    </div>
    <div class="previous control">
        <label for="slider_1" class="numb1"><i class="fa fa-arrow-circle-left"></i></label>
        <label for="slider_2" class="numb2"><i class="fa fa-arrow-circle-left"></i></label>
        <label for="slider_3" class="numb3"><i class="fa fa-arrow-circle-left"></i></label>
        <label for="slider_4" class="numb4"><i class="fa fa-arrow-circle-left"></i></label>
    </div>
    
    
    <div class="slider slide1">
        <div>
            <img src="http://fillmurray.com/801/450"></img>
        </div>
    </div>
    <div class="slider slide2">
        <div>
            <img src="http://fillmurray.com/801/450"></img>
        </div>
    </div>
    <div class="slider slide3">
        <div>
            <img src="http://fillmurray.com/801/450"></img>
        </div>
    </div>
    <div class="slider slide4">
        <div>
            <img src="http://fillmurray.com/801/450"></img>
        </div>
    </div>
</div>

推荐答案

你几乎在那里。只有一些转移缺失:

You were almost there. There were a few transitions missing only:

 .slide-radio1:checked ~ .control.previous {
    display: none;
  }
  .slide-radio1:checked ~ .control.next:hover ~.slider {
    -webkit-transform: translateX(-10%);
    transform: translateX(-10%);
  }

  .slide-radio2:checked ~ .control.next:hover ~.slider {
    -webkit-transform: translateX(-110%);
    transform: translateX(-110%);
  }
  .slide-radio2:checked ~ .control.previous:hover ~.slider {
    -webkit-transform: translateX(-90%);
    transform: translateX(-90%);
  }
  .slide-radio3:checked ~ .control.next:hover ~.slider {
    -webkit-transform: translateX(-210%);
    transform: translateX(-210%);
  }
  .slide-radio3:checked ~ .control.previous:hover ~.slider {
    -webkit-transform: translateX(-190%);
    transform: translateX(-190%);
  }
  .slide-radio4:checked ~ .control.next {
    display: none;
  }
  .slide-radio4:checked ~ .control.previous:hover ~.slider {
    -webkit-transform: translateX(-290%);
    transform: translateX(-290%);
  }


  .slide-radio1:checked ~ .control .numb1 {
    display: inline-block;
  }
  .slide-radio2:checked ~ .control .numb2 {
    display: inline-block;
  }
  .slide-radio3:checked ~ .control .numb3 {
    display: inline-block;
  }
  .slide-radio4:checked ~ .control .numb4 {
    display: inline-block;
  }



我也不得不更改图标 code>和 N 个字符。我没有这些图标字体。

I also had to change icons with P and N characters. I didn't have those icon fonts.

/* Slider wrapper*/
  .css-slider-wrapper {
      background: #FFF;
  }
  /* Slider */
  .slider {
      width: 100%;
      height: 100%;
      background: red;
      position: absolute;
      left: 0;
      top: 0;
      z-index: 0;
      
      -webkit-transition: -webkit-transform 1600ms;
      transition: -webkit-transform 1600ms, transform 1600ms;
      -webkit-transform: scale(1);
      transform: scale(1);
      }
  /* each slide background color */ 
  .slide1 {
      background: #00bcd7;
      left: 0;
  }
  .slide2 {
      background: #009788;
      left: 100%
  }
  .slide3 {
      background: #ff5608;
      left: 200%
  }
  .slide4 {
      background: #607d8d;
      left: 300%;
  }
  /* Slider inner content */
  .slider h2 {
      color: #FFF;
      font-weight: 900;
      text-transform: uppercase;
      font-size: 45px;
      line-height: 120%;
      opacity: 0;
      -webkit-transform: translateX(500px);
      transform: translateX(500px);
  }
  .slider img {
    height: 100%;
    width: 100%;
    object-fit: cover;
  }
  .slider .button {
      color: #FFF;
      padding: 5px 50px;
      background: rgba(255,255,255,0.3);
      text-decoration: none;
      opacity: 0;
      font-size: 15px;
      line-height: 30px;
      display: inline-block;
      -webkit-transform: translateX(-500px);
      transform: translateX(-500px);
  }
  .slider h2, .slider .button {
      -webkit-transition: opacity 800ms, -webkit-transform 800ms;
      transition: transform 800ms, opacity 800ms;
      -webkit-transition-delay: 1s; /* Safari */
      transition-delay: 1s;
  }
  /* Next and previous button */ 
  .control {
      position: absolute;
      top: 50%;
      width: 50px;
      height: 50px;
      margin-top: -25px;
      z-index: 55;
  }
  .control label {
      z-index: 0;
      text-align: center;
      line-height: 50px;
      font-size: 50px;
      color: #FFF;
      cursor: pointer;
      opacity: 0.2;
    display: none;
  }
  .control:hover label {
     opacity: 0.5;
  }
  .next {
    right: 1%;
  }
  .previous {
    left: 1%;
  }
  
  /* Slider pagination */ 
  .slider-pagination {
      position: absolute;
      bottom: 20px;
      width: 100%;
      left: 0;
      text-align: center;
      z-index: 1000;
  }
  .slider-pagination label {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      display: inline-block;
      background: rgba(255,255,255,0.2);
      margin: 0 2px;
      border: solid 1px rgba(255,255,255,0.4);
      cursor: pointer;
      }
      

  /* Slider pagination active css */
  .slide-radio1:checked ~ .slider-pagination .page1, 
  .slide-radio2:checked ~ .slider-pagination .page2, 
  .slide-radio3:checked ~ .slider-pagination .page3, 
  .slide-radio4:checked ~ .slider-pagination .page4 {
      background: rgba(255,255,255,1)
  }
  
  /* css for sliding  effect when you click on control button*/
  .slide-radio1:checked ~ .slider {
      -webkit-transform: translateX(0%);
      transform: translateX(0%);
  }
  .slide-radio2:checked ~ .slider {
      -webkit-transform: translateX(-100%);
      transform: translateX(-100%);
  }
  .slide-radio3:checked ~ .slider {
      -webkit-transform: translateX(-200%);
      transform: translateX(-200%);
  }
  .slide-radio4:checked ~ .slider {
      -webkit-transform: translateX(-300%);
      transform: translateX(-300%);
  }
  
  .slide-radio1:checked ~ .slide1 h2, 
  .slide-radio2:checked ~ .slide2 h2, 
  .slide-radio3:checked ~ .slide3 h2, 
  .slide-radio4:checked ~ .slide4 h2, 
  .slide-radio1:checked ~ .slide1 .button, 
  .slide-radio2:checked ~ .slide2 .button, 
  .slide-radio3:checked ~ .slide3 .button, 
  .slide-radio4:checked ~ .slide4 .button {
      -webkit-transform: translateX(0);
      transform: translateX(0);
      opacity: 1
  }
  
  .slide-radio1:checked ~ .control.previous {
    display: none;
  }
  .slide-radio1:checked ~ .control.next:hover ~.slider {
    -webkit-transform: translateX(-10%);
    transform: translateX(-10%);
  }

  .slide-radio2:checked ~ .control.next:hover ~.slider {
    -webkit-transform: translateX(-110%);
    transform: translateX(-110%);
  }
  .slide-radio2:checked ~ .control.previous:hover ~.slider {
    -webkit-transform: translateX(-90%);
    transform: translateX(-90%);
  }
  .slide-radio3:checked ~ .control.next:hover ~.slider {
    -webkit-transform: translateX(-210%);
    transform: translateX(-210%);
  }
  .slide-radio3:checked ~ .control.previous:hover ~.slider {
    -webkit-transform: translateX(-190%);
    transform: translateX(-190%);
  }
  .slide-radio4:checked ~ .control.next {
    display: none;
  }
  .slide-radio4:checked ~ .control.previous:hover ~.slider {
    -webkit-transform: translateX(-290%);
    transform: translateX(-290%);
  }

  
  .slide-radio1:checked ~ .control .numb1 {
    display: inline-block;
  }
  .slide-radio2:checked ~ .control .numb2 {
    display: inline-block;
  }
  .slide-radio3:checked ~ .control .numb3 {
    display: inline-block;
  }
  .slide-radio4:checked ~ .control .numb4 {
    display: inline-block;
  }

<div class="css-slider-wrapper">
    
    <input type="radio" name="slider" class="slide-radio1" checked id="slider_1">
    <input type="radio" name="slider" class="slide-radio2" id="slider_2">
    <input type="radio" name="slider" class="slide-radio3" id="slider_3">
    <input type="radio" name="slider" class="slide-radio4" id="slider_4">
    
    
    <div class="slider-pagination">
      <label for="slider_1" class="page1"></label> 
      <label for="slider_2" class="page2"></label>
      <label for="slider_3" class="page3"></label>
      <label for="slider_4" class="page4"></label>
    </div>
    

  <div class="control previous">
    <label for="slider_1" class="numb2"> P </label>
    <label for="slider_2" class="numb3"> P </label>
    <label for="slider_3" class="numb4"> P </label>
  </div>
  <div class="control next">
    <label for="slider_2" class="numb1"> N </label>
    <label for="slider_3" class="numb2"> N </label>
    <label for="slider_4" class="numb3"> N </label>
  </div>

  <div class="slider slide1">
    <img src="http://fillmurray.com/801/450" />
  </div>
  <div class="slider slide2">
    <img src="http://fillmurray.com/800/450" />
  </div>
  <div class="slider slide3">
    <img src="http://fillmurray.com/799/450" />
  </div>
  <div class="slider slide4">
    <img src="http://fillmurray.com/798/450" />
  </div>
</div>

这篇关于css基于html的滑块/悬浮显示下一张幻灯片的一部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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