-moz-transition:left
私はいじり始めましたが、きれいなページから始めることを好みます。
飛び出す最初の問題は、-moz-transition:
そのまま省略されることです-o-transition:
。私は今とても疲れていて、本当にそれを調べるのに悩むことはできませんが、最後にチェックしたとき、すべてのブラウザーにはまだ独自のプレフィックスが必要であり、IE(9)はまだトランジションをサポートしていません。
編集:どうやらFF16以降、-moz-プレフィックスは必要ありません。
第二に、CSS宣言で、移行するスタイルプロパティを指定していません。すなわち-moz-transition:left 1s;
。
第三に、情報の有用性はわずかだと思ったので、詳細を思い出せませんが、引数を運ぶsetTimeoutについては、遍在的に安定していないと読んだことを思い出します。どこかでdeveloper.mozillaで読んだことがあるかもしれません。このあたりのどこかにいたかもしれません。
編集:通常はIE固有です。私はまだ単純な無名関数を使用します。
私が言うように、私はコードをいじり始めましたが、書き直したいと思います。
私も言うように、私はとても疲れている(睡眠の近く)ので、今はそれをしませんが、明日はそうするかもしれません。それまでの間、これら3つのポイントを修正してみてください。
アップデート
投稿編集(私は-moz-
接頭辞について正しかった:-)
私は自分自身を助けることができませんでしたJsFiddle
HTML
<div>
<input type="checkbox" id="overflowHidden"><p>overflow: hidden</p>
<button id="next">Next</button>
</div>
<div class="slider">
<ul id="slider" class="a">
<li id="frame3"><p>three</p></li>
<li id="frame1"><p>one</p></li>
<li id="frame2"><p>two</p></li>
</ul>
</div>
CSS
input {
display:inline-block;
margin:10px 0px 0px 10px;
}
button {
display:inline-block;
margin:0px 0px 0px 10px;
vertical-align:2px;
}
p {
display:inline-block;
margin:0px 0px 0px 5px;
vertical-align:2px;
}
.slider {
margin: 2em auto;
padding: 0;
width: 200px;
height: 200px;
}
#slider {
margin: 0;
padding: 0;
list-style-type: none;
position: relative;
width: 100%;
height: 100%;
}
.slider li {
margin: 0;
padding: 0;
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0%;
-o-transition:left 1s ease-in-out;
-webkit-transition:left 1s ease-in-out;
-moz-transition:left 1s ease-in-out;
transition:left 1s ease-in-out;
}
#frame1 {
background:#e08080;
}
#frame2 {
background:#e0e080;
}
#frame3 {
background:#8080e0;
}
#slider.a #frame1{
left: 0%;
}
#slider.a #frame2{
left: -100%;
}
#slider.a #frame3{
left: 0%;
}
#slider.b #frame1{
left: 0%;
}
#slider.b #frame2{
left: 0%;
}
#slider.b #frame3{
left: -100%;
}
#slider.c #frame1{
left: -100%;
}
#slider.c #frame2{
left: 0%;
}
#slider.c #frame3{
left: 0%;
}
JavaScript
(function () {
window.addEventListener("load", function () {
var slider = document.getElementById("slider");
document.getElementById("next").addEventListener("click", function () {
var c = slider.getAttribute("class");
c = c === "a" ? "b" : c === "b" ? "c" : c === "c" ? "a" : c;
slider.setAttribute("class", c);
slider.appendChild(slider.getElementsByTagName("li")[0]);
}, false);
// adding a toggle for overflow just for demo
document.getElementById("overflowHidden").addEventListener("change", function () {
if (this.checked) {
slider.style.overflow = "hidden";
} else {
slider.removeAttribute("style");
}
}, false);
}, false);
}());
もちろん、この種のことを達成するための多くの異なる方法があります。原則として、私は特定の方法を使用して特定の方法で何かを機能させるのではなく、自分が欲しいものを想像し、そこから構築することから始めます。
JavaScriptによって行われる作業の大部分は、複数の要素を使用せずに、@keyframesを使用してCSSに渡すことができます。しかし、それは常に正確な状況に依存しますね?
ただし、必要なのは2つの色のパネルだけであり、そのうちの1つが背景である可能性があることを考慮してください。これにより、1つの要素のみを移動する必要があります(スライドさせて、背景を同じ色に設定し、トランジションなしで送り返し、色を変更すると、再びスライドできるようになります)。
学習のための小さなプロジェクトはとても楽しいですが(私は知っています)、それらは少し制御不能になる可能性があり、時には私たちが学んだすべてのものを取り除き、基本に戻るのは良いことです。
私は本当にひいきにするつもりはありません。幸運 :-)