Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   hide увеличивает высоту? (https://javascript.ru/forum/jquery/58940-hide-uvelichivaet-vysotu.html)

monax_111 19.10.2015 05:08

hide увеличивает высоту?
 
добрый день!
имею вот таких два очаровательных блока
пример
задача - плавно свернуть 1й блок влево по нажатию на 2ой блок!
как видите почему то второй блок начинает прыгать вниз!

в чем проблема? почему они не сворачиваются на одном уровне?

laimas 19.10.2015 07:21

В том, что элементы inline-block, а .hide() уменьшает сразу по ширине и высоте. Вместо display:inline-block; задать float:left;, а

$('.main_factors_div').hide(7000);

заменить на

$('.main_factors_div').animate({width : 0, opacity : 0}, 7000);

рони 19.10.2015 08:25

laimas,
всё равно вроде по высоте прыгает в конце анимации ... нужно наверно ещё что-то в css добавить...

laimas 19.10.2015 08:57

рони, это прыгает потому, что текст становится в две строки, а уж как ему надо, то-ли overflow:hidden; и white-space:nowrap; сделать, то-ли лучше будет размер шрифта анимировать.... Пусть сам решает :)

monax_111 19.10.2015 15:11

Цитата:

Сообщение от laimas (Сообщение 392373)
рони, это прыгает потому, что текст становится в две строки, а уж как ему надо, то-ли overflow:hidden; и white-space:nowrap; сделать, то-ли лучше будет размер шрифта анимировать.... Пусть сам решает :)

Ты не прав, функция hide выставляет первому блоку свойство overflow:hidden, а толку нет!!

рони 19.10.2015 15:14

monax_111,
<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="utf-8">

  <title>slide demo</title>
  <style>
 .main_factors_div {
     white-space:nowrap;
   }
  .additions {float:left;padding:15px;background-color:#E5E5E5;margin:30px}
        .additions:hover{background-color:#C3C3C3}

        .div_connect {display:block;padding:15px;background-color:#E5E5E5;margin:10px 100px}
        .div_connect:hover{background-color:#C3C3C3}

  </style>
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>

</head>

<body>
  <center>
    <center class=" additions main_factors_div">
      4 фактор(ов)
    </center>

    <center class="additions main_connect_div">
      5 связь(ей)
    </center>
  </center><script>
$(document).ready(function () {
            doc_w = $(window).width()-50;
            additions_div_width=(doc_w-300)/2;
            $('.additions').css({"width":additions_div_width})
            $('.main_connect_div').one("click",show_connect)
    })

        function show_connect(){
            $('.main_factors_div').animate({width : 0, opacity : 0}, 7000).css({});

        }


  </script>
</body>
</html>

laimas 19.10.2015 15:50

Цитата:

Сообщение от monax_111
Ты не прав, функция hide выставляет первому блоку свойство overflow:hidden, а толку нет!!

Какая функция, если это через стили задавать надо.

monax_111 19.10.2015 20:00

Цитата:

Сообщение от laimas (Сообщение 392437)
Какая функция, если это через стили задавать надо.

во время выполнения анимации нажми на паузу и посмотри на стили объекта - специально время большое задал

monax_111 19.10.2015 20:04

Цитата:

Сообщение от рони (Сообщение 392426)
monax_111,

получилось, спасибо - но все же интересно почему обычная функция hide так плохо работает.....

monax_111 19.10.2015 20:09

вообщем пока что самое простое решение это поменять
display: inline-block; на float:left;
тогда и функция hide работает нормально


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