Просмотр полной версии : События по клику
Артур20071
06.06.2017, 16:20
Здравствуйте. Кто в курсе, подскажите как навесить прямую и обратную анимацию при клике. То есть при первом клике элементы съезжают вниз, а при повторном, поднимаются вверх. Делаю так, но анимация просто отрабатывает туда-сюда, при каждом клике. Вот код
$(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>
Артур20071
06.06.2017, 18:20
сделал по вашему примеру, но почему-то не отрабатывает вообще.
может ли быть причиной то, что у класса navbar выставлен position:fixed, хотя вряд-ли. это фиксированное меню, и при его раскрытии в мобильной версии мне нужно чтобы контент съезжал вниз, а при закрытии снова поднимался.
Не вешайте css свойства на айдишники, скорее всего из-за этого.
Уберите с айдишника, margin-top 0; должно заработать
Артур20071
07.06.2017, 10:25
Убрал айдишник, сделал так
$(document).ready(function(){
$(".navbar-toggle").click(function(){
$(".f").toggleClass(".ani");
});
});
css
.f{
}
.ani{
margin-top: 320px;
}
не работает вообще
Артур20071
07.06.2017, 11:23
$(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>
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot