此bounty已结束。回答此问题有资格获得+100声望赏金。赏金宽限期将在1小时后结束。Smack Alpha正在寻找来自信誉良好的来源的答案。
我正在创建一个类似于以下设计的全景3D旋转木马:
然而,我目前的实现没有达到同样的效果,旋转木马看起来像这样:
的
我想在CSS中实现这个carousel
以下是我目前为止尝试过的CSS代码:
.coverflow-container {
perspective: 1000px;
width: 100%;
height: 250px;
position: relative;
overflow: hidden;
}
.coverflow-item {
position: absolute;
width: 200px; /* Width of each slide */
height: 250px; /* Height of non-active slides */
left: 50%;
transform-origin: center;
transition: transform 0.5s ease, z-index 0s linear, height 0.5s ease;
display: flex;
justify-content: center;
align-items: center;
background: #b5b4b6;
color: white;
border: 1px solid black;
box-sizing: border-box;
opacity: 0.7;
}
.coverflow-item.active {
background: #272a36;
z-index: 3;
opacity: 1;
height: 90%; /* Larger height for the active slide */
}
.coverflow-controls {
position: absolute;
width: 100%;
bottom: 10px;
text-align: center;
padding-top: 100px;
}
button {
padding: 10px;
margin: 0 10px;
font-size: 16px;
cursor: pointer;
}
字符串
这是我的CodeSandbox的链接:https://codesandbox.io/s/coverflow-swiper-5kywvv?file=/src/App.css
我试着调整CSS来达到这个效果。但是我无法在UI中得到同样的效果。
我希望我的旋转木马是这样的
有没有人可以帮助我如何调整我的CSS,以达到预期的效果?
3条答案
按热度按时间g0czyy6m1#
我会纠正你最初的解决方案,继续朝你的方向努力。
1.我会把tiles放到一个flex容器中,而不是使用
position: absolute
。把.coverflow-container
作为一个flex。这样,你就不必对每个元素应用horismatic transition。相反,当活动tile改变时,你可以对整个容器进行移位。1.我建议不要使用scale,而是在每个tile上应用
transformZ
。因为你在tiles容器上使用perspective
,我们可以在tile上使用它的优势,将它们从前面移回来。tile离中心越近,Z轴就越远。1.为了获得更柔和的效果,我还将在每个元素上逐步执行
rotateY
-瓷砖离中心越远,Y轴上的旋转越大。此外,瓷砖旋转得越多,它就越“收缩”,因此我们需要将其移近中心。为此,我们使用translateX
。1.请记住,变换的顺序很重要。所以我们首先在其位置上移动一个瓷砖,然后旋转。
以下是我做的主要改动。
字符串
完整的解决方案是here
解决方案如下所示:x1c 0d1x
fcipmucu2#
复制:如何使用css和reactjs获得这个曲线效果?
截图完全来自上面链接中的@imhvost代码
字符串
8yoxcaq73#
在您的代码https://codesandbox.io/s/coverflow-swiper-5kywvv?file=/src/App.css中
请在第6行中注解Overflow属性
字符串
会成功的
[输出画面]:https://i.stack.imgur.com/0kuvi.png