箭头纯 CSS 图片滑块

Arrows pure CSS image slider

目前只有中间幻灯片的左侧箭头指向左侧正确,右侧箭头指向右侧正确。但是当你在左或右滑动箭头时,我无法设法使箭头指向正确的方向。

谢谢!

http://codepen.io/anon/pen/WvZGdb

HTML

<div id="slides">
 <input type="radio" name="slider" id="slide1" class="set"/>
 <input checked type="radio" name="slider" id="slide2" class="set"/>
 <input type="radio" name="slider" id="slide3" class="set"/>

 <div class="mask">
  <div class="overflow">
   <div class="slide"><img src="../images/work.png"/></div>
   <div class="slide"><img src="../images/work.png"/></div>
   <div class="slide"><img src="../images/work.png"/></div>
  </div>
 </div>

<div id="controls" onclick="">
 <label for="slide1">1</label>
 <label for="slide2">2</label>
 <label for="slide3">3</label>
</div>
</div>
</div>

CSS

input.set { 
display:none; 
}

#slide1:checked ~ .mask .overflow { margin-left:0; }
#slide2:checked ~ .mask .overflow { margin-left:-640px; }
#slide3:checked ~ .mask .overflow { margin-left:-1280px; }

#slides { 
margin:auto; 
width:760px; 
position:relative;
background-color:#096;
}

#slides .mask { 
width:640px;
overflow:hidden;
margin:auto;
}

#slides .overflow { 
width:300%;
-webkit-transition: ease-out 0.5s; 
}

#slides .slide { 
width: 640px;
height:480px; 
float:left; 
background: silver;
}

#controls label { 
display:none; 
width:60px; 
height:60px; 
opacity:0.5; 
position:absolute; 
top:50%; 
margin-top:-30px; 
cursor:pointer; 
background:#0C0;
}

#controls label:hover { 
opacity:1; 
}

#slide1:checked ~ #controls label:nth-child(2), #slide2:checked ~ #controls label:nth-child(3), #slide3:checked ~ #controls label:nth-child(2) { right:0; display:block; }
#slide2:checked ~ #controls label:nth-child(1), #slide3:checked ~ #controls label:nth-child(2) { left:0; display:block; }

我不知道我是否猜对了,但我可以试试。根据我的阅读,您希望最后一张幻灯片上的箭头向后 "shift"(“<”)。

此解决方案的方法很少。

第一种方式

你在最后一个 div 上添加一个 class 并简单地旋转 180 度。

#slide3:checked ~ #controls label:nth-child(2) {
  transform: rotate(180deg);}

第二种方式

与第一种方法一样,您为最后一个场景添加 class,然后用矩阵翻转它。

#slide3:checked ~ #controls label:nth-child(2) {
  transform: matrix(-1,0,0,1,0,0);}

第三条路

对我来说也许是最好的方式。您可以将 :before 和 content:"" 用于字母、图标或标签符号。所以标签是空的,你 "fill" 它们之前。

浏览器支持

前两种方式需要使用前缀。

  • IE > 9(IE 9 需要前缀)
  • Firefox > 3(FF < 15 需要前缀)
  • Chrome(Chrome < 35 需要前缀)
  • Safari(需要前缀)
  • Opera > 10(Opera < 22 需要前缀)

更多信息Can I use