Вопрос по css и jQuery
У меня есть работающий код jquery. У меня вопрос: какое свойство здесь показывает в какую сторону будет показываться блок и как можно поменять сторону появления блока? Большое спасибо
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("#flip").click(function(){
$("#panel").toggle(900);
});
}
});
</script>
<style>
#panel, #flip {
padding: 5px;
text-align: center;
background-color: #e5eecc;
border: solid 1px #c3c3c3;
}
#panel {
padding: 50px;
display: none;
}
</style>
</head>
<body>
<div id="flip">Click to slide down panel</div>
<div id="panel">Hello world!</div>
</body>
</html>
Ответы (1 шт):
Возможности указать методу .toggle(), с какой стороны должен показываться элемент, к сожалению нет. Мы можем указать только лишь время анимации появления/скрытия элемента.
$('#flip').on('click', function() {
$('#panel').toggle(900);
});
#panel,
#flip {
padding: 5px;
text-align: center;
background-color: #e5eecc;
border: solid 1px #c3c3c3;
}
#panel {
padding: 50px;
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="flip">Click to slide down panel</div>
<div id="panel">Hello world!</div>
Вероятнее всего, вам нужна анимация появления элемента сверху вниз, как шторки. В таком случае, используйте метод .slideToggle().
$('#flip').on('click', function() {
$('#panel').slideToggle(900);
});
#panel,
#flip {
padding: 5px;
text-align: center;
background-color: #e5eecc;
border: solid 1px #c3c3c3;
}
#panel {
padding: 50px;
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="flip">Click to slide down panel</div>
<div id="panel">Hello world!</div>
Любую другую анимацию мы можем использовать в случае добавления/удаления дополнительного класса к элементу, который показываем. И это будет уже анимация CSS. Вот простой пример такой анимации:
$('#flip').on('click', function() {
$('#panel').toggleClass('active');
});
#panel,
#flip {
padding: 5px;
text-align: center;
background-color: #e5eecc;
border: solid 1px #c3c3c3;
}
#panel {
padding: 50px;
background-color: red;
opacity: 0;
transition: all 1s;
}
.active {
background-color: #e5eecc !important;
opacity: 1 !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="flip">Click to slide down panel</div>
<div id="panel">Hello world!</div>
И еще пример:
$('#flip').on('click', function() {
$('#panel').toggleClass('active');
});
#panel,
#flip {
box-sizing: border-box;
position: relative;
width: 100%;
height: 30px;
padding: 5px 0;
text-align: center;
background-color: #e5eecc;
border: solid 1px #c3c3c3;
}
#panel {
position: absolute;
overflow: hidden;
top: 38px;
left: calc(50% - 8px);
width: 0;
padding: 50px 0;
opacity: 0;
transition: all 1s;
}
.active {
left: 8px !important;
width: calc(100% - 16px) !important;
opacity: 1 !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="flip">Click to slide down panel</div>
<div id="panel">Hello world!</div>