.toggle() и position: absolute;
Всем доброго времени суток, эксперты!
Использую .toggle("slow") на щелчке по кнопке для скрытия/выползания абсолютно позиционированного дива и заметил, что если задать его разположение через left:;,то анимация начинается с левого верхнего угла и проходит как-бы по диагонале в правый нижний угол, если через right:;, то наоборот. Объясните, если не трудно, как css-правила влияют на этот эффект и что делать, если надо чтобы див, например, просто сворачивался и разворачивался как при slideDown и slideUp, ведь где не посмотрю - так во всех примерах и работает. |
напишите тестовый пример
|
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;
}
|
<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> |
Вот рабочий пример:
<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:; и анимация тоже меняется.. |
<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'. |
хм, странно, в прошлый раз пробовал slideToggle - эффект не изменился, а сейчас все заработало.
В любом случае спасибо! |
Если ещё нужно, для сворачивания блока без смещения, его надо поместить в теги <center></center>. Тогда всё будет работать корректно.
|
Чупакабра гугля: 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>
|
| Часовой пояс GMT +3, время: 03:03. |