使用伪元素生成爱心

不多bb直接上代码

 .love {position: fixed;width: 20px;height: 20px;background-color: red;transform: rotate(45deg);opacity: 0;animation: love 1s ease;}.love::after {position: absolute;display: block;content: "";width: 20px;height: 20px;border-radius: 50%;transform: translate(0px, -10px);background-color: inherit;}.love::before {position: absolute;display: block;content: "";width: 20px;height: 20px;border-radius: 50%;background-color: inherit;transform: translate(-10px, 0px);}
<div class='love'></love>

我们可以通过使用伪元素结合之前说过的定位和css3的transform属性来生成爱心

那么我们想点击页面让爱心随着鼠标移动并且随机颜色的爱心,且当鼠标点击后爱心往上移动并逐渐失效

先申明一个函数 生成十六进制的颜色

 function getColor() {let newStr = ''let str = '1234567890ABCDEF'for (let i = 0; i < 6; i++) {newStr += str.charAt(Math.floor(Math.random() * 16))}return '#' + newStr}console.log(getColor());

然后动画属性

 @keyframes love {0% {transform: rotate(45deg) translateY(0);opacity: 1;}100% {transform: rotate(45deg) translateY(-15px);opacity: 0;}}

现在需要的效果是鼠标点击页面,页面生成爱心,爱心的颜色是随机的。并且爱心有动画效果
思路:
1 点击页面生成div
2 给div加上love属性 让它前后有伪元素生成爱心
3 获取鼠标的位置赋值给div的left top
4 将生成的div放到body中
5 给div赋值不同颜色
6 一段时间让dom消失
附上完整代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>@keyframes love {0% {transform: rotate(45deg) translateY(0);opacity: 1;}100% {transform: rotate(45deg) translateY(-15px);opacity: 0;}}html,body {height: 100%;width: 100%;}* {margin: 0;padding: 0;}.love {position: fixed;width: 20px;height: 20px;background-color: red;transform: rotate(45deg);opacity: 0;animation: love 1s ease;}.love::after {position: absolute;display: block;content: "";width: 20px;height: 20px;border-radius: 50%;transform: translate(0px, -10px);background-color: inherit;}.love::before {position: absolute;display: block;content: "";width: 20px;height: 20px;border-radius: 50%;background-color: inherit;transform: translate(-10px, 0px);}</style>
</head><body><!-- <div class="love"></div> -->
</body>
<script>// 编写一个函数,获得一个十六进制的随机颜色的字符串(例如:#20CD4F)function getColor() {let newStr = ''let str = '1234567890ABCDEF'for (let i = 0; i < 6; i++) {newStr += str.charAt(Math.floor(Math.random() * 16))}return '#' + newStr}console.log(getColor());// 给页面绑定点击事件document.querySelector('body').onclick = function(e) {let div = document.createElement('div')div.className = 'love'//获取鼠标位置 xy 位置let x = e.clientXlet y = e.clientYdiv.style.left = 5 + x + 'px'div.style.top = -30 + y + 'px'document.body.append(div);div.style.background = getColor()setTimeout(() => {div.remove()}, 500)}
</script></html>

上面的代码可以直接运行

css特效(使用伪元素生成随机颜色爱心)相关推荐

  1. 【CSS】457- CSS 伪元素指南

    层叠样式表(css)是一种独立的语言,用于描述web应用程序的表示.这涉及到诸如颜色.字体和HTML元素布局的完全控制等概念. 在本文中,将为您介绍级联样式表中的伪元素,以及如何将它们与兼容性一起使用 ...

  2. [css] 如何使用伪元素实现增大点击热区来增加用户体验?

    [css] 如何使用伪元素实现增大点击热区来增加用户体验? .extend-via-pseudo-elem {position: relative; }.extend-via-pseudo-elem: ...

  3. CSS 中的伪元素是什么,有什么用处

    CSS 中的伪元素是一种特殊的元素,它们不是 HTML 元素,但通过 CSS 属性和关系运算符,我们可以为它们指定与实际 HTML 元素相同的样式.伪元素可以用于实现一些特殊的效果,比如动画.阴影.弹 ...

  4. 并不简单的翻页时钟(一):样式篇(Flex布局、line-height、data-set用法、css before after伪元素)

    目录 并不简单的翻页时钟 我以为的翻页时钟 实际上的翻页时钟 关键的知识点 效果展示 代码解析 HTML CSS 详解CSS 1.display:flex 元素居中 2.:before .:after ...

  5. css伪元素覆盖,CSS :befor :after 伪元素的巧妙用法

    本篇重点介绍CSS中的:befor.:after创建的伪元素几种使用场景,如填充文本.作为iconfont.进度线.时间线以及几何图形. 1. 介绍 1.1 说明 CSS中的:befor.:after ...

  6. CSS before / after伪元素

    CSS伪类对象 after和before的用法 IE对after.before是不支持的,请在firefox.opera.chrome下试调! :before 语法:Selector : before ...

  7. HTML与CSS基础之伪元素(五)

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>伪元素 ...

  8. Python攻城师的成长————css语法、伪元素选择器(部分)

    今日学习目标 熟悉并掌握css中各种修改属性的方法. 文章目录 今日学习目标 学习内容 一.伪元素选择器 css操作文本内容 选择器优先级 二.css修改属性 css修改文字属性 css修改字体属性 ...

  9. CSS如何使用伪元素选择器给所有的div里的文本前面添加小写罗马数字编号

    一.需求说明 假设现在我有三个div标签,它们在浏览器里显示的内容如下图所示: 我希望使用CSS给它们全部添加上序号,添加好序号后的样子如下图所示: 可以看到序号是递增的,不是普通的阿拉伯数字,而是小 ...

最新文章

  1. HDU4720(最小圆覆盖问题)
  2. Android之图片加载框架Picasso源码解析
  3. java redis多主多备_java 集成Redis 一主多从
  4. 第一周周四DailyReporting——PM(李忠)
  5. ubuntu18的网关ip在哪里配_技术|如何在 Ubuntu 18.04 LTS 中配置 IP 地址
  6. 前端框架Bootstrap
  7. 关于Stringbuffer的需要注意的几点
  8. 国家缩写大全 mysql_所有国家英文缩写
  9. 【ERP】概念_总账系统、记账、往来科目
  10. 八款值得尝试的精美的 Linux 发行版(2017 版)
  11. codeigniter mysql -1_mysql-Codeigniter-多个数据库连接
  12. Godaddy网站SSL证书安装
  13. VS Code下载Beautify扩展插件 | CSDN创作打卡
  14. 计算机内存和显卡,电脑显卡和内存怎么看
  15. 【每日早报】2019/08/14
  16. DB2数据库开发工具:DBVisualizer
  17. element 修改分页样式_vue想改变element分页样式
  18. 图书销售管理系统设计与实现
  19. CodeForces 597 A. Divisibility(坑,满满的都是坑)
  20. 200行代码为大家解读这个Github冠军项目背后的定时器

热门文章

  1. 验证邮箱地址和手机号码
  2. Plant Simulation中的“开机自启”-autoexec
  3. 【Python】matplotlib画图设置标题、轴标签、刻度、刻度标签(系列1)
  4. 51单片机学习笔记之数码管1显示数字0以及使用蜂鸣器
  5. 酷家乐前端开发工程师一面
  6. UWB超宽带 DW1000 通道和带宽
  7. 文化袁探索专栏——React Native启动流程
  8. 雷电三接口有什么用_三坐标为什么用汽浮轴承?
  9. 多媒体——音频——利用MediaRecorder录制音频
  10. Android实战技巧之三十九:短信收发