首页 > 其他分享 >HTML+CSS实现点赞效果

HTML+CSS实现点赞效果

时间:2024-10-22 10:18:53浏览次数:3  
标签:heart container SVG svg keyframes HTML filled 点赞 CSS

效果演示

HTML+CSS实现点赞效果
在这里插入图片描述

HTML

<div class="heart-container" title="Like">
  <input type="checkbox" class="checkbox" id="Give-It-An-Id">
  <div class="svg-container">
    <svg viewBox="0 0 24 24" class="svg-outline" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M17.5,1.917a6.4,6.4,0,0,0-5.5,3.3,6.4,6.4,0,0,0-5.5-3.3A6.8,6.8,0,0,0,0,8.967c0,4.547,4.786,9.513,8.8,12.88a4.974,4.974,0,0,0,6.4,0C19.214,18.48,24,13.514,24,8.967A6.8,6.8,0,0,0,17.5,1.917Zm-3.585,18.4a2.973,2.973,0,0,1-3.83,0C4.947,16.006,2,11.87,2,8.967a4.8,4.8,0,0,1,4.5-5.05A4.8,4.8,0,0,1,11,8.967a1,1,0,0,0,2,0,4.8,4.8,0,0,1,4.5-5.05A4.8,4.8,0,0,1,22,8.967C22,11.87,19.053,16.006,13.915,20.313Z">
      </path>
    </svg>
    <svg viewBox="0 0 24 24" class="svg-filled" xmlns="http://www.w3.org/2000/svg">
      <path
        d="M17.5,1.917a6.4,6.4,0,0,0-5.5,3.3,6.4,6.4,0,0,0-5.5-3.3A6.8,6.8,0,0,0,0,8.967c0,4.547,4.786,9.513,8.8,12.88a4.974,4.974,0,0,0,6.4,0C19.214,18.48,24,13.514,24,8.967A6.8,6.8,0,0,0,17.5,1.917Z">
      </path>
    </svg>
    <svg class="svg-celebrate" width="100" height="100" xmlns="http://www.w3.org/2000/svg">
      <polygon points="10,10 20,20"></polygon>
      <polygon points="10,50 20,50"></polygon>
      <polygon points="20,80 30,70"></polygon>
      <polygon points="90,10 80,20"></polygon>
      <polygon points="90,50 80,50"></polygon>
      <polygon points="80,80 70,70"></polygon>
    </svg>
  </div>
</div>
  • heart-container:这是最外层的容器,包含了一个复选框和SVG容器。
  • checkbox:这是一个隐藏的复选框,用于触发点赞动画。
  • svg-container:这个容器用于包裹所有的SVG图形。
  • svg-outline:这是一个SVG图形,显示心形的轮廓。
  • svg-filled:这是另一个SVG图形,显示填充的心形。
  • svg-celebrate:这是一个SVG图形,用于显示庆祝动画(例如,心形跳动)。

CSS

.heart-container {
  --heart-color: rgb(255, 91, 137);
  position: relative;
  width: 50px;
  height: 50px;
  transition: .3s;
}
.heart-container .checkbox {
  position: absolute;
  width: 100%;
  height: 100%;
  opacity: 0;
  z-index: 20;
  cursor: pointer;
}
.heart-container .svg-container {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}
.heart-container .svg-outline,
        .heart-container .svg-filled {
  fill: var(--heart-color);
  position: absolute;
}

.heart-container .svg-filled {
  animation: keyframes-svg-filled 1s;
  display: none;
}
.heart-container .svg-celebrate {
  position: absolute;
  animation: keyframes-svg-celebrate .5s;
  animation-fill-mode: forwards;
  display: none;
  stroke: var(--heart-color);
  fill: var(--heart-color);
  stroke-width: 2px;
}
.heart-container .checkbox:checked~.svg-container .svg-filled {
  display: block
}
.heart-container .checkbox:checked~.svg-container .svg-celebrate {
  display: block
}
@keyframes keyframes-svg-filled {
  0% {
    transform: scale(0);
  }

  25% {
    transform: scale(1.2);
  }

  50% {
    transform: scale(1);
    filter: brightness(1.5);
  }
}
@keyframes keyframes-svg-celebrate {
  0% {
    transform: scale(0);
  }

  50% {
    opacity: 1;
    filter: brightness(1.5);
  }
  100% {
    transform: scale(1.4);
    opacity: 0;
    display: none;
  }
}
  • position: relative;:设置相对定位,使得子元素可以相对于这个容器进行定位。
  • width 和 height:设置元素的宽度和高度。
  • transition:设置过渡效果,用于平滑地过渡变化。
  • opacity: 0;:设置透明度为0,使复选框不可见。
  • z-index:设置元素的堆叠顺序。
  • cursor: pointer;:设置鼠标悬停时的指针样式。
  • display: flex;:设置容器为弹性盒模型,用于居中SVG图形。
  • justify-content 和 align-items:用于在弹性盒模型中水平和垂直居中内容。
  • fill:设置SVG图形的填充颜色。
  • animation:定义动画效果,包括动画名称、持续时间和其他动画属性。
  • animation-fill-mode: forwards;:设置动画完成后的样式,这里表示保持最后一帧的状态。
  • keyframes-svg-filled:定义填充心形的动画,包括缩放和亮度变化。
  • keyframes-svg-celebrate:定义庆祝动画,包括缩放、透明度和亮度变化。
  • svg-filled:显示填充的心形SVG图形。
  • svg-celebrate:显示庆祝动画的SVG图形。

标签:heart,container,SVG,svg,keyframes,HTML,filled,点赞,CSS
From: https://blog.csdn.net/weixin_52814911/article/details/143140346

相关文章

  • PbootCMS网站怎么修改HTML模板文件
    修改HTML文件连接FTP服务器:使用FTP客户端连接到你的服务器。定位模板文件夹:导航到 /template/你的模板名称/ 目录。找到需要修改的HTML文件。编辑HTML文件:下载需要修改的HTML文件到本地。使用文本编辑器打开并修改HTML文件。例如,修改某个段落的文本:html......
  • 用HTML构建酷炫的文件上传下载界面
    1.基础HTML结构首先,我们构建一个基本的HTML结构,包括一个表单用于文件上传,以及一个列表用于展示已上传文件:HTML<!DOCTYPEhtml><html><head><title>酷炫文件上传下载</title><linkrel="stylesheet"href="style.css"></head><body>......
  • 77.优美的鲜花网店网页 ​Web前端网页制作 大学生期末大作业 html+css+js
    目录一、前言二、网页文件三、网页效果四、代码展示1.HTML2.CSS3.JS五、更多推荐一、前言本实例以鲜花为主题设计,应用html+css+js,包括DIV布局、图片轮翻效果、菜单导航、二级三级菜单、留言板、搜索等,供大家参考。本网页支持如Dreamweaver、HBuilder、Text、Vscode......
  • CSS入门
    CSS层叠样式表样式表优点缺点使用情况控制范围行内样式表书写方便,权重高没有实现样式和结构相分离较少控制一个标签(少)内部样式表部分结构和样式相分离没有彻底分离较多控制一个页面(中)外部样式表完全实现结构和样式相分离需要引入最多控制整个站点......
  • HTML笔记
    什么是网站:网站其实是由一个个的网页构成的网页就是放在服务器上面的一个文件我们浏览网页的时候这个文件里的所有代码会被下载到我们本地的电脑,然后再由浏览器解析,渲染而网站就是一个绑定了域名的文件夹,该文件夹中可以包含子文件夹以及各种各样的文件,这些文件都可以通......
  • 第六章 元素应用CSS
    6.1使用CSS设置字体样式在学习HTML时,通常也会使用HTML,对文本字体进行一些非常简单的样式设置,而使用CSS对字体样式进行设置远比使用HTML灵活、精确得多。字体样式的常用属性属性说明属性说明font-family设置字体的类型font-welght设置字体的粗细font-size设置字体的......
  • CSS速刷 - 预处理器
    预处理器是什么?lessSass预处理器有啥功能?嵌套,反映了层级和约束变量和计算,减少了重复代码Extend和Mixin代码片段,就像具备同一个功能的函数。循环,适用于复杂有规律的样式importCSS文件模块化1.less嵌套Node写的,通过npm发布。&:同一层级2.Sass嵌套输出和less嵌套......
  • 房产销售系统/房产销售/销售系统/房地产软件/房源管理/销售策略/客户管理/楼盘信息/房
    博主介绍......
  • 小徐影城管理系统/小徐影城/影城管理系统/小徐影城软件/影院管理/影城运营/影城排期/
    博主介绍......
  • 农产品直卖平台/农产品直销/农产品电商平台/农产品直销网站/农产品网上商城/农产品直
    博主介绍......