如果在appendChild添加动画

本文介绍了一种在网页中为新增DOM元素添加过渡效果的方法。通过CSS定义关键帧动画实现平滑过渡,当按钮被点击时,新创建的列表项会以淡入的方式展现。

现在越来越多的交互设计师都希望添加动效,但有的动效的时间又比较复杂

今天提供一个很简单的动效,只需给要append的节点添加一个样式上去,并修改相对应的样式名称

把#parentElement > li 的样式改一下在添加时就会有动效 demo: http://fiddle.jshell.net/force2002/ua03ptzL/

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="viewport" content="width=device-width"/>
<title>Untitled</title>
<style>
@-webkit-keyframes nodeInserted {  
  from { opacity: 0; }
  to { opacity: 1; }  
}
#parentElement > li {
    -webkit-animation-duration: 1s;
    -webkit-animation-name: nodeInserted;
}
</style>
</head>
<body>
<div class="g-doc">
    <ul id="parentElement">
      
    </ul>
    <input type="button" value="插入" id="insert"/>
</div>
<script>
  var elm = document.getElementById('insert');
  var parentElement = document.getElementById('parentElement');
  elm.addEventListener('click',function(){
    var li = document.createElement('li');
    li.innerText ='Element has been injected!'
    parentElement.appendChild(li);
  })
</script>

</body>
</html>


<think>好的,用户想在表白代码中添加动画果,使用CSS、JavaScript或Python库。我需要分步骤解答,并提供示例代码。首先,考虑用户可能的技能水平,他们可能对前端技术比较熟悉,所以先从CSS和JavaScript入手,再介绍Python库,比如Tkinter或PyGame。首先,CSS动画部分,需要给出一个简单的例子,比如心跳果。使用@keyframes和transform的scale属性,这样文字或图形会有放大缩小的果,看起来像心跳。同时,颜色渐变也可以增加视觉果,比如示例中的背景色变化。引用中的perspective-origin和transform属性可能相关,但用户可能更需要基础示例,所以保持简单。然后,JavaScript部分,用户可能需要更交互式的动画,比如点击事件触发动画。使用requestAnimationFrame来实现平滑的移果,比如文字左右移。这里要注意代码的易读性,函数封装和清除动画的步骤要清晰。Python方面,用户可能不熟悉GUI编程,所以选择Tkinter库,因为它内置,无需安装。示例中使用canvas的move方法移文字,循环移产生动画果。另外,提到PyGame,但考虑到安装可能麻烦,可能作为备选方案。 需要检查每个示例的语法是否正确,比如CSS中的拼写,JavaScript的定时器处理,Python的mainloop调用。同时,确保代码格式正确,使用代码块,并注释关键部分。最后,生成相关问题,覆盖不同技术栈的动画实现、性能优化、组合使用等,帮助用户进一步探索。注意引用标识的位置,引用中的CSS属性可能相关,但用户的问题更偏向实现方法,所以适当提及即可。</think>### 如何在编程中添加表白动画果 #### 一、使用CSS动画(适合网页表白) 1. **心跳文字动画** 通过`@keyframes`定义缩放和颜色渐变: ```css .heartbeat { animation: heartbeat 1.2s infinite; color: #ff1493; font-size: 50px; } @keyframes heartbeat { 0% { transform: scale(1); } 15% { transform: scale(1.3); } 30% { transform: scale(1); } 45% { transform: scale(1.2); } 60% { transform: scale(1); } } ``` ```html <div class="heartbeat">我喜欢你❤️</div> ``` 2. **渐入背景特** 结合`transform`和`background`属性实现态渐变(参考引用[^2]): ```css #loveBox { width: 300px; height: 200px; animation: gradientFlow 4s infinite; } @keyframes gradientFlow { 0% { background: linear-gradient(45deg, #ff6b6b, #ff8e8e); } 50% { background: linear-gradient(135deg, #ff8e8e, #ff6b6b); } 100% { background: linear-gradient(225deg, #ff6b6b, #ff8e8e); } } ``` #### 二、使用JavaScript动画(交互式果) 1. **点击触发漂浮爱心** 通过`createElement`态生成元素: ```javascript function createHeart() { const heart = document.createElement('div'); heart.style.position = 'absolute'; heart.innerHTML = '❤️'; document.body.appendChild(heart); let x = 0, y = window.innerHeight; const animate = () => { if (y < -50) heart.remove(); else { x += Math.random() * 2 - 1; y -= 2; heart.style.transform = `translate(${x}px, ${y}px)`; requestAnimationFrame(animate); } }; animate(); } document.addEventListener('click', createHeart); ``` #### 三、使用Python动画库(桌面应用) 1. **Tkinter文字移动画** 通过`canvas.move`实现基础动画: ```python import tkinter as tk def animate_text(): x = 0 while x < 300: canvas.move(text_id, 1, 0) x += 1 root.update() root.after(10) root = tk.Tk() canvas = tk.Canvas(root, width=400, height=200) canvas.pack() text_id = canvas.create_text(50, 100, text="❤️ 做我女朋友好吗?", font=('Arial',20)) animate_text() root.mainloop() ``` 2. **PyGame高级特**(需安装`pygame`库) 实现旋转爱心图案: ```python import pygame, math pygame.init() screen = pygame.display.set_mode((800,600)) clock = pygame.time.Clock() angle = 0 while True: screen.fill((0,0,0)) x = 400 + 100 * math.cos(angle) y = 300 + 100 * math.sin(angle) pygame.draw.circle(screen, (255,0,0), (int(x), int(y)), 30) angle += 0.05 pygame.display.flip() clock.tick(60) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值