我正在为我的网站制作一个轻量级的响应式 jQuery 滑块,并使用非常常见的标记:
HTML:
<div id="slider">
<ul>
<li><img class="active" src="slide1.jpg" alt=""></li>
<li><img src="slide2.jpg" alt=""></li>
<li><img src="slide3.jpg" alt=""></li>
</ul>
</div>
CSS:
#slider {
width:80%;
max-width:800px;
margin:0 auto;
}
#slider ul {
margin:0px;
padding:0px;
list-style:none;
width:100%;
}
#slider ul li {
width:100%;
position:relative;
}
#slider img {
width:100%;
position:absolute;
top:0px;
box-shadow:0px 20px 40px rgba(0,0,0,.66);
}
#slider img.active {
z-index:1;
}
我遇到的问题是我的绝对定位幻灯片正在做他们应该做的事情,并将它们从页面结构中删除。(这不是我想要他们做的,但这是堆叠它们的简单方法)。
我今天一直在阅读有关 CSS 伪元素的内容以及人们使用它们所做的所有很酷的事情。这让我想到......它们可以用来“清除”这些绝对定位的元素吗?我的想法是,可能有一种方法可以执行以下操作:
#slider img:before {
content:"";
display:block;
position:static;
}
显然,要实现这一点,需要的不仅仅是那些样式(因为它没有按照我想要的方式呈现东西......我知道此时你可能在想“为什么不只指定容器的高度并完成用它吗?”。好吧,幻灯片是为了在它们收缩时做出响应,容器的高度也是如此。
我真的想尽可能多地做到这一点,而不是求助于 jQuery 来设置容器相对于图像高度的高度......这很诱人,但我认为有办法解决这个问题......
我在网上(还)找不到任何关于如何做到这一点(或者如果可能的话)的信息。一些 CSS 大师可以站出来帮助我吗?我很想听听堆叠幻灯片的替代方法,或者(主要)是否可以使用伪元素来保留我绝对定位的图像周围的容器高度......
更新:这里的 jsFiddle:http: //jsfiddle.net/derekmx271/Hu6Yf/
更新:接近解决方案(只需要锁定与幻灯片相同的尺寸):) http://jsfiddle.net/derekmx271/T7A7M/