Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Анимация при смене фона (https://javascript.ru/forum/dom-window/59574-animaciya-pri-smene-fona.html)

ureech 17.11.2015 09:51

Анимация при смене фона
 
Здравствуйте.Есть код, меняет фон (картинку)
var img = 'fon.png';
$('.tab-in').css('background-image', function(index, oldValue){
 if(oldValue==''){return img;}}).css('background-size','100% 100%')

Подскажите как этот процесс анимировать?Не понимаю к чему .animate прикрутить, никак не выходит.

рони 17.11.2015 10:36

ureech,
сделайте макет и попробуйте ещё раз описать что хотите анимировать
или попробуйте вместо .css('background-size','100% 100%')
.animate({'background-size' : '100%'},1000)

ureech 17.11.2015 11:27

Вложений: 1
Вот табы состоящие из двух частей(см.вложение).По клику меняется содержимое правого блока и фон левого.К правому анимацию применил.Теперь нужно прикрутить анимацию к background левого блока.
Вот html
<div  class="uitab">
         <div class="tab-in">
        <ul id="tabs">
        <li><a class="tab" href="#tab-mus">Музыка</a></li>
        ........................................................
        </ul>
        </div>
          здесь вкладки правого блока
       .....................................
          <div id="tab-mus" >
         <div class="tab-in_1 animated">
          </div>
          </div>
       .....................................
          </div>

Вот js
$(function()
     {
       $('.tab').on('click', function(event)
         {
           event.preventDefault();
           var id = this.getAttribute('href')
		   var img = 'url(/templates/red&black/images/music/'+id.slice(1)+'.png)';
		   $('.tab-in_1').not($('.tab-in_1', id).toggleClass('zoomIn')).removeClass('zoomIn')
		   $('.tab-in').css('background-image', function(index, oldValue){
        if(oldValue==''){return img;}else{return img;}}).css('background-size','100% 100%')
		
         }
		 
       );
     }
   );

Вариант .animate({'background-size' : '100%'},1000) не пойдёт.

рони 17.11.2015 11:39

ureech,
а в css добавить transition?
пока более ничем ... может если сделаите макет, кто подскажет.

ureech 17.11.2015 12:15

Что такое макет? И в css transition попробую, но думаю не пройдёт, так как фон появляется из js и всё это в динамики.

рони 17.11.2015 12:22

ureech,
макет это то что можно запустить тут или в любой песочнице http://plnkr.co/edit/?p=preview, а не части кода

ureech 17.11.2015 14:09

Хорошо, вот упрощённый вариант, суть та-же.Прикрутить анимацию к .nav

рони 17.11.2015 14:23

Цитата:

Сообщение от ureech
Хорошо, вот упрощённый вариант

не осилил

ureech 17.11.2015 14:53

Цитата:

Сообщение от рони (Сообщение 396514)
не осилил

В смысле с моей стороны что то не так, или не выходит просто?

рони 17.11.2015 15:18

ureech,
:) а куда смотреть - то, чего делать - то, по вашей ссылке? где живёт nav?

ureech 17.11.2015 15:50

Ни хрена не понимаю.Вы сказали сделать макет, я сделал.Нормально поясните, что не так?

рони 17.11.2015 16:05

ureech,
ненашёл макета по вашей ссылке, открылась пустая песочница ....
о уже код, счас гляну

рони 17.11.2015 16:24

Цитата:

Сообщение от ureech
Прикрутить анимацию к .nav

вариант того как я вас понял ...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
.tab-content
{
  background: red;
  padding: 20px 0;
  color: #FFF;
}
.nav
{
  background-size: 100% 100%;
  background-repeat: no-repeat;
  background-image: url(https://www.instantcms.ru/upload/userfiles/4906/menubg-hover.jpg);
}</style>
<script type="text/javascript" src="https://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript" src="https://getbootstrap.com/dist/js/bootstrap.js"></script>
<link type="text/css" rel="stylesheet" href="https://getbootstrap.com/dist/css/bootstrap.css"/>
<script type="text/javascript" src="https://documentcloud.github.io/backbone/backbone-min.js"></script>
<script type="text/javascript" src="https://documentcloud.github.io/underscore/underscore-min.js"></script>
<title>HTML5, CSS3 and JavaScript demo</title>
</head>
<body>
<ul class="nav nav-tabs">
  <li class="active"><a class="tab" href="#menubg-hover" data-toggle="tab">Главная</a></li>
  <li><a class="tab" href="#menubg" data-toggle="tab">Профиль</a></li>
</ul>

<!-- Tab panes -->
<div class="tab-content">
  <div class=" tab-pane active" id="menubg-hover">Главная</div>
  <div class=" tab-pane" id="menubg">Профиль</div>

</div>

<script>
$(function() {
    $(".tab").on("click", function(event) {
        var id = this.getAttribute("href");
        var img = "url(https://www.instantcms.ru/upload/userfiles/4906/" + id.slice(1) + ".jpg)";
        $(".nav").css({
            "background-image": img,
            "background-size": "0% 100%"
        });
        $({num: 0}).animate({num: 100},
        {
            step: function(x) {
                $(".nav").css({
                    "background-size": (x | 0) + "% 100%"
                })
            },
            duration: 1000
        })
    })
});</script></body></html>

ureech 17.11.2015 16:48

Большое спасибо, за помощь.Единственное, что анимация к позицианированию по размеру в реале не подходит.Поправил так
$('.tab-in').css({'background-image' : img, 'background-size': '100% 100%','opacity':'0'}).animate({opacity:1}, 1000);

Ещё раз спасибо.В карму плюсануть не дают пока.

рони 17.11.2015 16:51

ureech,
jquery не умеет анимировать двойные параметры
сделал анимацию иначе, смотрите код выше.
Цитата:

Сообщение от ureech
анимация к позицианированию по размеру в реале не подходит

это не понял, но вам виднее.

ureech 17.11.2015 17:08

Цитата:

Сообщение от рони (Сообщение 396545)
ureech,
jquery не умеет анимировать двойные параметры
сделал анимацию иначе, смотрите код выше.

это не понял, но вам виднее.

Прикольно. Я имею ввиду когда фон картинка, то при анимации она распадается на части.Но второй вариант уже лучше. Где нибудь применю.:yes:


Часовой пояс GMT +3, время: 18:53.