Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.03.2013, 13:22
Интересующийся
Отправить личное сообщение для saxap Посмотреть профиль Найти все сообщения от saxap
 
Регистрация: 09.09.2012
Сообщений: 17

.toggle() и position: absolute;
Всем доброго времени суток, эксперты!
Использую .toggle("slow") на щелчке по кнопке для скрытия/выползания абсолютно позиционированного дива и заметил, что если задать его разположение через left:;,то анимация начинается с левого верхнего угла и проходит как-бы по диагонале в правый нижний угол, если через right:;, то наоборот.
Объясните, если не трудно, как css-правила влияют на этот эффект и что делать, если надо чтобы див, например, просто сворачивался и разворачивался как при slideDown и slideUp, ведь где не посмотрю - так во всех примерах и работает.
Ответить с цитированием
  #2 (permalink)  
Старый 21.03.2013, 14:03
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

напишите тестовый пример
Ответить с цитированием
  #3 (permalink)  
Старый 21.03.2013, 15:05
Интересующийся
Отправить личное сообщение для saxap Посмотреть профиль Найти все сообщения от saxap
 
Регистрация: 09.09.2012
Сообщений: 17

jQuery(function(){
jQuery("span.opnd").click(function () {
jQuery("li.opndli").toggle("slow");
 });
});


<span class="opnd">Войти через...</span>
<ul>
<li class="opndli" style="display: none;">
тут содержимое
</li>
</ul>

ul {
margin-left: 20px;
padding: 0px;
display: inline;
list-style: none outside none;
margin: 0px 0px 0px 0px;
padding: 0px;
position: relative;
}
ul li.opndli {
background-color: #FFFFFF;
border-left: medium none currentColor;
border-radius: 5px;
display: none;
float: left;
font-weight: 400;
height: 180px;
left: -766px;
margin: 0px;
padding: 0px 5px;
position: absolute;
text-transform: capitalize;
top: 22px;
width: 360px;
z-index: 99;
}
Ответить с цитированием
  #4 (permalink)  
Старый 21.03.2013, 16:10
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<style>
ul {
  margin-left: 20px;
  padding: 0px;
  display: inline;
  list-style: none outside none;
  margin: 0px 0px 0px 0px;
  padding: 0px;
  position: relative;
}
  ul li.opndli {
  background-color: #FFFFFF;
  border-left: medium none currentColor;
  border-radius: 5px;
  display: none;
  float: left;
  font-weight: 400;
  height: 180px;
  left: 0px;
  margin: 0px;
  padding: 0px 5px;
  position: absolute;
  text-transform: capitalize;
  top: 22px;
  width: 360px;
  z-index: 99;
}
</style>
<span class="opnd">Войти через...</span>
  <ul>
    <li class="opndli" style="display: none;">
      тут содержимое
    </li>
  </ul>
</span>
<script>
jQuery(function(){
  jQuery("span.opnd").click(function () {
    jQuery("li.opndli").toggle("slow");
  });
});
</script>


Тестовый пример делается примерно так. Он должен наглядно отображать суть проблемы и его должно быть можно запустить.

Раскрасьте пример чтобы был виден эффект о котором вы говорите.

И ещё все эффекты типа slide, toggle и т.д. лучше применять к <div>
Ответить с цитированием
  #5 (permalink)  
Старый 22.03.2013, 10:25
Интересующийся
Отправить личное сообщение для saxap Посмотреть профиль Найти все сообщения от saxap
 
Регистрация: 09.09.2012
Сообщений: 17

Вот рабочий пример:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<style>
ul {
  margin-left: 20px;
  padding: 0px;
  display: inline;
  list-style: none outside none;
  margin: 0px 0px 0px 0px;
  padding: 0px;
  position: relative;
}
  ul li.opndli {
  background-color: #000;
  border-left: medium none currentColor;
  border-radius: 5px;
  display: none;
  float: left;
  font-weight: 400;
  height: 180px;
  left: 0px;
  margin: 0px;
  padding: 0px 5px;
  position: absolute;
  text-transform: capitalize;
  top: 22px;
  width: 360px;
  z-index: 99;
}
</style>
</head>
<body>
<span class="opnd">Войти через...</span>
  <ul>
    <li class="opndli" style="display: none;">
      тут содержимое
    </li>
  </ul>
</body>
<script>
jQuery(function(){
  jQuery("span.opnd").click(function () {
    jQuery("li.opndli").toggle("slow");
  });
});
</script>
</html>

меняем у ul li.opndli left:; на right:; и анимация тоже меняется..
Ответить с цитированием
  #6 (permalink)  
Старый 22.03.2013, 11:29
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<style>
div.opndli {
  background-color: #000;
  border-left: medium none currentColor;
  border-radius: 5px;
  display: none;
  float: left;
  font-weight: 400;
  height: 180px;
  right: 0px;
  margin: 0px;
  padding: 0px 5px;
  position: absolute;
  text-transform: capitalize;
//  top: 22px;
  width: 360px;
  z-index: 99;
}
</style>
</head>
<body>
<span class="opnd">Войти через...</span>
  <div class="opndli" style="display: none;">
      тут содержимое
    </div>
</body>
<script>
jQuery(function(){
  jQuery("span.opnd").click(function () {
    jQuery(".opndli").slideToggle("slow");
  });
});
</script>
</html>


В документации метода "toggle" ясно написано что он использует методы 'show' и 'hide' jQuery. Если посмотреть примеры работ этих методов на оф. сайте, то можно увидеть тот эффект, о котором вы говорите.

Если вы хотите чтобы изображение выезжало сверху вниз используйте 'slideToggle' или напишите свою анимацию, какую вам угодно с помощью 'animate'.
Ответить с цитированием
  #7 (permalink)  
Старый 22.03.2013, 11:42
Интересующийся
Отправить личное сообщение для saxap Посмотреть профиль Найти все сообщения от saxap
 
Регистрация: 09.09.2012
Сообщений: 17

хм, странно, в прошлый раз пробовал slideToggle - эффект не изменился, а сейчас все заработало.
В любом случае спасибо!
Ответить с цитированием
  #8 (permalink)  
Старый 14.08.2016, 20:22
Новичок на форуме
Отправить личное сообщение для AbMax Посмотреть профиль Найти все сообщения от AbMax
 
Регистрация: 14.08.2016
Сообщений: 1

Если ещё нужно, для сворачивания блока без смещения, его надо поместить в теги <center></center>. Тогда всё будет работать корректно.
Ответить с цитированием
  #9 (permalink)  
Старый 15.08.2016, 13:12
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Чупакабра гугля: This tag has been deprecated in HTML 4 (and XHTML 1) in favor of the CSS text-align property, which can be applied to the <div> element or to an individual <p>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery Cycle Plugin - position: absolute; brabuz jQuery 1 26.08.2011 15:56
Оцените, пожалуйста код вёрстки OlegALL Ваши сайты и скрипты 18 26.07.2011 09:35
Поясните логику событий мыши при дочернем элементе с position absolute... interwass Общие вопросы Javascript 11 22.06.2011 12:42
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
Не работает position: absolute bayah Общие вопросы Javascript 24 29.04.2010 18:18