Анимация ширины div и ограничение max-width с помощью jquery

0

Мой контейнер div содержит два div div box1 и div box2. box2 - абсолютный div с максимальной шириной 400 пикселей;

HTML:

<div id="container">
<div class="box1"></div>
<div class="box2 animated"></div>
</div>

CSS:

#container{position:relative;width:100%;height:100%;background:red;} 

#container #box1{position:relative;width:760px;height:300px;background:blue;margin:0;} 

#container #box2{position:absolute;width:60px;max-width:350px;height:300px;background:yellow;;top:0;} 

JQuery:

 $(document).ready(function(){
    var box1width = $(".box1").width();
    var windowWidth = $(window).width();
    var x = windowWidth - (box1width + 350 ) ;
    var wdt = windowWidth - (box1width) ;


    if (".box2").hasClass("animated"){
       if(x > windowWidth ){
       $(".box2").animate({width:'350px'}, 2000); 
       } else { 
       $(".box2").animate({width: wdt+ 'px'}, 2000);
       } 
    } else {

    alert("no animation for box2 nd width remain 60px");
    }

    });

Первоначально это оживляет мою box2width; теперь я хочу оживить ширину box2 при изменении размера окна, а также ограничить ширину анимации box2 до 350 пикселей;

  • 0
    Похоже, этот код частично работает. но Uncaught SyntaxError: Unexpected token . ошибку Uncaught SyntaxError: Unexpected token . работающая скрипка позволит легко решить проблему
  • 0
    и вы не поделились animated классом ..
Показать ещё 5 комментариев
Теги:
jquery-animate
window-resize

1 ответ

1
Лучший ответ

Проверьте этот скрипт

if (!$(".box2").hasClass("animated")) {
     if (wdt >= 60) {
         $(".box2").animate({
             width: '350px'
         }, 2000);
         $(".box2").addClass('animated');
     }
 } else {
         if (wdt <= 350) {
             $(".box2").css('width','60px');
             $(".box2").removeClass('animated');
         }
     }

side note: не уверен, что это именно то, что вы хотите, если не комментировать ниже :)

обновление в соответствии с комментариями обновленная скрипка

$(document).ready(function () {
 anime();
 var resizeTimer;
 window.onresize = function () {
     if (resizeTimer) {
         clearTimeout(resizeTimer);
     }
     resizeTimer = setTimeout(function () {
         anime();
     }, 200);
 }
})
 function anime() {
 var windowWidth = $(window).width();
 var box1width = $(".box1").width();
 var wdt = windowWidth - (box1width);
 if (wdt > 60) {
     $(".box2").stop(true,true).animate({
         width: wdt
     }, 1000);
     $(".box2").addClass('animated');
 } else if($(".box2").hasClass('animated')){
   $(".box2").css('width', '60px');
   $(".box2").removeClass('animated');
 }
}

Примечание: это просто исправление того, что вы пытаетесь сделать, я бы предпочел переход css3 по этому вопросу.

  • 0
    +1 за ответ! Но это не актуальный ответ для меня,
  • 0
    @galexy я обновил скрипку ... проверь сейчас ..
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню