Как сделать плавающую вбок кнопку?
Есть боковой скрываемый сайдбар. Нужно сделать так, чтобы при нажатии на кнопку открытия, кнопка двигалась с панелью и ровнялась с её левым краем. А после, повторным нажатием на кнопку сайдбар скрывался и кнопка занимала исходное положение.
<button class="openbtn float-block" onclick="openNav()"></button>
<div id="mySidepanel" class="sidepanel">
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">×</a>
<a href="#" class="button_1 button_0">Кнопка</a>
</div>
<style>
/* Стиль кнопка, которая используется для открытия боковой панели */
.openbtn {
cursor: pointer;
background-color: #00AEEF;
padding: 25px 25px;
border: none;
position: fixed;
right: 20px;
top: 20px;
/*border: 1px solid black;*/
}
.openbtn:hover {
background-color: #00AEEF;
}
/* настройки плавающего блока */
.float-block {
position: absolute;
top: 20px;
right: 20px;
}
/* Меню боковой панели */
.sidepanel {
background: rgba(217, 217, 217, 0.5);
height: 100%; /* Укажите высоту */
width: 0; /* 0 ширина-измените это с помощью JavaScript */
position: fixed; /* Оставаться на месте */
z-index: 1; /* Оставайтесь на вершине */
top: 0;
right: 0;
overflow-x: hidden; /* Отключить горизонтальную прокрутку */
padding: 60px 0 0; /* Поместите содержимое 60px сверху */
transition: 0.5s; /* 0.5 секунды эффект перехода для скольжения в боковой панели */
}
.sidepanel:hover {
overflow-y: scroll;
}
/* Боковая панель ссылок */
.sidepanel a {
padding: 8px 15px 8px 15px;
text-decoration: none;
color: white;
display: block;
transition: 0.3s;
}
/* При наведении курсора мыши на навигационные ссылки измените их цвет */
.sidepanel a:hover {
color: gray;
}
/* Положение и стиль кнопки закрытия (верхний правый угол) */
.sidepanel .closebtn {
position: absolute;
top: 0;
right: 25px;
font-size: 50px;
margin-left: 50px;
color: black;
}
.button_0 {
border-radius: 25px;
margin: 0 10px 5px;
opacity: 1;
text-align: center;
font-size: 25px;
}
.button_1 { /* Кнопка HR */
background-color: #151741;
}
</style>
<script>
// Закрытие панели с кнопками
function closeNav() {
document.getElementById("mySidepanel").style.width = "0px";
}
// Медиа запрос
function openNav() {
var mql = window.matchMedia('all and (max-width: 768px)');
function handleMatchMedia(mediaQuery) {
if (mediaQuery.matches) {
document.getElementById("mySidepanel").style.width = "250px";
} else {
document.getElementById("mySidepanel").style.width = "400px";
}
}
handleMatchMedia(mql);
// Вместо обработчика изменения медиа-запроса, используем setTimeout
setTimeout(function () {
handleMatchMedia(mql);
}, 0);
// Отслеживаем изменения медиа-запроса
mql.addListener(handleMatchMedia);
}
</script>
пробовал делать так, но не получилось:
// «Липкий» код
$(function () {
$.fn.followTo = function (pos) {
var $this = this,
$window = $(window);
$window.scroll(function (e) {
if ($window.scrollTop() > pos) {
$this.css({
position: 'fixed',
right: 20
});
} else {
$this.css({
position: 'absolute',
right: 400
});
}
});
};
$('.float-block').followTo(140);
});
Ответы (1 шт):
Автор решения: budaPest
→ Ссылка
если у вас кнопка имеет фиксированную позицию он и не будет двигаться, я бы кнопку расположил внутри обертки сайдбара с минусовым margin и зафиксировать его,