2013-09-29 7 views
1

Вместо реализации плагина слайдера я хотел бы использовать CSS/jquery для чередования фоновых изображений DIV (эффект fadein/fadeout или slide). В настоящее время мой код, как показано ниже:DIV - Альтернативные фоновые изображения

HTML

<div class="block backpic"> 
</div> 

CSS

.block { 

    display: block; 
     margin-right: auto; 
    margin-left: auto; 
    clear: both; 
    box-sizing: border-box; 
    padding-left: 20px; 
    padding-right: 20px; 
    width: 100%; 
    overflow: hidden; 
} 


.backpic { 
    height: 638px; 
    background-image: url(../images/picture1.jpg); 
    background-size: cover; 
} 

Что я должен сделать, чтобы чередовать picture1 со второй картинкой? Большое спасибо за вашу помощь

+0

Хорошо, изменили код. Спасибо – Greg

ответ

4

Использование JQuery исчезать элемент из, чем изменить его background-image свойство, а затем исчезают в снова:

$('.block').fadeOut(300, function(){ 

    $(this).css('background-image', 'url(path/to/other/image.jpg)') 

    $(this).fadeIn(300); 

}); 

Если вам нужна подобная слайд-шоу цикличность анимации, используйте метод JavaScript setInterval, чтобы повторить код после определенного количества миллисекунд:

var images = [ 

    'path/to/image1.jpg', 
    'path/to/image2.jpg', 
    'path/to/image3.jpg' 

]; 

var index = 0; 

setInterval(change_up, 1000); 

function change_up(){ 

    index = (index + 1 < images.length) ? index + 1 : 0; 

    $('.block').fadeOut(300, function(){ 

    $(this).css('background-image', 'url('+ images[index] + ')') 

    $(this).fadeIn(300); 

    }); 
} 

Вот example

+0

Спасибо Shennan. На самом деле я должен был быть немного более конкретным. Я обновил свой вопрос, и я попытался применить ваш код (я заменил «.block» на .'backpic », но безуспешно. Знаете ли вы, почему? Большое спасибо – Greg

+0

Возможно, потому, что вам нужно использовать тот же синтаксис, что и CSS для фоновое изображение. В частности, директива 'url()'. Обновил код и предоставил скрипку. – shennan

+0

Спасибо Shennnan. Глядя на ваш jsfiddle изображения просто fadein/out 1x. Можно ли постоянно исчезать/исчезать дайте своего рода эффект «слайдера»? Спасибо – Greg

0

попробуйте использовать четных и нечетных селекторы

.block:nth-child(odd) { 
background-image: 
height: 638px; 
    background-image: url(../images/picture1.jpg); 
    background-size: cover; 
} 

.block:nth-child(even) { 
background-image: 
height: 638px; 
    background-image: url(../images/pictureNew.jpg); 
    background-size: cover; 
} 
0

имеют ядро ​​слайдер класса

.slider{ 
    opacity:1 
    -webkit-transition:opacity 500ms; 
    -moz-transition:opacity 500ms; 
    -ms-transition:opacity 500ms; 
    transition:opacity 500ms; 
} 

.hideSlide{ 
    opacity:0 
} 

Это вызовет замирание непрозрачности. Затем вы можете изменить непрозрачность с помощью класса скрыть слайд и при прозрачном изменении фонового изображения. Затем удалите класс скрытого слайда, и он снова исчезнет.

В качестве альтернативы вы могли бы получить пучок разделов, расположенных поверх друг друга, затухающих с увеличением длины 500 мс 1000 мс, 1500 мс и т. Д., Чтобы выставить их зрителю.

+0

Спасибо Брэндон. Однако не знаете, как это реализовать? Как бы выглядел код html? Также, где бы вы установили 100% ширину и фон-си ze: cover? Благодаря – Greg

+0

ваш HTML будет выглядеть как этот <раздел класса = «слайдер»> ИЛИ

все ваши CSS будет идти в класс слайдер. Единственное, что сделает класс hideSlide, это скрыть слайд. –

Смежные вопросы