实现底部表情评价,聚焦改变颜色,点击坏评价自动变成好评价

 如下,非常简单的一个小玩意。

废话不多说直接上代码:

<!--
 * @轮子的作者: 轮子哥
 * @Date: 2024-05-22 10:43:45
 * @LastEditTime: 2024-05-24 10:28:53
-->
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .emoji {
      background: #eee;
      margin: 20px;
      padding: 10px;
      border-radius: 20px;
      text-align: center;
    }

    .emoji>p {
      margin: 10px;
    }

    .emoji-list {
      display: flex;
      align-items: center;
      justify-content: center;
      height: 60px;
    }

    .emoji-item {
      filter: grayscale(100);
      cursor: pointer;
      font-size: 30px;
      height: 60px;
      width: 60px;
      line-height: 60px;
      transform: rotate(0deg);
      transition: filter 1.5s ease, font-size 0.5s ease, transform 1.5s ease;
    }

    .emoji-selected {
      filter: grayscale(0);
      font-size: 35px;
    }

    @media (any-hover: hover) {
      .emoji-item:hover {
        filter: grayscale(0);
        font-size: 35px;
        transform: rotate(360deg);
      }
    }
  </style>
</head>

<body>
  <section>

    <div class="emoji">
      <p>Would you find this answer helpful?</p>
      <div class="emoji-list">
        <div class="emoji-item" onclick="selectEmoji(this)">😞</div>
        <div class="emoji-item" onclick="selectEmoji(this)">😑</div>
        <div class="emoji-item" onclick="selectEmoji(this)">😄</div>
      </div>
    </div>

  </section>

</body>
<script>
  function selectEmoji(emojiItem) {
    const emojiItems = document.querySelectorAll('.emoji-item');
    switch (emojiItem.textContent) {
      case '😞':
        const direction1 = emojiItem.style.transform == '' || emojiItem.style.transform.includes('0.1') ? '-200' : '0.1';
        const direction2 = emojiItem.style.transform == '' || emojiItem.style.transform.includes('0.1') ? '200' : '0.1';
        emojiItems.forEach((item) => {
          if (item.textContent == '😄') {
            item.style.transform = `translateX(${direction1}%)`
            item.classList.add('emoji-selected');
          } else {
            item.classList.remove('emoji-selected')
          }
        });
        emojiItem.style.transform = `translateX(${direction2}%)`
        console.log("轮")
        break;
      default:
        emojiItems.forEach(item => item.classList.remove('emoji-selected'));
        emojiItem.classList.add('emoji-selected');
        console.log("子")
        break;
    }
  }
</script>

</html>

使用grayscale实现聚焦变颜色 ,用@media (any-hover: hover) {}来解决移动端hover触发的问题,再加点过渡效果,css样式就写好了,还是非常简单的。

js就简单的改变方向平移和增删选中类,非常简单就不多说了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/636860.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

51-指针_野指针,指针运算

51-1 野指针 51-1-1 什么是野指针 概念&#xff1a;野指针就是指针指向的位置是不可知的&#xff08;随机的、不正确的、没有明确限制的) 没有初始化 int main() {int* p;//p没有初始化&#xff0c;就意味着没有明确的指向//一个局部变量不初始化的话&#xff0c;放的是随机…

clickhouse 中的数组(array)和元组(Tuple)—— clickhouse 基础篇(二)

文章目录 数组判断是否为空计算数组长度获取数组元素判断某个元素是否存在数组切片数组元素展开数组元素去重删除连续重复元素连接多个数组数组倒序数组拍平数组元素映射数组元素过滤数组聚合分析计算数组交集计算数组并集计算数组差集SQL 子查询进行集合操作 元组创建元组获取…

八国多语言微盘微交易所系统源码 单控点控 K线完好

安装环境linux NGMySQL5.6PHP7.2&#xff08;函数全删&#xff09;pm2管理器&#xff08;node版本选择v12.20.0&#xff09; config/ database.php 修改数据库链接 设置运行目录 public 伪静态thinkphp

最有效的企业数据防泄漏手段 | 数据泄漏防护系统推荐

随意信息安全意识不断提高&#xff0c;企业纷纷寻求高效的数据防泄漏手段。在众多解决方案中&#xff0c;这五款软件各具特色&#xff0c;但它们的共同目标都是确保企业数据的安全性和保密性。 接下来&#xff0c;我们将逐一介绍这五款软件的特点和优势。 1、Ping 32 Ping32…

C中十进制转十六进制示例

uint8_t QR_code_RxBfr[255]{0}; uint8_t TouchCode[100];memcpy (&Sys.TouchCode[0], &QR_code_RxBfr[0], Sys.QR_code_Len);Str &Sys.TouchCode[TmpVble];Sys.Card_ID 0; while(0 ! isdigit(*Str)){Sys.Card_ID Sys.Card_ID*10 *Str - 0;Str;} 最后在通过以下…

【淘宝商品API接口】淘宝一件代发,如何找到便宜又靠谱的货源商品铺货到自己店铺?

电商商品API接口 对没有自己货源的淘宝小卖家来说&#xff0c;从1688等货源平台拿货做一件代发是最好的选择。不需要囤货&#xff0c;也不需要自己打包发货&#xff0c;投入小、风险低。 在大部分卖家眼里&#xff0c;1688上面的商品很贵&#xff0c;甚至比淘宝同行卖的都贵&…

Ceph集群RBD块存储:快照与Copy-on-Write克隆的基本操作

文章目录 1.RBD块存储镜像克隆概念2.copy-on-write克隆的基本使用2.1.在块存储中创建一个快照2.2.将快照配置成保护模式2.3.基于快照克隆出镜像2.4.使用克隆的镜像2.5.查看一个快照下有哪些克隆的镜像 1.RBD块存储镜像克隆概念 镜像克隆官方文档&#xff1a;https://docs.ceph…

Qt for android 添加自己的java包

java 包 目录 .pro 中添加 OTHER_FILES $$PWD/android/src/ScytheStudio \$$PWD/android/src/Serial 或 DISTFILES android/src/ScytheStudio \android/src/Serial \或(可以在Qt Creator中显示) DISTFILES android/src/ScytheStudio/*.java \android/src/Serial/*.java \

QQ沐个人引导页html源码

好看的QQ沐个人引导页html源码&#xff0c;鼠标移动滑出美丽的线条收缩特效&#xff0c;界面美观大气&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 …

【分享】3种方法取消PPT的“限制保护”

PPT如果设置了有密码的“只读方式”&#xff0c;每次打开PPT&#xff0c;都会出现对话框&#xff0c;提示需要输入密码才能修改文件&#xff0c;否则只能以“只读方式”打开。 以“只读方式”打开的PPT就会被限制&#xff0c;无法进行编辑修改等操作。那如果后续不需要“限制保…

Springboot阶段项目---《书城项目》

一 项目介绍 本项目采用集成开发平台IntelliJ IDEA开发了在线作业成绩统计系统的设计与实现&#xff0c;实现了图书商城系统的综合功能和图形界面的显示&#xff0c;可以根据每个用户登录系统后&#xff0c;动态展示书城首页图书&#xff0c;实现了分类还有分页查询&#xff0c…

MySQL -- 相关知识点

1.数据库相关介绍 数据库的选择通常取决于具体的应用需求&#xff0c;如性能、扩展性、数据一致性和易用性等因素。 1. 关系型数据库&#xff08;RDBMS&#xff09; MySQL&#xff1a; 广泛使用的开源数据库&#xff0c;支持大多数操作系统。强调易用性、灵活性和广泛的社区支…

Flutter Text导致A RenderFlex overflowed by xxx pixels on the right.

使用Row用来展示两个Text的时候页面出现如下异常,提示"A RenderFlex overflowed by xxx pixels on the right." The following assertion was thrown during layout: A RenderFlex overflowed by 4.8 pixels on the right.The relevant error-causing widget was:…

ClickHouse课件

列式存储数据库&#xff1a;hbase clickhouse 简介 ClickHouse入门 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用…

K8S中YAML案例

目录 案例&#xff1a;自主式创建service并关联上面的pod 案例&#xff1a;部署redis 案例&#xff1a;部署myapp 案例&#xff1a;部署MySQL数据库 总结 1.K8S集群中访问流向 K8S集群外部&#xff1a;客户端——nodeIP&#xff1a;nodeport——通过target port——podIP…

【排序算法】堆排序(Heapsort)

✨✨✨专栏&#xff1a;排序算法 &#x1f9d1;‍&#x1f393;个人主页&#xff1a;SWsunlight 目录 ​编辑 前言&#xff1a; 一、堆排序&#xff1a; 时间复杂度&#xff1a; 空间复杂度&#xff1a; 算法稳定性&#xff1a; 二、升序的实现&#xff1a;通过建大堆实…

find 几招在 Linux 中高效地查找目录

1. 介绍 在 Linux 操作系统中&#xff0c;查找目录是一项常见的任务。无论是系统管理员还是普通用户&#xff0c;都可能需要查找特定的目录以执行各种操作&#xff0c;如导航文件系统、备份数据、删除文件等。Linux 提供了多种命令和工具来帮助我们在文件系统中快速找到目标目…

百度软件测试面试经历,期望薪资27K

一面 1、 请为百度搜索框设计测试用例&#xff1f; 2、百度设计框上线前需要进行那些测试&#xff1f; 界面测试&#xff0c;功能测试&#xff0c;性能测试&#xff0c;安全性测试&#xff0c;易用性测试&#xff0c;兼容性测试&#xff0c;UI测试。 3、如何查看http状态码…

高通 Android 12/13冻结屏幕

冻结屏幕很多第一次听到以为是Android一种异常现象&#xff0c;实则不然&#xff0c;就是防止用户在做一些非法操作导致问题防止安全漏洞问题。 1、主要通过用户行为比如禁止下拉状态栏和按键以及onTouch事件拦截等&#xff0c;不知道请看这篇文章&#xff08;Touch事件传递流…

WPF模板样式Style用法

在Windows Presentation Foundation (WPF) 中&#xff0c;样式&#xff08;Style&#xff09;和模板&#xff08;Template&#xff09;是创建丰富且可重用的UI元素的强大工具。样式允许你定义一组属性设置&#xff0c;这些设置可以应用于一个或多个控件&#xff0c;而模板则允许…