【问题标题】:CSS nested (tr,td) color transition times stackingCSS 嵌套 (tr,td) 颜色过渡时间堆叠
【发布时间】:2023-03-26 18:43:01
【问题描述】:

在此示例中,我有一个包含“标记”单元格和“长按”单元格的表格。

我的目标:

  • 单击标记单元格“标记”行。 Javascript 切换“标记”类(灰色背景和白色文本)。

  • 按住长按单元格会在 1 秒内转换文本和背景颜色。在实践中,我有一些 javascript 会在延迟后在编辑器中交换,但我在本示例中省略了它。

我遇到的问题是行转换和单元格转换似乎在堆叠,尽管仅针对文本颜色(我对此感到非常困惑)。所以当我标记行时,整行背景在 0.5s 内变成灰色,然后文字变成白色,看起来很奇怪。

如果我从长按单元格中删除过渡,则行过渡正常工作,但随后单元格在单击释放时恢复为默认值,我希望它恢复正常。

table = document.querySelector('table')
for (i=0;i<5;i++) {
	tr = document.createElement('tr')
	td1 = document.createElement('td')
	td1.innerText = 'Marker'
	td1.addEventListener('click', function () { this.parentNode.classList.toggle('marked') })

	td2 = document.createElement('td')
	td2.innerText = 'Long-press'
	
	td3 = document.createElement('td')
	td3.innerText = 'Other cell'
	
	tr.appendChild(td1)
	tr.appendChild(td2)
	tr.appendChild(td3)
	table.appendChild(tr)
}
table td { border: 1px solid black; }
table tr {
	transition: 0.5s;
}
tr.marked {
	background: gray;
	color: white;
}
tr td:nth-child(2) {
	transition: 1s;
}
tr td:nth-child(2):active {
	transition: 1s 0.2s;
	background: aqua;
	color: blue;
}
<table>
</table>

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    您在tr td:nth-child(2) 中定义了一个导致重叠的额外转换。删除它,事情应该会按预期工作。

    table = document.querySelector('table')
    for (i = 0; i < 5; i++) {
      tr = document.createElement('tr')
      td1 = document.createElement('td')
      td1.innerText = 'Marker'
      td1.addEventListener('click', function() {
        this.parentNode.classList.toggle('marked')
      })
    
      td2 = document.createElement('td')
      td2.innerText = 'Long-press'
    
      td3 = document.createElement('td')
      td3.innerText = 'Other cell'
    
      tr.appendChild(td1)
      tr.appendChild(td2)
      tr.appendChild(td3)
      table.appendChild(tr)
    }
    table td {
      border: 1px solid black;
    }
    
    table tr td {
      transition: 0.5s;
    }
    
    tr.marked {
      background: gray;
      color: white;
    }
    
    tr td:nth-child(2):active {
      transition: 1s 0.2s;
      background: aqua;
      color: blue;
    }
    <table>
    </table>

    【讨论】:

    • 正如我在帖子末尾所说的那样,当您在长按单元格上释放鼠标按钮时,现在没有过渡。它突然变回白色,我希望它从蓝色变为白色。
    • 好吧,看起来确实更好。我想没有办法让长按动画特别具有与整行动画不同的过渡时间?
    • 似乎如果有不同的,它将覆盖行转换。如果我们要结合一些JS可能可以实现
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2014-11-15
    • 2015-12-12
    • 2016-01-25
    • 1970-01-01
    相关资源
    最近更新 更多