Скрипт плавной смены background-image в div
Очень нужен скрипт скрипт плавной смены background-image в div.
Найти нигде не удалось. Если кто-нибудь знает как это можно сделать(если это вообще возможно), огромная просьба помочь )) |
Что есть "плавная смена"? Как она выглядит?
|
Самая обычная смена картинок(прозрачность плавно меняется)
|
Вам нужно при клике или просто через время?
Через анимейт пробовали? Пример:
$('.img').animate({'opacity':'0'},600,function(){
$(this).css('background-image':'url(image2.jpg)');
$(this).animate({'opacity':'1'},600);
});
|
Цитата:
Советую просто погуглить jquery slider или jqyery carousel, наверняка найдется что то подходящее. Например http://jquery.malsup.com/cycle/ там сразу демо с разными эффектами, в том числе и "затухания" |
hfts_rider,
Просто через время. Спасибо, подскажите, пожалуйста,а как сделать смену нескольких картинок и прицепить этот код к диву? krasovsky,Слайдер не подойдет у меня уже готова верстка и меняться должна именно фоновая картинка, а во всех слайдерах картинки картинками, а не фоном. Проблема в том , что я на джава скрипт умею делать только самые просты вещи. Это не заню как реализовать. |
(не забудь подключить jquery)
1) .csa-head = тот самый див с классом "csa-head" 2) imgHead = массив картинок, сюда впиши их расположение. 3) Где значения "200" это скорость появления и затухания. 4) Где значение "8000", это интервал через какой оно будет изменяться (8000 - это 8 секунд)
var imgHead = [
'images/imgCsaHead/img.jpg',
'images/imgCsaHead/img1.jpg',
'images/imgCsaHead/img2.jpg',
'images/imgCsaHead/img3.jpg'
], i=1;
function csaHead(){
if(i > (imgHead.length-1)){
$('.csa-head').animate({'opacity':'0'},200,function(){
i=1;
$('.csa-head').css({'background':'url('+imgHead[0]+')'});
});
$('.csa-head').animate({'opacity':'1'},200);
}else{
$('.csa-head').animate({'opacity':'0'},200,function(){
$('.csa-head').css({'background':'url('+imgHead[i]+')'});
i++;
});
$('.csa-head').animate({'opacity':'1'},200);
}
}
var intervalCsaHead = setInterval(csaHead,8000);
|
hfts_rider,
Огромное-преогромное спасибо!!! Все получилось. Остался один вопрос, их можно остановить после первого круга? Т.е. все картинки прошли и на последней остановилась анимация. |
Нужно просто остановить таймер.
var imgHead = [
'images/imgCsaHead/img.jpg',
'images/imgCsaHead/img1.jpg',
'images/imgCsaHead/img2.jpg',
'images/imgCsaHead/img3.jpg'
], i=1;
function csaHead(){
/* CSA head */
if(i > (imgHead.length-1)){
clearInterval(intervalCsaHead); // Остановка таймера
}else{
$('.csa-head').animate({'opacity':'0'},200,function(){
$('.csa-head').css({'background':'url('+imgHead[i]+')'});
i++;
});
$('.csa-head').animate({'opacity':'1'},200);
}
}
var intervalCsaHead = setInterval(csaHead,8000);
|
hfts_rider,
Спасибо!!!! |
Цитата:
|
Цитата:
|
Цитата:
Подключаю: <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> Что должно быть в div ? Может так: <div class="csa-head"><script> csaHead(); </script></div> |
egor8,
$(function() {
//сюда весь код из примера
});
|
<style>
.csa-head {width:300px;
height:150px;
background: url("http://javascript.ru/cat/list/mobile.jpg");
}
</style>
<div class="csa-head"></div>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
var imgHead = [
'http://javascript.ru/cat/list/donkey.gif',
'http://javascript.ru/cat/list/js.gif',
'http://javascript.ru/cat/list/project.jpg',
'http://javascript.ru/cat/list/appscript.png'
], i=1;
function csaHead(){
/* CSA head */
if(i > (imgHead.length-1)){
i = 0;
//clearInterval(intervalCsaHead); // Остановка таймера
}
$('.csa-head').animate({'opacity':'0'},1000,function(){
$('.csa-head').css({'background':'url('+imgHead[i]+')'});
i++;
});
$('.csa-head').animate({'opacity':'1'},1000);
}
var intervalCsaHead = setInterval(csaHead,3000);
</script>
|
Ребята у меня задача стоит просто, помогите...
Есть картинка в шапке logo.gif анимашка небольшая, после того как она отработает, на место неё должна встать другая статичная картинка logo_light.png. И только после перегрузки браузера, снова все повторяется. Пишу по аналогии поста, не срабатывает:
<style>
.csa-head {width:140px; height:150px; background: url("logo.gif");}
</style>
<div class="csa-head"></div>
Картинки лежат в этой же папке, где и код
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
var imgHead = [
'logo_light.png'
], i=1;
function csaHead(){
/* CSA head */
if(i > (imgHead.length-1)){
clearInterval(intervalCsaHead); // Остановка таймера
}else{
$('.csa-head').animate({'opacity':'0'},200,function(){
$('.csa-head').css({'background':'url('+imgHead[i]+')'});
i++;
});
$('.csa-head').animate({'opacity':'1'},200);
}
}
var intervalCsaHead = setInterval(csaHead,8000);
</script>
|
egor8,
<script>
$(function() {
$('.csa-head').delay(8000).animate({'opacity':'0'},200,function(){
$('.csa-head').css({'background':'url(logo_light.png)'}).animate({'opacity':'1'},200);
});
});
</script>
|
Все отлично! И еще письма почему-то не приходят на почту, приходится сюда смотреть самому. Хотя подписка есть.
|
Ребята подскажите! Как подключить к новым элементам
<style>
.csa-head {
background: url("/images/new/foto_index/IMG_1255-Panorama.jpg") no-repeat center;
z-index: 0;
min-height: 600px;
margin-top: -50px;
margin-right: 0;
margin-left: 0;
-moz-background-size: 100%; /* Firefox 3.6+ */
-webkit-background-size: 100%; /* Safari 3.1+ и Chrome 4.0+ */
-o-background-size: 100%; /* Opera 9.6+ */
background-size: 100%; /* Современные браузеры */
display: block;
background-size:cover;
}
</style>
background: url меняется через скрипт, но теряется все остальные данные, как их закрепить? |
Как закрепить CSS стиль ? почему-то меняется CSS после смены фона!
|
macik,
:-? |
Я что то спросил не так?
|
Цитата:
возможно, нужно исключить из скрипта и css, использование background:, а разбить всё на составляющие , типа background-image background-repeat и т.д. |
Цитата:
я сделал так.
<script>
var mas = [
'/images/new/foto_index/01.jpg',
'/images/new/foto_index/IMG_0875.jpg',
'/images/new/foto_index/IMG_0985.jpg'
], i=1;
function csaHead(){
if(i > (mas.length-1)){
$('#foto_index').animate({'opacity':'0'},500,function(){
document.getElementById('foto_index').style.backgroundImage="url('"+mas[0]+"')"
});
$('#foto_index').animate({'opacity':'1'},500);
}else{
$('#foto_index').animate({'opacity':'0'},500,function(){
document.getElementById('foto_index').style.backgroundImage="url('"+mas[i]+"')"
i++;
});
$('#foto_index').animate({'opacity':'1'},500);
}
}
var intervalCsaHead = setInterval(csaHead,8000);
</script>
у foto_index такие данные:
#foto_index{
background: url("/images/new/foto_index/01.jpg") no-repeat center;
z-index: -1;
min-height: 600px;
margin-top: -50px;
margin-right: 0;
margin-left: 0;
-moz-background-size: 100%; /* Firefox 3.6+ */
-webkit-background-size: 100%; /* Safari 3.1+ и Chrome 4.0+ */
-o-background-size: 100%; /* Opera 9.6+ */
background-size: 100%; /* Современные браузеры */
background-size:cover;
}
Но есть одно но! есть элемент надо этим дивом и вот когда картинка начинает исчезать и появляется то она перекрываете элемент меню который над ней ... Как заставить foto_index не менять свое положение z-index: вовремя анимации? |
Причину нашел. У меню индекс фиговый был ... :)
Анимация не нравится ... МОжете подсказать как сделать что бы картинки сменяли друг друга, а то получается что ФОН страницы сменяется на картинку и обратно ... |
macik,
z-index не менется ... но можно попробовать строка 20
$('#foto_index').css({"z-index" : -1}) }
|
Цитата:
|
Цитата:
Мне надо что бы картинка сменяла картинку ... как в этом шаблоне http://ironfit.ancorathemes.com или как тут на сайте http://tirol.org.ua в id="foto_01" |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
или сразу смена картинок с opacity эффектом |
Цитата:
|
Ну Да там меняется так как надо в 14 посте. Но одна проблема img можно масштабировать? что бы так как в примере http://ironfit.ancorathemes.com
|
Цитата:
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.carousel{
width: 100%;
position: relative;
}
.carousel img{
position: absolute;
width: 100%;
height: auto;
opacity: 0;
border-radius: 8px;
box-sizing: border-box;
border: #8B4513 2px solid;
transition: opacity .8s ease-in;
}
.carousel img.show{
opacity: 1;
}
.carousel.vertical{
width: 170px;
height: 350px;
}
</style>
<script>
window.addEventListener("DOMContentLoaded", function() {
[].forEach.call(document.querySelectorAll(".carousel"), function(el) {
var img = el.querySelectorAll("img"),
len = img.length,
i = len - 1,
p = el.dataset.pause || 5E3;
!function g() {
img[i].classList.remove("show");
i = ++i % len;
img[i].classList.add("show");
window.setTimeout(g, p)
}()
})
});
</script>
</head>
<body>
<div class="carousel" data-pause="3000">
<img src="http://img-fotki.yandex.ru/get/5640/35900228.10c/0_7388e_3ab59b4a_XL.jpeg.jpg" alt="">
<img src="http://1.bp.blogspot.com/-aleHkBUuqOI/VY0HrCytsXI/AAAAAAAAq1g/f2emGtdqdWo/s640/2015-06-05_0145.jpg" alt="">
<img src="http://www.fotki.ykt.ru/albums/userpics/2013/11-18/1384739526_image.jpg" alt="">
</div>
</body>
</html>
|
Я удивляюсь вашей голове ... Как вы просто меняете код и добиваетесь эффекта ...
Я наверно неправильно объясняю ... В шаблоне, картинка спортсменов меняется так так и в вашем примере, но масштабирование таи хитрое, оно имеет max-height, а вот по горизонтали всегда 100%. Я так понимаю что это нельзя давится с IMG? |
Цитата:
|
Цитата:
|
<style type="text/css">
*{transition:all 3s ease;}
</style>
<script>
var mas = [
'/images/new/foto_index/01.jpg',
'/images/new/foto_index/IMG_0875.jpg',
'/images/new/foto_index/IMG_0985.jpg'
], i=1;
function csaHead(){
if(i > (mas.length-1)){
document.getElementById('foto_index').style.backgroundImage="url('"+mas[0]+"')";
i=0;
}else{
document.getElementById('foto_index').style.backgroundImage="url('"+mas[i]+"')";
i++;
}
}
var intervalCsaHead = setInterval(csaHead,5000);
</script>
Вот что у меня получилось ... Без IMG а просто div |
Обнаружил, что не успевает загружать картинки ... Скрипт работает а картинок нет ... Только на второй проход все картинки отображаются.
Подскажите, как проконтролировать загрузку картинок? |
| Часовой пояс GMT +3, время: 19:46. |