本篇文章给大家带来的内容是关于如何使用CSS和D3实现用文字组成的心形动画效果(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果预览

源代码下载

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,容器中包含 3 个子元素,每个子元素中有一个单词:

aaa

bbb

ccc

居中显示:body {

margin: 0;

height: 100vh;

display: flex;

align-items: center;

justify-content: center;

background-color: black;

}

定义容器尺寸:.love {

width: 450px;

height: 450px;

}

设置文本样式:.love {

position: relative;

}

.love span {

position: absolute;

left: 0;

color: goldenrod;

font-size: 20px;

font-family: sans-serif;

text-shadow: 0 0 1em white;

}

定义文本左右往复移动的动画:.love span {

animation: x-move 10s ease-in-out infinite alternate;

}

@keyframes x-move {

to {

left: 450px;

}

}

定义子元素的下标变量,设置动画延时,使各单词依次入场:.love {

--particles: 3;

}

.love span {

animation-delay: calc(20s / var(--particles) * var(--n) * -1);

}

.love span:nth-child(1) {

--n: 1;

}

.love span:nth-child(2) {

--n: 2;

}

.love span:nth-child(3) {

--n: 3;

}

增加文本沿心形运动的动画效果:.love span {

animation:

x-move 10s ease-in-out infinite alternate,

y-move 20s linear infinite;

}

@keyframes y-move {

0% { transform: translateY(180px); }

10% { transform: translateY(45px); }

15% { transform: translateY(5px); }

18% { transform: translateY(0); }

20% { transform: translateY(5px); }

22% { transform: translateY(35px); }

24% { transform: translateY(65px); }

25% { transform: translateY(110px); }

26% { transform: translateY(65px); }

28% { transform: translateY(35px); }

30% { transform: translateY(5px); }

32% { transform: translateY(0); }

35% { transform: translateY(5px); }

40% { transform: translateY(45px); }

50% { transform: translateY(180px); }

71% { transform: translateY(430px); }

72.5% { transform: translateY(440px); }

75% { transform: translateY(450px); }

77.5% { transform: translateY(440px); }

79% { transform: translateY(430px); }

100% { transform: translateY(180px); }

}

接下来用 d3 批量处理 dom 元素和 css 变量。

引入 d3 库:

声明一个数组,包含若干单词:const words = ['aaa', 'bbb', 'ccc'];

用 d3 创建 dom 元素:d3.select('.love')

.selectAll('span')

.data(words)

.enter()

.append('span')

.text((d) => d);

用 d3 为 css 变量赋值:d3.select('.love')

.style('--particles', words.length)

.selectAll('span')

.data(words)

.enter()

.append('span')

.style('--n', (d, i) => i + 1)

.text((d) => d);

删除 html 文件中相关的 dom 元素和 css 文件中相关的 css 变量。

把数组元素改为“爱”在各种语言的单词:const words = [

'愛', 'Love', 'Amour', 'Liebe', 'Amore',

'Amor', 'Любовь', 'الحب', 'प्यार', 'Cinta',

'Αγάπη', '사랑', 'Liefde', 'Dashuri', 'Каханне',

'Ljubav', 'Láska', 'Armastus', 'Mahal', 'אהבה',

'Szerelem', 'Grá', 'Mīlestība', 'Meilė', 'Любов',

'Љубовта', 'Cinta', 'عشق', 'Dragoste', 'Láska',

'Renmen', 'ፍቅር', 'munaña', 'Sevgi', 'Љубав',

'karout', 'amà', 'amôr', 'kærleiki', 'mborayhu',

'Upendo', 'sòòyayyàà', 'ljubav', 'Սեր', 'сүю',

'сүйүү', 'tia', 'aroha', 'KHAIR', 'प्रेम',

'kjærlighet', 'munay', 'jecel', 'Kärlek', 'soymek',

'Mahal', 'ярату', 'محبت', 'sopp', 'uthando',

'ความรัก', 'Aşk', 'Tình yêu', 'ליבע'];

最后,为第 1 个单词设置特殊的文字样式:.love span:first-child {

color: orangered;

font-size: 3em;

text-shadow:

0 0 0.1em black,

0 0 1em white;

z-index: 1;

}

相关推荐:

css盒心形的代码过程,如何使用CSS和D3实现用文字组成的心形动画效果(附代码)...相关推荐

  1. html鱼动画游戏代码,如何使用CSS和D3实现小鱼游动的交互动画(附代码)

    本篇文章给大家带来的内容是关于如何使用CSS和D3实现小鱼游动的交互动画(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github. ...

  2. php设置加载动画,如何用CSS3制作页面圆圈加载动画(附代码)

    打开页面时,经常会遇到页面正在加载的情况,作为一个前端工程师,你知道如何用CSS3实现页面加载动画效果吗?这篇文章就和大家分享一个炫酷的圆圈加载动画效果的代码,有一定的参考价值,感兴趣的朋友可以看看. ...

  3. html右移动动画效果,图片的左右移动,js动画效果实现代码

    图片的左右移动,js动画效果实现代码 图片的左右移动,动画效果的实现 =(xk+xp)/2) { if (smer == 1) step--; else step++; } else { if (sm ...

  4. MATLAB坐标系变换动画gif(附代码):坐标系旋转动画+坐标系平移动画代码

    MATLAB坐标系变换动画gif(附代码) 以之前的文章中的例题为例,绘制一个向量和一个运动坐标系在空间中的变换过程,并生成gif动画. 已知坐标系{B}的初始位姿与{A}重合,首先{B}相对于{A} ...

  5. android金币动效_Android 仿余额宝数字跳动动画效果完整代码

    一:想都不用想的,有图有真相,看着爽了,在看下面源码 二:实例源码分析 ①:首先定义接口 package com.demo.tools.view; /** * 数字动画自定义 * * @author ...

  6. 右上角鼠标滑过展开收缩动画效果js代码的演示页面

    http://files.cnblogs.com/files/tanlingdangan/top_right.rar.gz 右上角鼠标滑过展开收缩动画效果js代码的演示页面http://www.51x ...

  7. 好看的多级菜单html,jQuery实现美观的多级动画效果菜单代码

    本文实例讲述了jQuery实现多级动画效果菜单代码.分享给大家供大家参考.具体如下: 这是基于jQuery实现的一款多级动画菜单源代码,动画效果流畅,确实不错的动画菜单,欢迎大家试用.这种菜单 一般应 ...

  8. android 文字跳动动画,Android 仿余额宝数字跳动动画效果完整代码

    Android 仿余额宝数字跳动动画效果完整代码 发布时间:2020-08-24 06:55:30 来源:脚本之家 阅读:120 作者:曾淘 一:想都不用想的,有图有真相,看着爽了,在看下面源码 二: ...

  9. android仿微信红包动画,Android仿打开微信红包动画效果实现代码

    首先看下效果: 实现原理: 准备3张不同角度的图片,通过AnimationDrawable帧动画进行播放即可 代码实现: 1.编写动画xml文件: 根标签为animation-list,其中onesh ...

最新文章

  1. memset()的效率以及源码分析
  2. 各个 Android Gradle 插件版本所需的 Gradle 版本
  3. Facts have proved that this is more popular than his article
  4. 《计算机网络》学习笔记 ·007【无线网络】
  5. hdu 6088 Rikka with Rock-paper-scissors (2017 多校第五场 1004) 【组合数学 + 数论 + 模意义下的FFT】...
  6. 浅析如何让Spring 来管理Action的配置方法
  7. Android 抓包工具
  8. qq服务器正在升级维护中,建议您稍后再尝试打开.谢谢!,用友通维护锦集
  9. SYN包与SYN攻击原理
  10. 阿里云服务器被恶意程序攻击
  11. 为Visual Studio创建项目模板(VSIX / C#/ 2019)
  12. document.onclick是什么
  13. mysql多表关联查询慢_mysql数据库多表关联查询的慢SQL优化
  14. instagram架构_提升Instagram销量的8条秘诀
  15. ListView 实现阻尼回弹效果 并去除边缘阴影
  16. Git代码管理流程(分支、fork、tag)
  17. 与大数据相关热门岗位有什么?
  18. excel筛选情况下数字下拉递增的方法
  19. Kindeditor 图片粘贴上传后设置图片属性
  20. 三月已逝,接下来是忙碌的四月

热门文章

  1. 关于物联网卡,您想了解的都在这里
  2. 记事狗微博php,记事狗微博系统_366rtc
  3. 前端des加密,后端des解密
  4. word 去除页眉默认的横线及python操作分析
  5. 那些年踩过的坑-之《Android Q-高通平台UAC(USB Audio Class)调试记录》
  6. [图像处理-1]:颜色中英文对照表 颜色名字 色彩名称
  7. MongoDB可视化工具之Studio 3T的使用
  8. 计算机科学类专升本复习之“C语言结构体”详解(初稿)
  9. 阿里系App抓包详细分析
  10. C++图片格式转换:BMP转JPEG