События по клику
Здравствуйте. Кто в курсе, подскажите как навесить прямую и обратную анимацию при клике. То есть при первом клике элементы съезжают вниз, а при повторном, поднимаются вверх. Делаю так, но анимация просто отрабатывает туда-сюда, при каждом клике. Вот код
$(document).ready(function(){
$(".navbar-toggle").click(function() {
$("#f").animate({
marginTop: "320px", // отступ от нижнего края элемента станет равным 6 дюймам
}, 800,
function(){
$(this).animate({
marginTop: "0px", // отступ от нижнего края элемента станет равным 6 дюймам
}, 800);
});
});
});
|
такое лучше делать через тогл класс
<html>
<head>
<meta charset="utf-8">
<style>
.f{
margin-top: 0px;
transition: 1s;
width: 20px;
height:20px;
border: 1px solid red;
}
.animate{
margin-top: 320px;
}
</style>
</head>
<body>
<button class="navbar-toggle">rerwrewrwer</button>
<div class="f"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$(".f").toggleClass("animate");
});
});
</script>
</body>
</html>
|
не работает через toggleClass
сделал по вашему примеру, но почему-то не отрабатывает вообще.
может ли быть причиной то, что у класса navbar выставлен position:fixed, хотя вряд-ли. это фиксированное меню, и при его раскрытии в мобильной версии мне нужно чтобы контент съезжал вниз, а при закрытии снова поднимался. |
Не вешайте css свойства на айдишники, скорее всего из-за этого.
|
Уберите с айдишника, margin-top 0; должно заработать
|
все равно не работает
Убрал айдишник, сделал так
$(document).ready(function(){
$(".navbar-toggle").click(function(){
$(".f").toggleClass(".ani");
});
});
css .f{ } .ani{ margin-top: 320px; } не работает вообще |
Разобрался и сделал так
$(document).ready(function(){
var count = 0;
$(".navbar-toggle").click(function() {
count++;
var isEven = function(someNumber) {
return (someNumber % 2 === 0) ? true : false;
};
if (isEven(count) === false) {
$(".f").animate({
marginTop: "320px"
}, 800);
} else if (isEven(count) === true) {
$(".f").animate({
marginTop: "0px"
}, 800);
}
});
});
|
<html>
<head>
<style>
div {
width: 40px;
height: 40px;
border:1px solid #777;
margin-top: 0;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
var direction = 0;
$('button').click(function() {
direction ^= 1;
$('#as').animate({
marginTop: 320 * direction
}, 800)
});
});
</script>
</head>
<body>
<div id="as"></div>
<button>GO</button>
</body>
</html>
|
| Часовой пояс GMT +3, время: 08:54. |