gpt4 book ai didi

每个元素的 CSS 透视图

转载 作者:行者123 更新时间:2023-11-28 15:48:40 31 4
gpt4 key购买 nike

我使用的是卡片列表,点击后可以翻转这些卡片以显示其他信息。我想添加一些视角以使其看起来不错。

我的问题是,要为列表提供一些视角,我需要将视角附加到 ul 元素。原点然后由父级的大小定义,这使得中间的元素在没有透视的情况下转动,而顶部和底部的元素以非常丑陋的方式转换。

有没有办法让每个元素都有自己的视角以获得流畅的 3D 外观,最好不用 JavaScript?

ul {
perspective: 600px;
}
li {
list-style: none;
width: 100px;
height: 100px;
margin: 5px;
background-color: lightgrey;
transition: all .3s ease;
}
li:hover {
transform: rotateY(180deg);
}
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>

</body>

最佳答案

Is there a way to give each element it's own perspective

我不知道我是否正确理解了您的问题,但我认为以下是您要查找的内容。通过赋予 perspective 值以及 transform 属性,您可以直接将它赋予每个元素(而不是像设置 时那样创建 3d 空间ul 上的 >perspective 属性。

这意味着每个元素无论是第一个元素、中间元素还是最后一个元素都将以与另一个元素相同的方式旋转。

透视也应用于未悬停或默认状态(li 选择器),因为反向转换也应该正确发生。如果未设置,(a) 悬停期间无法正确应用透视图,(b) 有时会在快速悬停期间导致抖动。

您可以在 this CSS Tricks article 中找到更多信息.正如您在此处的演示中看到的那样,当视角直接分配给子级时,每个子级看起来都一样,这与应用于父级时不同。

(注意: (1) 我已经为演示稍微更改了过渡持续时间。(2) 你必须尝试透视值以获得您正在寻找的确切效果。我会将调整留给您。)

li {
list-style: none;
width: 100px;
height: 100px;
margin: 5px;
background-color: lightgrey;
transition: all 1s ease;
transform: perspective(125px) rotateY(0deg);
}
li:hover {
transform: perspective(125px) rotateY(180deg);
}
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>

</body>

关于每个元素的 CSS 透视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42246691/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com