Смена backgroundImage
Всем привет!
Нужна функция плавной зацикленной смены backgroundImage. Сейчас использую смену css классов: setInterval(function() { var $body = $('body'); if($body.hasClass('background1')) { $body.removeClass('background1'); $body.addClass('background2'); } else { $body.removeClass('background2'); $body.addClass('background1'); } }, 8000); Может мне кажется, но она сильно нагружает браузер и плавность смены изображений не работает в IE. Если не трудно покажите как подобное можно сделать на JS, может без использования классов, а через document.body.style.backgroundImage = "url('..')" Спасибо откликнувшимся! |
<!doctype html> <html> <head> <meta charset="utf-8" /> <title></title> <style> html, body { height: 100%; } </style> </head> <body> <script> var colors = ['red', 'green', 'blue', 'grey', 'orange'], i = 0; setInterval(function() { document.body.style.background = colors[++i % colors.length]; }, 2000) </script> </body> </html> K_PECT, только вместо цветов, урлы картинок в массив вставь. |
Очень помогли! Спасибо большое! Но как быть с плавностью? Если не трудно покажите на setTimeout
|
<!doctype html> <html> <head> <meta charset="utf-8" /> <title></title> <style> html, body { height: 100%; } body { -webkit-transition: background 1s linear; -moz-transition: background 1s linear transition: background 1s linear; } </style> </head> <body> <script> var colors = ['red', 'green', 'blue', 'grey', 'orange'], i = 0; setTimeout(function foo() { document.body.style.background = colors[++i % colors.length]; setTimeout(foo, 2000) }, 2000) </script> </body> </html> |
Не знаю мож это у меня так, но IE11 видимо не поддерживает
background 1s linear; |
K_PECT, как вариант, наложить два img и им уже менять opacity.
|
Ruslan_xDD, не дойду сам! Покажите, пожалуйста
|
|
transition: background 1s linear; -webkit-transition: background 1s linear; -moz-transition: background 1s linear; -ms-transition: background 1s linear; Не работает в IE Вот этот пример работает в IE. Покажите, пожалуйста, как собрать на основании него смену document.body.style.background И если не трудно на setTimeout Необходимо менять изображение у body |
K_PECT, чем мой пример выше не устроил, если не секрет?
|
1. Он на setInterval
2. Необходимо менять изображение у body 3. Нужно без СSS |
:)
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> html{ height:100%; } body{ margin:0 auto; width:100%; height:100%; background-image:url("http://uviprint.ru/wp-content/gallery/vid/vid_007.jpg"); background-repeat:no-repeat; background-size:100% 100%; } body:before{ width:100%; height:100%; animation-name:Fade; animation-timing-function:ease-in-out; animation-iteration-count:infinite; animation-duration:10s; animation-direction:alternate; content:''; display:block; background-image:url("http://pic5.bbzhi.com/chuangyibizhi/shejishimengxiangzhongdefengguangbizhi/shejishimengxiangzhongdefengguangbizhi_469563_2.jpg"); background-repeat:no-repeat; background-size:100% 100%; } @keyframes Fade{ 0%{ opacity:0; } 35%{ opacity:1; } 55%{ opacity:1; } 100%{ opacity:0; } } </style> </head> <body> </body> </html> |
Отличный пример! Я понимаю, что достал но не работает в IE
|
Цитата:
Просто дайте основному блоку position: fixed/absolute и z-index: -1, и будет Вам счастье. |
Может я изначально не правильно объяснил.
Нужно менять изображение у body меняя прозрачность. setInterval(function() { var $body = $('body'); if($body.hasClass('background1')) { $body.removeClass('background1'); $body.addClass('background2'); } else { $body.removeClass('background2'); $body.addClass('background1'); } }, 8000); body { height: 100%; width: 100%; background: url(../img/bgr/1.jpg) no-repeat; background-attachment: fixed; background-size: cover; transition: background 1s linear; -webkit-transition: background 1s linear; -moz-transition: background 1s linear; -ms-transition: background 1s linear; } .background1 { background: url(../img/bgr/2.jpg) no-repeat; background-attachment: fixed; background-size: cover; transition: background 1s linear; -webkit-transition: background 1s linear; -moz-transition: background 1s linear; -ms-transition: background 1s linear; } .background2 { background: url(../img/bgr/1.jpg) no-repeat; background-attachment: fixed; background-size: cover; transition: background 1s linear; -webkit-transition: background 1s linear; -moz-transition: background 1s linear; -ms-transition: background 1s linear; } Этот код работает. Но видимо из-за jquery и setInterval очень нагружает браузер и вдобавок ms-transitionне работает в IE. Нужно подобное на js, setTimeout с поддержкой IE |
Обидно, что забили
|
K_PECT, в IE нельзя сделать плавность фону.
|
|
Ruslan_xDD,
а если через канвас обработать массив картинок, возможно через шейдер и вставлять в css этапы перехода. |
рони, мне кажется не производительно будет каждый раз картинку в CSS перезаписывать.
|
Часовой пояс GMT +3, время: 10:01. |