【发布时间】:2021-01-12 07:35:07
【问题描述】:
我的具体用例是图像滑块,但图像不想留在网格中。
这是我最新的方法:
滑块必须在容器 div 中,以便可以在网站上移动。该容器还包含当前显示的大图像下方的一些小缩略图图像,并限制每个大图像的最大宽度。
它包含一个 div 作为网格,其中包含所有要滑动的图像。它比容器大,因此一次只能看到一张图像。
查看 codepen 以获得更好的理解 -> https://codepen.io/Mr-Law/pen/bGwjqWw
HTML
<div id="container">
<div class="big_image" style="--n:7; --i:6;">
<div>
<img src="img1.jpg">
</div>
<div>
<img src="img2.jpg">
</div>
<div>
<img src="img3.jpg">
</div>
<div>
<img src="img4.jpg">
</div>
<div>
<img src="img5.jpg">
</div>
<div>
<img src="img6.jpg">
</div>
<div>
<img src="img7.jpg">
</div>
</div>
<div class="w3-row-padding w3-section">
<div class="w3-col demo" style="cursor:pointer" onmouseover="currentDiv(1)">
<img class="preview-image" src="img1.jpg">
</div>
<div class="w3-col demo" style="cursor:pointer" onmouseover="currentDiv(2)">
<img class="preview-image" src="img2.jpg">
</div>
<div class="w3-col demo" style="cursor:pointer" onmouseover="currentDiv(3)">
<img class="preview-image" src="img3.jpg">
</div>
<div class="w3-col demo" style="cursor:pointer" onmouseover="currentDiv(4)">
<img class="preview-image" src="img4.jpg">
</div>
<div class="w3-col demo" style="cursor:pointer" onmouseover="currentDiv(4)">
<img class="preview-image" src="img5.jpg">
</div>
<div class="w3-col demo" style="cursor:pointer" onmouseover="currentDiv(6)">
<img class="preview-image" src="img6.jpg">
</div>
<div class="w3-col demo" style="cursor:pointer" onmouseover="currentDiv(7)">
<img class="preview-image" src="img7.jpg">
</div>
</div>
</div>
CSS
#container {
width: 30em;
height: 25em;
overflow-x: hidden;
}
.big_image {
--n: 1;
display: grid;
grid-auto-flow: column;
align-items: center;
width: calc(var(--n) * 100%);
object-fit: contain;
height: 85%;
max-height: 100vh;
}
.big_image img {
width: 100%;
height: 100%;
user-select: none;
pointer-events: none;
transform: translate(calc(var(--tx, 0px) + var(--i, 0) * -100%));
}
.smooth {
transition: transform calc(var(--f, 1) * 0.5s)
cubic-bezier(1, 1.59, 0.61, 0.74);
}
.big_image > div {
object-fit: cover;
width: 100%;
max-height: 100%;
}
.preview-image {
position: relative;
z-index: 1;
max-width: 100%;
max-height: 100%;
vertical-align: middle;
}
.img-highlight {
-webkit-box-shadow: #FFF 0 -1px 4px, #ff0 0 -2px 5px, #ff8000 0 -10px 10px, 5px 5px 4px 5px rgba(0,0,0,0);
box-shadow: #FFF 0 -1px 4px, #ff0 0 0 5px, #ff8000 0 0 10px, 5px 5px 4px 5px rgba(0,0,0,0);
}
.w3-col{
float:left;
width: 11.4%;
height: 3em;
border: 0.1em solid #000;
margin: 0 0.34em;
line-height: calc(3em - 2px);
text-align: center;
}
到目前为止,我尝试了无数种变体,但没有找到解决办法。
【问题讨论】: