Bootstrap'in atlıkarınca eklentisinin farklı yönlerini anlattığınız etkiyi düşünüyorum. değil aktif ürün display: none
varken
Etkin öğeler Bu, tüm öğeleri display: block
veren ve daha sonra örtüşen öğeler sonuçlanan top: 0
ve left: 0
ile absolute
için position
ayarlayarak çözülebilir display: block
var. opacity: 0;
ayarı, bunları varsayılan olarak görünmez yapar.
Eksi: position: absolute
ait
.carousel-inner > .item {
opacity: 0;
top: 0;
left: 0;
width: 100%;
display: block;
position: absolute;
}
Bir problem kap height
almaz olmasıdır. Birincisi, ilk öğenin position
ayarını relative
olarak ayarlayarak çözülebilir (zaten doğru konumu ekliyor). Az kodunda, aşağıda belirtildiği gibidir:
.carousel-inner > .item {
:first-of-type {
position:relative;
}
}
Bootstrap uzayda öğenin konumunu değiştirmek için translate3d
s kullanır. Bu dönüşümlere ihtiyacınız olmayacak, sıfırla. Az yararlanan kod aşağıda gösterilen:
.carousel-inner > .item {
transform: translate3d(0,0,0) !important;
}
CSS geçişleri ekleme ve jQuery ile CSS sınıflarını kaldırarak tetiklenir. Bu sınıf değişimleri arasındaki süre, karusel eklenti kodunda kodlanmıştır (Carousel.TRANSITION_DURATION = 600
). Yani, 600 ms sonra, bir öğe aktif hale gelir (.active sınıfına sahip). Css transition-duration
, 0.6 saniyeden daha büyük ise beklenmedik davranış nedeni budur. aşağıdaki gibi
CSS sınıf değişiklikleri
şunlardır:
aktif madde sınıfını .active
var ->.active.left
- Sıradaki parça klası yok > yok ->.next.left
->.active
Yani .active.left
ve .next.left
önemlidir (veya geriye doğru kaydırdığınızda .prev.right
ve .active.right
).
Tüm görüntüler zaten yığınlanmış olduğundan, 'u aynı anda değiştirebildiğimizden, yığınta görüntüyü görünür hale getirmek için z-index
özelliğini kullanabilirsiniz.
.carousel-control {
z-index:4;
}
hep birlikte koymak, this demo sonuçları görmek:
.carousel-inner {
> .next.left {
transition: opacity 0.6s ease-in-out;
opacity: 1;
z-index:2;
}
> .active.left {
z-index:1;
}
}
kontrolleri yanı kullanılması görünür olduğundan emin olmak için: Bir sonraki slaytta solmaya aşağıdaki Az kodu kullanabilirsiniz aşağıdaki az kodu kullandığım:
.carousel-inner {
> .item {
opacity: 0;
top: 0;
left: 0;
width: 100%;
display: block;
position: absolute;
z-index:0;
transition: none;
transform: translate3d(0,0,0) !important;
&:first-of-type {
position:relative;
}
}
> .active {
opacity: 1;
z-index:3;
}
> .next.left,
> .prev.right {
transition: opacity 0.6s ease-in-out;
opacity: 1;
left: 0;
z-index:2;
}
> .active.left,
> .active.right {
z-index:1;
}
}
.carousel-control {
z-index:4;
}
yukarıdaki kod aşağıdaki komutla CSS içine Less autoprefixer plugin eklenti ile derlenebilir:
lessc --autoprefix="Android 2.3,Android >= 4,Chrome >= 20,Firefox >= 24,Explorer >= 8,iOS >= 6,Opera >= 12,Safari >= 6' code.less
çıkış verdiğinde:
.carousel-inner > .item {
opacity: 0;
top: 0;
left: 0;
width: 100%;
display: block;
position: absolute;
z-index: 0;
-webkit-transition: none;
-o-transition: none;
transition: none;
-webkit-transform: translate3d(0, 0, 0) !important;
transform: translate3d(0, 0, 0) !important;
}
.carousel-inner > .item:first-of-type {
position: relative;
}
.carousel-inner > .active {
opacity: 1;
z-index: 3;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
-webkit-transition: opacity 0.6s ease-in-out;
-o-transition: opacity 0.6s ease-in-out;
transition: opacity 0.6s ease-in-out;
opacity: 1;
left: 0;
z-index: 2;
}
.carousel-inner > .active.left,
.carousel-inner > .active.right {
z-index: 1;
}
.carousel-control {
z-index: 4;
}
Muhtemelen orijinal geçişler sıfırlamak da görmelisiniz: http://bassjobsen.weblogs.fm/change-bootstraps-carousel-animantion/ –