【发布时间】:2021-11-15 23:08:19
【问题描述】:
我的代码有问题,可能有人知道解决方案。
我创建了一些卡片,我希望当我点击其中一张时,上方会出现一张更大的新卡片。我用 for 循环很容易做到了,但问题是过渡,我想设置一个平滑过渡。
大卡的初始状态是display: none;和opacity: 0;
我知道我们不能淡出显示无元素,但我的想法是先设置一个display: block,然后在“卡片打开”元素的css中设置一个opacity: 1,并带有一个过渡属性。
但是过渡不起作用,这让我很疯狂,因为我不知道为什么
我在这里分享 codepen 链接:https://codepen.io/arnaudhrt/pen/VwWBLze
和 javascript 代码:
const Card = document.querySelectorAll('.card')
const CardOpen = document.querySelectorAll('.card-open')
const btnClose = document.querySelectorAll('.close')
for(let i = 0 ; i < Card.length ; i++) {
Card[i].addEventListener('click', function() {
CardOpen[i].style.display = 'block'
CardOpen[i].style.opacity = '1'
});
btnClose[i].addEventListener('click', () => {
CardOpen[i].style.opacity = '0'
CardOpen[i].style.display = 'none'
})
}
PS:我无法设置显示块并仅切换不透明度,因为如果我这样做,我将无法使用其他带有 z-index 的卡。
【问题讨论】:
-
你必须转换一些东西。例如,您可以添加/删除具有 opacity:1 的类
-
对不起,不起作用
标签: javascript html css css-transitions