【Java 进阶篇】JQuery 案例:qq表情选择,表达情感的小黄脸

在这里插入图片描述

在我们的数字交流时代,表情符号已成为表达情感的重要方式之一。为了丰富用户的输入体验,qq表情选择功能应运而生。通过巧妙运用 JQuery,我们可以在页面中实现一个生动活泼的表情选择框,让用户轻松表达各种情感。本篇博客将深入探讨 JQuery 中实现qq表情选择的方法和实际应用,为你揭开这个小黄脸的神秘面纱。

前言

表情符号是一种丰富多彩、生动有趣的文字表达方式,而qq表情则因其独特的设计和丰富的表情包而备受欢迎。通过在页面中引入qq表情选择框,我们可以让用户在文字输入的同时,通过表情符号更生动地表达自己的情感。下面,让我们一起探索如何用 JQuery 创建一个qq表情选择框吧!

JQuery qq表情选择实现原理

实现qq表情选择的关键在于将表情符号插入到用户输入的文本中。下面是一个基本的实现步骤:

  1. 准备好一组qq表情的图片,并给每个表情图片设置一个对应的关键词,用于标识该表情。

  2. 在页面中创建一个表情选择框,将qq表情的图片以列表形式展示出来。

  3. 使用 JQuery 监听用户在表情选择框中点击表情图片的事件。

  4. 在点击事件处理函数中,将对应的表情关键词插入到用户输入的文本中。

下面是一个简单的示例:

<!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>JQuery qq表情选择示例</title>
    <style>
        /* 表情选择框样式 */
        #emojiContainer {
            display: flex;
            flex-wrap: wrap;
        }

        #emojiContainer img {
            width: 30px;
            height: 30px;
            margin: 5px;
            cursor: pointer;
        }

        /* 输入框样式 */
        #textInput {
            width: 300px;
            height: 100px;
            margin-top: 10px;
        }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
    <script>
        $(document).ready(function() {
            // 表情关键词映射
            var emojiMap = {
                "smile": "[笑脸]",
                "cry": "[哭泣]",
                "heart": "[心]",
                // 更多表情...
            };

            // 表情选择框点击事件
            $("#emojiContainer img").click(function() {
                // 获取点击的表情关键词
                var emojiKey = $(this).data("key");

                // 在输入框中插入表情关键词
                insertEmoji(emojiKey);
            });

            // 输入框中插入表情
            function insertEmoji(key) {
                var $textInput = $("#textInput");
                var currentText = $textInput.val();

                // 在光标位置插入表情关键词
                var cursorPos = $textInput.prop("selectionStart");
                var newText = currentText.substring(0, cursorPos) + emojiMap[key] + currentText.substring(cursorPos);
                $textInput.val(newText);

                // 更新光标位置
                $textInput.prop("selectionStart", cursorPos + emojiMap[key].length);
                $textInput.prop("selectionEnd", cursorPos + emojiMap[key].length);
            }
        });
    </script>
</head>
<body>
    <div id="emojiContainer">
        <img src="smile.png" alt="笑脸" data-key="smile">
        <img src="cry.png" alt="哭泣" data-key="cry">
        <img src="heart.png" alt="" data-key="heart">
        <!-- 更多表情... -->
    </div>
    <textarea id="textInput" placeholder="在这里输入..."></textarea>
</body>
</html>

在这个示例中,我们创建了一个表情选择框 #emojiContainer,其中包含了一些qq表情的图片。通过点击表情图片,将对应的表情关键词插入到文本输入框 #textInput 中。为了更好地控制光标的位置,我们使用了selectionStartselectionEnd属性。

实际应用场景

qq表情选择框不仅仅可以用在聊天应用中,还可以应用在各种需要用户输入的场景。以下是一些实际应用场景的例子:

1. 社交评论

在社交平台的评论区,用户可以通过qq表情选择框更生动地表达对他人的评论。

<!-- 示例:社交评论 -->
<div id="emojiContainer">
    <img src="smile.png" alt="笑脸" data-key="smile">
    <img src="cry.png" alt="哭泣" data-key="cry">
    <img src="heart.png" alt="" data-key="heart">
    <!-- 更多表情... -->
</div>
<textarea id="commentInput" placeholder="发表你的评论..."></textarea>

2. 博客文章编辑

在博客文章编辑页面,作者可以通过qq表情选择框为文章增添更多情感色彩。

<!-- 示例:博客文章编辑 -->
<div id="emojiContainer">
    <img src="smile.png" alt="笑脸" data-key="smile">
    <img src="cry.png" alt="哭泣" data-key="cry">
    <img src="heart.png" alt="" data-key="heart">
    <!-- 更多表情... -->
</div>
<textarea id="articleInput" placeholder="在这里写下你的文章..."></textarea>

3. 在线表白

在在线表白或者情书撰写中,qq表情选择框能够为文字增添更多的温馨和浪漫。

<!-- 示例:在线表白 -->
<div id="emojiContainer">
    <img src="smile.png" alt="笑脸" data-key="smile">
    <img src="cry.png" alt="哭泣" data-key="cry">
    <img src="heart.png" alt="" data-key="heart">
    <!-- 更多表情... -->
</div>
<textarea id="loveLetter" placeholder="亲爱的,我想对你说..."></textarea>

通过这些实际应用场景的示例,我们可以看到qq表情选择框在用户交互中的灵活运用,不仅丰富了页面的表现形式,也增强了用户对于交流的参与感和愉悦感。

小贴士

在使用qq表情选择框时,有一些小贴士可能对你有帮助:

1. 图片资源的优化

确保你使用的qq表情图片是经过优化的,以保证页面加载的性能。可以选择合适的图片格式(如WebP)和压缩工具,以提高页面加载速度。

2. 表情包的多样性

为了满足不同用户的需求,可以提供多样性的表情包选择,覆盖更广泛的情感表达。

3. 兼容性考虑

在实际开发中,要考虑不同浏览器和设备的兼容性。确保qq表情选择框在各种环境下都能正常工作。

总结

通过本篇博客,我们深入学习了如何使用 JQuery 实现qq表情选择框,为用户提供更生动、丰富的输入体验。通过简单的代码示例,我们了解了qq表情选择框的基本实现原理和实际应用场景。同时,通过小贴士的分享,希望能够帮助你更好地运用这一功能,提升页面的交互性和用户体验。在前端的世界中,让我们共同为用户创造更为有趣、愉悦的交互体验吧!

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

使用postman测试

第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a;添加请求 第四步&#xff1a;填写请求 代码实现自动关联的位置&#xff1a; 为相关联的接口设置环境&#xff1a; 使用设置的环境变量&#xff1a; 参数化实现测试&#xff1a;测试脚本中仅测试数据不一样&#xff…

6、使用本地模拟器调试项目

本地模拟器推荐内存为16G以上&#xff0c;最低内存要求8G&#xff08;比较卡顿&#xff09; 一、安装本地镜像 1、在开发工具的“文件”菜单中选择“设置” 2、在“设置”中选择“SDK”&#xff0c;在右侧勾选“System-image-phone”&#xff0c;点击“应用”开始安装 3、点击…

基于单片机的水位检测系统仿真设计

**单片机设计介绍&#xff0c; 基于单片机的水位检测系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的水位检测系统仿真系统是一种用于模拟水位检测系统的工作过程&#xff0c;以验证设计方案的可行性和优…

TiDB单机集群模拟生产环境

1、先部署环境&#xff0c;安装5.4.3版本&#xff0c;详细的安装步骤见官方文档&#xff1a;单机集群模拟生产环境安装教程 配置文件topo.yaml global:user: "tidb"ssh_port: 22deploy_dir: "/tidb-deploy"data_dir: "/tidb-data"monitored:no…

科研学习|研究方法——Python计量Logit模型

一、离散选择模型 莎士比亚曾经说过&#xff1a;To be, or not to be, that is the question&#xff0c;这就是典型的离散选择模型。如果被解释变量时离散的&#xff0c;而非连续的&#xff0c;称为“离散选择模型”。例如&#xff0c;消费者在购买汽车的时候通常会比较几个不…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之进程管理1》(3)

《Linux操作系统原理分析《Linux操作系统原理分析之进程管理1》》&#xff08;3&#xff09; 3 进程管理3.1 基础3.1.1 进程执行3.1.2 进程定义3.1.3 进程特征3.1.4 利弊 3.2 进程状态和进程控制3.2.1 进程的状态和转换3.2.2 进程的实体 3.2.3 进程控制 3.3 进程状态和进程控制…

【电路笔记】-快速了解无源器件

快速了解无源器件 文章目录 快速了解无源器件1、概述2、电阻器作为无源器件3、电感器作为无源器件4、电容器作为无源器件5、总结 无源器件是电子电路的主要构建模块&#xff0c;没有它们&#xff0c;这些电路要么根本无法工作&#xff0c;要么变得不稳定。 1、概述 那么什么是…

从理论到实践:深度解读BIO、NIO、AIO的优缺点及使用场景

文章目录 BIO优缺点示例代码 NIO优缺点示例代码 AIO优缺点示例代码 总结 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 BIO、NIO和AIO是Java编程语言中用于处理输入输出&#xff08;IO…

M系列 Mac安装配置Homebrew

目录 首先&#xff0c;验证电脑是否安装了Homebrew 1、打开终端输入以下指令&#xff1a; 2、如图所示&#xff0c;该电脑没有安装Homebrew &#xff0c;下面我们安装Homebrew 一、官网下载 &#xff08;不建议&#xff09; 1、我们打开官网&#xff1a;https://brew.sh/ …

微信群BUG大揭秘!开启身份切换神器

前言 最近微信群里出现了一个神秘的BUG&#xff0c;普通群成员竟然可以艾特全体成员。今天&#xff0c;就让我们一起揭秘这个令人震惊的微信群普通成员可全体成员的BUG 复现步骤 复现步骤也很简单&#xff0c;前提条件就是要在PC客户端操作&#xff01;首先得有个属于自己的群…

天马行空的超级炫酷旋转图片-前端

一、实现代码&#xff08;html部分&#xff09; <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>3D旋转</title><style type"text/css">*{padding: 0;margin: 0;}body,html{he…

【轨道机器人】实现Windows与下位机串口通信(未完成)

方案一&#xff1a;QT&#xff0c;编写类似串口调试助手的APP&#xff0c;连接上硬件&#xff0c;qt有个好像是串口缓存函数&#xff0c;可以防止占用CPU。&#xff08;缺点qt估计要时间学&#xff09; 方案二&#xff1a;利用vscode、C&#xff0c;编写一个可执行exe文件&…

网站高性能架构设计——高性能数据库集群

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、高性能数据库简介 1.高性能数据库方式 读写分离&#xff1a;将访问压力分散到集群中的多个节点&#xff0c;没有分散存储压力 分库分表&…

SpringBoot3新特性

本篇文章参考尚硅谷springboot3课程: https://www.bilibili.com/video/BV1Es4y1q7Bf?p94&vd_sourced6deb2b69988de2ae72087817e5143d7 原版笔记: https://www.yuque.com/leifengyang/springboot3/xy9gqc2ezocvz4wn 1.自动配置包位置变化 现在指定自动配置类放在了下面这…

Unity中Shader矩阵的乘法

文章目录 前言一、矩阵乘以标量二、矩阵和矩阵相乘1、第一个矩阵的列数必须 与 第二个矩阵的行数相等&#xff0c;否则无法相乘&#xff01;2、相乘的结果矩阵&#xff0c;行数由第一个矩阵的行数决定&#xff0c;列数由第二个矩阵的列数决定&#xff01; 三、单位矩阵四、矩阵…

计算机毕业设计 基于Vue的米家商城系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

身份认证系统迁移至浪潮信息KOS5.8过程记录

身份认证系统迁移至浪潮信息KOS5.8过程记录 目录 身份认证系统迁移至浪潮信息KOS5.8过程记录项目背景简介环境介绍 实施01.迁移前准备02.迁移登录浪潮信息KeyarchOS迁移平台 03.操作总结本次操作过程使用X2Keyarch时发现的技术亮点&#xff1a; 项目背景 CentOS 停更危机 2020 …

SQLite3 数据库学习(三):SQLite C API 接口详解

参考引用 SQLite 权威指南&#xff08;第二版&#xff09;SQLite3 入门 1. 接口基本使用 SQLite C API 接口在线文档 1.1 打开数据库文件 返回值 成功返回 0 &#xff08;SQLITE_OK&#xff09;&#xff0c;失败返回 1 &#xff08;SQLITE_ERROR&#xff09; 参数 const cha…

前端js,reduce归并操作图解

// 数组reduce方法// arr.reduce(function(上一次值, 当前值){}, 初始值)const arr [1, 5, 8]// 1. 没有初始值 // const total arr.reduce(function (prev, current) {// return prev current// })// console.log(total)// 2. 有初始值// const total arr.reduce(functi…