Я закодировал некоторые кнопки, которые отображаются в правом нижнем углу нашего веб-сайта на мобильном телефоне, и поместил их с элементом <ul>
. Чтобы анимировать кнопки, я перевел каждый из элементов <li>
сразу после выполнения кода на ось Y, чтобы они все выстроились в линию, и был виден только последний элемент. Тем не менее, я заметил, что, хотя он переведен, высота <ul>
остается такой же, как была до запуска jQuery, и это предотвращает нажатие некоторых ссылок на веб-сайте. Я знаю, что это, вероятно, сбивает с толку, поэтому я создал простой пример ниже, чтобы продемонстрировать проблему. Если вы заметили, ссылку нельзя нажимать над кнопками, даже если они находятся вне пути.
$(() => {
let $menuToggleButton = $('.menu-toggle-button');
let $menuItems = $('.menu-item-button').closest('.menu-item');
let menuItemCount = $menuItems.length;
hideButtons($menuItems, menuItemCount, $menuToggleButton);
$('.menu-items').show();
$menuToggleButton.on('click', function(e) {
e.preventDefault();
let active = $(this).hasClass('active');
if(active) {
hideButtons($menuItems, menuItemCount, $(this));
} else {
showButtons($menuItems, $(this));
}
});
function hideButtons($menuItems, menuItemCount, $menuToggleButton) {
let x = 0;
for (let i = menuItemCount; i > 0; i--) {
let $menuItem = $menuItems.eq(x);
let offsetPercentage = `${i * 100}%`;
$menuItem.css('transform', `translateY(${offsetPercentage})`);
x++;
}
$menuToggleButton.removeClass('active');
}
function showButtons($menuItems, $menuToggleButton) {
$menuToggleButton.addClass('active');
$menuItems.each(function() {
$(this).css('transform', 'translateY(0%)');
});
}
});
.sliding-pill-menu {
position: fixed;
right: 20px;
bottom: 20px;
font-size: 12px;
z-index: 10000;
}
.menu-items {
list-style: none;
padding: 0;
margin: 0;
display: none;
}
.menu-item {
padding: 5px 0;
transition: all .4s ease-in-out;
}
.menu-item-button,
.menu-toggle-button {
display: inline-block;
padding: 10px 20px;
text-decoration: none;
text-align: center;
position: relative;
bottom: 0;
cursor: pointer;
border-radius: 50px;
background: #EC2127;
color: #fff;
font-weight: 500;
font-size: inherit;
min-width: 180px;
width: 180px;
white-space: nowrap;
}
.menu-item-button:hover, .menu-item-button:active, .menu-item-button:link, .menu-item-button:visited,
.menu-toggle-button:hover,
.menu-toggle-button:active,
.menu-toggle-button:link,
.menu-toggle-button:visited {
color: #fff;
}
.menu-item-icon,
.menu-toggle-icon {
margin-right: 10px;
}
.underlay-btn {
background: #000;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
height: 300px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a class="underlay-btn" href="#">Click Me Instead</a>
<div class="sliding-pill-menu">
<ul class="menu-items">
<li class="menu-item"><a class="menu-item-button" href="tel:5555555555"><i class="menu-item-icon fa fa-mobile"></i>Call Now</a></li>
<li class="menu-item"><a class="menu-item-button" href="sms:5555555555"><i class="menu-item-icon fa fa-sms"></i>Send Text</a></li>
<li class="menu-item"><a class="menu-item-button" href="/order-by-date"><i class="menu-item-icon fa fa-calendar"></i>Check Availability</a></li>
<li class="menu-item"><a class="menu-toggle-button" href="#"><i class="fa fa-plus menu-toggle-icon"></i>Get Started</a></li>
</ul>
</div>
Как запретить <ul>
блокировать ссылки за ним? Я пробовал z-index, но я не думаю, что он будет работать в этом случае, так как кнопки приложения должны оставаться выше всего остального.