это CSS, который я использую.
.setting-box
{
position: fixed;
left:-200px;
top:0;
width: 200px;
z-index: 1000;
min-height: 100vh;
}
.toggle-setting
{
position: absolute;
right: -34px;
top: 6em;
background: #fff;
border-radius: 0px 5px 5px 0;
text-align: center;
cursor: pointer;
}
Я пробовал много вещей, но это не работает!
этот код работает очень хорошо, но.
за исключением случаев, когда я нажимаю на страницу, окно настроек не закрывается
$('.setting-box .toggle-setting').on('click',function () {
$(this).parent('.setting-box').toggleClass('open');
if ($(this).parent('.setting-box').hasClass('open')) {
$(this).parent('.setting-box').animate({
left:0,
},1000);
} else {
$(this, 'body').parent('.setting-box').animate({
left:'-200'
},1000);
}
});
Вы можете попробовать это.
var clicked = false;
$('.setting-box .toggle-setting').on('click',function () {
if (clicked == false) {
$(this).parent('.setting-box').animate({
'left' : '0',
},1000);
clicked = true;
} else {
$(this).parent('.setting-box').animate({
'left' : '-200px',
},1000);
clicked = false;
}
console.info(clicked);
});
$(document).click( function () {
var target = $(event.target);
if (!target.is(".toggle-setting") && !target.is('.setting-box') && clicked == true) {
$('.setting-box').animate({
'left' :'-200px',
},1000);
clicked = false;
console.info(clicked);
}
});
Вы можете поместить блок настроек в другой блок, поместить настройки в align:center;
,
добавить из этого из z-index:;
и сделать при нажатии на шестеренку или куда угодно, чтобы этот блок принял стиль display:none;
. Это может помочь вам.
первая функция переключает поле настройки;
$('#gear-button').click(function() {
$(".setting-box").toggleClass("display-block");
});
вторая функция скрывает окно настройки при щелчке документа (щелчок по телу)
// hide setting box on body click
$(document).on('click', function() {
$(".setting-box").removeClass("display-block");
});
третья функция останавливает событие щелчка, когда пользователь нажимает кнопку или поле настройки, чтобы предотвратить щелчок документа
$("#gear-button, .setting-box").click(function(e) {
e.stopPropagation();
})
В общем, вы можете использовать этот шаблон для добавления собственной анимации и классов.
полный пример: