【发布时间】:2021-08-04 09:45:25
【问题描述】:
我有一个使用 swiperjs 的滑块,我想将下拉菜单添加到 swiper-slide。默认情况下,所有 swiper 容器都是相对位置,所以我将它们全部更改为静态位置,但下拉菜单无法转义到根容器(相对位置)。
这里是 jsfiddle 中的演示:https://jsfiddle.net/7uas82rz/20/
HTML
<div class="freedom my-5">
<div class="swiper-container myswiper">
<div class="swiper-wrapper">
<div class="swiper-slide">
<div class="dropdown">
<a href="#" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span>SLIDE 1</span>
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu 1</a></li>
<li><a class="dropdown-item" href="#">Menu 2</a></li>
</ul>
</div>
</div>
<div class="swiper-slide">
<span>SLIDE 2</span>
</div>
</div>
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</div>
CSS
.freedom{
position:relative;
}
.swiper-container, .swiper-wrapper, .swiper-slide{
position:static !important;
}
.swiper-container > .swiper-wrapper > .swiper-slide{
width:200px;
}
Javascript
const swiper = new Swiper(".myswiper",{
speed:1000,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
slidesPerView: 'auto',
initialSlide:0,
loop:true,
loopedSlides:20,
visibilityFullFit: true,
autoResize: false,
spaceBetween: 0,
});
【问题讨论】:
-
这是因为
overflow: hidden设置在父元素.swiper-container上:这将有效地隐藏溢出的内容(包括您的下拉菜单)。但是,删除此样式可能不是一个好主意,因为它可能会影响滑块的外观。 -
@Terry 是的,我注意到了,但我在这里做了一些搜索,解决方案是将 child 设置为绝对位置以逃避。可悲的是,它不适用于我的情况。
-
不幸的是,你不能用 css 做到这一点——你不能让 x 隐藏和 y 可见(见stackoverflow.com/questions/6421966/…)——你需要将你的下拉菜单移到溢出 div 之外显示
标签: css escaping overflow hidden swiperjs