2016-04-26 12 views
1

左に移動するが、私は最後の要素を取得するときには、左側に移動します。CSSスライダーは、私はCSSでスライダーを作成している

/*Slider */ 
 

 
input[name="slider-select-element"] { 
 
    display: none; 
 
} 
 
#slider-arrows { 
 
    margin: -10% auto 0 auto; 
 
    width: 80%; 
 
} 
 
#slider-box { 
 
    height: 100%; 
 
    width: 300%; 
 
} 
 
#slider-container { 
 
    height: 250px; 
 
    margin: 0 auto; 
 
    width: 80%; 
 
    overflow: hidden; 
 
    text-align: left; 
 
} 
 
.element-1, 
 
.element-2, 
 
.element-3 { 
 
    min-height: 250px; 
 
    max-height: 70%; 
 
    width: 100%; 
 
} 
 
.element-1 { 
 
    background-color: blue; 
 
} 
 
.element-2 { 
 
    background-color: red; 
 
} 
 
.element-3 { 
 
    background-color: green; 
 
} 
 
.slider-element { 
 
    float: left; 
 
    width: 33.333% 
 
} 
 
#element1:checked ~ #slider-arrows label:nth-child(2), 
 
#element2:checked ~ #slider-arrows label:nth-child(3), 
 
#element3:checked ~ #slider-arrows label:nth-child(1) { 
 
    display: block; 
 
    float: right; 
 
} 
 
#element1:checked ~ #slider-arrows label:nth-child(3), 
 
#element2:checked ~ #slider-arrows label:nth-child(1), 
 
#element3:checked ~ #slider-arrows label:nth-child(2) { 
 
    display: block; 
 
    float: left; 
 
} 
 
#element1:checked ~ #slider-arrows label:nth-child(2):before, 
 
#element2:checked ~ #slider-arrows label:nth-child(3):before, 
 
#element3:checked ~ #slider-arrows label:nth-child(1):before { 
 
    color: black; 
 
    content: "\f054"; 
 
    line-height: 1; 
 
    font-family: FontAwesome; 
 
} 
 
#element1:checked ~ #slider-arrows label:nth-child(3):before, 
 
#element2:checked ~ #slider-arrows label:nth-child(1):before, 
 
#element3:checked ~ #slider-arrows label:nth-child(2):before { 
 
    color: black; 
 
    content: "\f053"; 
 
    line-height: 1; 
 
    font-family: FontAwesome; 
 
} 
 
#element1:checked ~ #slider-container #slider-box { 
 
    margin-left: 0; 
 
} 
 
#element2:checked ~ #slider-container #slider-box { 
 
    margin-left: -100%; 
 
} 
 
#element3:checked ~ #slider-container #slider-box { 
 
    margin-left: -200%; 
 
} 
 
#slider-arrows label { 
 
    color: transparent; 
 
    cursor: pointer; 
 
    display: none; 
 
    font-size: 2rem; 
 
    height: 20px; 
 
    width: 20px; 
 
} 
 
#slider-box { 
 
    /*chrome y safari */ 
 
    -webkit-transition: all 0.75s ease; 
 
    /*mozilla */ 
 
    -moz-transition: all 0.75s ease; 
 
    /* I explorer */ 
 
    -ms-transition: all 0.75s ease; 
 
    /*Opera*/ 
 
    -o-transition: all 0.75s ease; 
 
    transition: all 0.75s ease; 
 
}
<!-- Slider --> 
 
<section> 
 

 
    <!-- Controles --> 
 
    <input type="radio" name="slider-select-element" id="element1" checked="checked" /> 
 
    <input type="radio" name="slider-select-element" id="element2" /> 
 
    <input type="radio" name="slider-select-element" id="element3" /> 
 
    <!-- Terminan Controles --> 
 

 
    <div id="slider-container"> 
 
    <div id="slider-box"> 
 
     <div class="slider-element"> 
 
     <article class="element-1"> 
 

 
     </article> 
 
     </div> 
 
     <div class="slider-element"> 
 
     <article class="element-2"> 
 

 
     </article> 
 
     </div> 
 
     <div class="slider-element"> 
 
     <article class="element-3"> 
 

 
     </article> 
 
     </div> 
 
    </div> 
 
    </div> 
 

 
    <div id="slider-arrows"> 
 
    <label for="element1"></label> 
 
    <label for="element2"></label> 
 
    <label for="element3"></label> 
 
    </div> 
 

 
</section>

私は2つの解決策を見つけたが、それらが正解であれば、私は知りません。

.slider-containermargin-left: 10%に1-追加。

slider-arrow<section>position:absolutemargin-left:10%position:relaviteを2-追加します。

私には何が欠けていますか?

答えて

0

ビットのためにそれをいじりの後、私はあなたの最初の提案で行くと思います。ここでfiddleです。これに

margin: 0 auto; 

私は基本的には、この行に変更

margin: 0 auto auto 10%; 

これを単にスライダーコンテナとページの左側の間に10%の幅があることを保証します。あなたのスライダーコンテナの幅が80%になるだろうされている場合は、それが中心に想定し、それぞれの側は、10%の幅を持っている意味があります。したがって、すべてがうまく並ぶだろう。位置を調整する必要はありません。

関連する問題