Javascript CSS-动画整个ul,而不仅仅是新项目进入时的第一行
看一看哪个正在为进入列表的新项目设置动画 但是,动画仅影响第一行,而不是所有行。 我将颜色设置为随机颜色,因此当插入新项目时,您可以实际看到其他行上的“跳跃” 有没有一种方法可以让它只使用CSS影响所有行Javascript CSS-动画整个ul,而不仅仅是新项目进入时的第一行,javascript,css,css-animations,Javascript,Css,Css Animations,看一看哪个正在为进入列表的新项目设置动画 但是,动画仅影响第一行,而不是所有行。 我将颜色设置为随机颜色,因此当插入新项目时,您可以实际看到其他行上的“跳跃” 有没有一种方法可以让它只使用CSS影响所有行 @keyframes enter { 0% { transform: translateX(-100%); margin-left: calc(var(--w) * -1); } 100% { transform: translateX(0px);
@keyframes enter {
0% {
transform: translateX(-100%);
margin-left: calc(var(--w) * -1);
}
100% {
transform: translateX(0px);
margin-left: 0
}
}
这是我的动画,这是我的列表项:
.slidepush li {
--w: 50px;
width: var(--w);
height: 50px;
background-color: red;
vertical-align: top;
border: 0;
padding: 0;
margin: 0;
display: inline-block;
}
.enter {
animation: enter 1s;
}
添加了一个简单的类,该类管理ul并实现add:
class SlidePush {
constructor(ulElement) {
this.element = ulElement;
}
add(item) {
this.element.prepend(item.addClass('enter'));
}
}
const sp = new SlidePush($(".slidepush"));
setInterval(() => {//
var colors = ['red', 'blue', 'green', 'black'];
var color = colors[Math.floor(Math.random() * colors.length)];
sp.add($("<li style='background-color:" + color +" !important;'></li>"));
}, 1000);
类滑动推送{
建造师(UleElement){
this.element=ulElement;
}
添加(项目){
this.element.prepend(item.addClass('enter'));
}
}
const sp=新的SlidePush($(“.SlidePush”);
设置间隔(()=>{//
var colors=['红色'、'蓝色'、'绿色'、'黑色'];
var color=colors[Math.floor(Math.random()*colors.length)];
sp.add($(“”);
}, 1000);
您可以添加动画,考虑到第n个子项,因此您总是添加到每行的第一个子项。您还需要在动画完成后删除动画,以便能够在动画到达下一行时将其再次添加到同一元素
类滑动推送{
建造师(UleElement){
this.element=ulElement;
}
添加(项目){
此.element.prepend(项);
$('.slidepush li:n子项(4n+1)').addClass('enter');
setTimeout(function(){$('.slidepush li:nth child(4n+1)')).removeClass('enter')},1000);
}
}
const sp=新的SlidePush($(“.SlidePush”);
设置间隔(()=>{//
var colors=['红色'、'蓝色'、'绿色'、'黑色'];
var color=colors[Math.floor(Math.random()*colors.length)];
sp.add($(“”);
}, 1200);代码>
div{
--w:200px;
最大宽度:var(--w);
}
.slidepush{
列表样式:无;
边界:0;
填充:0;
保证金:0;
显示:表格;
}
李先生{
--w:50px;
宽度:var(--w);
高度:50px;
背景色:红色;
垂直对齐:顶部;
边界:0;
填充:0;
保证金:0;
显示:内联块;
}
.进入{
动画:输入1s;
位置:相对位置;
z指数:-1;
}
@关键帧输入{
0% {
转化:translateX(-100%);
左边距:计算值(var(--w)*-1);
}
100% {
转换:translateX(0px);
左边距:0;
}
}
您能试试下面的代码吗
类滑动推送{
建造师(UleElement){
this.element=ulElement;
}
添加(项目){
$('.slidepush li').removeClass('enter');
$('.slidepush li').removeClass('push');
$('.slidepush li:n个子项(4n+1)).addClass('push');
this.element.prepend(item.addClass('enter'));
}
}
const sp=新的SlidePush($(“.SlidePush”);
setInterval(()=>{//
var colors=['红色'、'蓝色'、'绿色'、'黑色'];
var color=colors[Math.floor(Math.random()*colors.length)];
sp.add($(“”);
}, 1000);代码>
div{
--w:200px;
最大宽度:var(--w);
}
.slidepush{
列表样式:无;
边界:0;
填充:0;
保证金:0;
显示:表格;
}
李先生{
--w:50px;
宽度:var(--w);
高度:50px;
背景色:红色;
垂直对齐:顶部;
边界:0;
填充:0;
保证金:0;
显示:内联块;
}
.进入{
动画名称:回车;
动画持续时间:1s;
动画填充模式:正向;
}
.推{
动画名称:推;
动画持续时间:1s;
动画填充模式:正向;
}
@关键帧推送{
0% {
左边距:计算值(var(--w)*-1);
}
100% {
左边距:0
}
}
@关键帧输入{
0% {
转化:translateX(-100%);
}
100% {
转换:translateX(0px);
}
}
问题是它有随机跳跃,不平滑,并且只能在固定宽度(例如200px)下工作。@Jony嗯,我尝试了很多方法,但并不容易。。你对这部动画片有什么想法吗?如果你能做一个静态的例子,说明你希望它看起来如何,它可能会再次帮助你,它不是平滑的,它会在每次插入一个项目时出错