我已经回来了,google-fu什么都没带给我。
我正在尝试创建一种图像库,我需要在我的滑块上动态重置div,但我没有运气,这是过程:
我的问题是,它们似乎完全重置为原始状态,好像ID更改从未发生过,有什么想法吗?
这是JSFiddle
这是违规代码:
$('.navigationLeft').click(function() {
console.log("yay");
$( '#left' ).animate({
marginLeft: selWidth
}, 500, "linear", function() {
// Animation complete.
$( '#center' ).attr('id', 'temp');
$( '#left' ).attr('id', 'center');
$( '#center' ).attr('id', 'left');
$( '#left' ).css('width', '900px');
$( '#left' ).css('height', '400px');
$( '#left' ).css('overflow', 'hidden');
$( '#left' ).css('position', 'relative');
$( '#left' ).css('left:', '-900px');
$( '#left' ).css('overflow', 'hidden');
$( '#left' ).css('z-index', '2');
$( '#center' ).css('width', '900');
$( '#center' ).css('height', '400');
$( '#center' ).css('position', 'absolute');
$( '#center' ).css('overflow', 'hidden');
$( '#center' ).css('z-index', '1');
});
//reset positions and change images
});
答案 0 :(得分:2)
</img>
标记不是有效标记,因为图片没有 结束标记。
另外,你可能会认为jQuery更有趣!
我的建议是不要创建<img>
标签,让JavaScript为我们做,我们毕竟使用图像数组URL。
而不是jQuery的.animate()
,使用CSS transition
!
jQuery(function($) {
const gallery = {
one: [ // (P.S: In HTML use data-gallery="one")
'http://placehold.it/900x400/0bf/fff&text=1',
'http://placehold.it/900x400/f0b/fff&text=2',
'http://placehold.it/900x400/bf0/fff&text=3',
'http://placehold.it/900x400/b0f/fff&text=4',
], // you can add more name:[] sets for other galleries
};
$('[data-gallery]').each(function(i, gal) {
const name = $(gal).data('gallery');
if (!Object.prototype.hasOwnProperty.call(gallery, name)) return;
const $slides = $(gallery[name].map(url => $('<img>', {src: url})[0]));
const tot = $slides.length; // Store how many images we have
let c = 0; // Current slide Counter
$('.slides', gal).append($slides); // Append created slides
$(".prev, .next", gal).on('click', function() {
c = ($(this).is('.next') ? ++c : --c) < 0 ? tot - 1 : c % tot;
$slides.css({
transform: `translateX(-${c*100}%)`
})
});
});
});
/*QuickReset*/*{margin:0;box-sizing:border-box}html,body{min-height:100%;font:14px/1.4 sans-serif;}
/* Gallery */
[data-gallery] .slides {
display: flex;
position: relative;
overflow: hidden;
height: 170px;
}
[data-gallery] .slides > img {
width: 100%;
height: 100%;
object-fit: cover;
transition: 0.4s;
}
<div data-gallery="one" class="gallery">
<div class="slides"></div>
<button class="prev" type="button">PREV</button>
<button class="next" type="button">NEXT</button>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
P.S:作为旁注,以下
$( '#left' ).css('width', '900px');
$( '#left' ).css('height', '400px');
$( '#left' ).css('overflow', 'hidden');
有点冗长。而是传递对象文字{}
,如:
$( '#left' ).css({width:900, height:400, overflow:"hidden"});