【娱乐项目】基于cnchar库与JavaScript的汉字查询工具
Demo介绍
- 利用了 cnchar 库来进行汉字相关的信息查询,并展示了汉字的拼音、笔画数、笔画顺序、笔画动画等信息
- 用户输入一个汉字后,点击查询按钮,页面会展示该汉字的拼音、笔画数、笔画顺序,并绘制相应的笔画动画和测试图案
cnchar 库
cnchar 是一个用于处理汉字的 JavaScript 库,主要功能包括拼音查询、笔画数查询、笔画顺序、汉字书写动画等。这个库特别适用于中文学习和汉字处理,能够帮助开发者和学习者更好地理解和掌握汉字
主要功能:
- 拼音查询: cnchar 可以为输入的汉字提供拼音查询,包括带音调和不带音调的拼音。
- 笔画数查询: 该库可以返回汉字的笔画数,这对学习书写汉字的学生非常有帮助。
- 笔画顺序: cnchar 可以展示汉字的正确笔画顺序,有助于用户学习如何正确书写汉字。它还可以提供笔画的图形展示(通过动画或普通笔画顺序的绘制)。
- 汉字书写动画: 该库支持通过动画形式展示汉字的笔画顺序,让用户能够直观地理解每个字的书写流程。这对汉字初学者尤其有用。
- 汉字绘制功能: 通过 cnchar.draw() 方法,可以绘制汉字的笔画,不仅可以绘制笔画顺序,还可以绘制练习用的汉字图案。
- 汉字测试: cnchar 还提供了练习功能,用户可以通过绘制和测试图形来练习书写汉字。
使用方式:
- 网页调用:
<script src="https://cdn.jsdelivr.net/npm/cnchar"></script>
- npm 导入:
npm install cnchar
import cnchar from 'cnchar';
HTML代码
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><title>汉字查询工具</title><style>.result {margin-top: 20px;}</style><script src="js/cnchar.min.js"></script><script src="js/cnchar.order.min.js"></script><script src="js/cnchar.draw.min.js"></script></head><body><h1>汉字查询工具</h1><input type="text" id="chinese-input" placeholder="请输入汉字" oninput="handleInput()"><button id="query-btn">查询</button><div class="result" id="pinyin-result">拼音:</div><div class="result" id="stroke-count-result">笔画数:</div><div class="result" id="stroke-order-result">笔画顺序:</div><div class="result">笔画:</div><div id='drawStroke'></div><div class="result">笔画-动画:</div><div id='drawAnimation'></div><div class="result">笔画-正常:</div><div id='drawNormal'></div><div class="result">练一练:</div><div id='drawTest'></div>
</body>
</html>
JavaScript 代码
【引入库】
cnchar.min.js
:这是 cnchar 的核心库,提供了查询汉字拼音、笔画数等功能cnchar.order.min.js
:用于获取汉字的笔画顺序cnchar.draw.min.js
:提供绘制汉字笔顺动画和测试图案的功能。
- 查询汉字信息
- spell():获取输入汉字的拼音
- stroke():获取输入汉字的笔画数
- cnchar.stroke():获取输入汉字的笔画顺序,返回一个字符串,表示汉字的笔画顺序
function queryChineseInfo(chineseChar) {const pinyin = chineseChar.spell(); // 获取拼音const strokeCount = chineseChar.stroke(); // 获取笔画数const strokeOrder = cnchar.stroke(chineseChar, 'order', 'shape'); // 获取笔画顺序
}
- 更新页面的查询结果
将获取到的拼音、笔画数和笔画顺序显示在页面上相应的 div 元素中
document.getElementById('pinyin-result').innerText = '拼音: ' + pinyin;
document.getElementById('stroke-count-result').innerText = '笔画数: ' + strokeCount;
document.getElementById('stroke-order-result').innerText = '笔画顺序: ' + strokeOrder;
- 绘制汉字的笔顺动画
- cnchar.draw():用于绘制汉字的笔画
- type: cnchar.draw.TYPE.STROKE:绘制笔画
- type: cnchar.draw.TYPE.ANIMATION:绘制带动画效果的笔画
- loopAnimate: true:设置动画循环播放
cnchar.draw(chineseChar, {el: '#drawStroke',type: cnchar.draw.TYPE.STROKE,animation: {loopAnimate: true}
});
- 清除之前的查询结果
function handleInput() {document.getElementById('pinyin-result').innerText = '拼音:';document.getElementById('stroke-count-result').innerText = '笔画数:';document.getElementById('stroke-order-result').innerText = '笔画顺序:';
}
- 按钮点击事件
document.getElementById('query-btn').addEventListener('click', function () {const inputField = document.getElementById('chinese-input');const chineseChar = inputField.value;if (chineseChar) {queryChineseInfo(chineseChar);} else {alert('请输入汉字进行查询');}
});
完整代码
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><title>汉字查询工具</title><style>.result {margin-top: 20px;}</style><script src="js/cnchar.min.js"></script><script src="js/cnchar.order.min.js"></script><script src="js/cnchar.draw.min.js"></script></head><body><h1>汉字查询工具</h1><input type="text" id="chinese-input" placeholder="请输入汉字" oninput="handleInput()"><button id="query-btn">查询</button><div class="result" id="pinyin-result">拼音:</div><div class="result" id="stroke-count-result">笔画数:</div><div class="result" id="stroke-order-result">笔画顺序:</div><div class="result">笔画:</div><div id='drawStroke'></div><div class="result">笔画-动画:</div><div id='drawAnimation'></div><div class="result">笔画-正常:</div><div id='drawNormal'></div><div class="result">练一练:</div><div id='drawTest'></div><script>// 使用 cnchar 库查询汉字信息function queryChineseInfo(chineseChar) {const pinyin = chineseChar.spell(); // 获取拼音const strokeCount = chineseChar.stroke(); // 获取笔画数const strokeOrder = cnchar.stroke(chineseChar, 'order', 'shape'); // 获取笔画顺序document.getElementById('pinyin-result').innerText = '拼音: ' + pinyin;document.getElementById('stroke-count-result').innerText = '笔画数: ' + strokeCount;document.getElementById('stroke-order-result').innerText = '笔画顺序: ' + strokeOrder;// 绘制汉字的笔顺动画cnchar.draw(chineseChar, {el: '#drawStroke',type: cnchar.draw.TYPE.STROKE,animation: {loopAnimate: true}});// 绘制汉字的笔顺动画cnchar.draw(chineseChar, {el: '#drawAnimation',type: cnchar.draw.TYPE.ANIMATION,animation: {loopAnimate: true}});// 绘制汉字的笔顺正常cnchar.draw(chineseChar, {el: '#drawNormal'})// 绘制汉字的测试图案cnchar.draw(chineseChar, {el: '#drawTest',type: cnchar.draw.TYPE.TEST});}// 监听查询按钮的点击事件document.getElementById('query-btn').addEventListener('click', function () {const inputField = document.getElementById('chinese-input');const chineseChar = inputField.value;if (chineseChar) {queryChineseInfo(chineseChar);} else {alert('请输入汉字进行查询');}});// 监听输入框的输入事件,用于清除之前的查询结果function handleInput() {document.getElementById('pinyin-result').innerText = '拼音:';document.getElementById('stroke-count-result').innerText = '笔画数:';document.getElementById('stroke-order-result').innerText = '笔画顺序:';}</script>
</body></html>
相关文章:

【娱乐项目】基于cnchar库与JavaScript的汉字查询工具
Demo介绍 利用了 cnchar 库来进行汉字相关的信息查询,并展示了汉字的拼音、笔画数、笔画顺序、笔画动画等信息用户输入一个汉字后,点击查询按钮,页面会展示该汉字的拼音、笔画数、笔画顺序,并绘制相应的笔画动画和测试图案 cnchar…...
泷羽sec-蓝队基础之网络七层杀伤链 (下)学习笔记
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...
FPGA 开发工程师
目录 一、FPGA 开发工程师的薪资待遇 二、FPGA 开发工程师的工作内容 1. 负责嵌入式 FPGA 方案设计,包括仿真、软件编写和调试等工作。 2. 使用工具软件建立 FPGA 综合工程,编写综合策略和时序约束。 3. 进行 FPGA 设计的优化与程序维护,…...
【Leetcode 每日一题】3250. 单调数组对的数目 I
问题背景 给你一个长度为 n n n 的 正 整数数组 n u m s nums nums。 如果两个 非负 整数数组 ( a r r 1 , a r r 2 ) (arr_1, arr_2) (arr1,arr2) 满足以下条件,我们称它们是 单调 数组对: 两个数组的长度都是 n n n。 a r r 1 arr_1 arr1 是…...

较类中的方法和属性比较
在 Python 中,类中有以下几种常见的方法和属性,它们的作用和用法有所不同。以下是详细比较: --- ### **1. 实例方法** - **定义**:使用 def 定义,第一个参数是 self,表示实例对象本身。 - **作用**&#…...

nVisual可视化资源管理工具
nVisual主要功能 支持自定义层次化的场景结构 与物理世界结构一致,从全国到区域、从室外到室内、从机房到设备。 支持自定义多种空间场景 支持图片、CAD、GIS、3D等多种可视化场景搭建。 丰富的模型库 支持图标、机柜、设备、线缆等多种资源对象创建。 资源可…...
自动类型推导(auto 和 decltype)
一、auto关键字 基本概念 在 C 11 中引入了auto关键字用于自动类型推导。它可以让编译器根据变量的初始化表达式自动推断出变量的类型。这在处理复杂的类型,如迭代器、lambda 表达式的类型等情况时非常有用。 使用示例 例如,在迭代器的使用中…...

新型大语言模型的预训练与后训练范式,谷歌的Gemma 2语言模型
前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内的完整…...

基于投影寻踪博弈论-云模型的滑坡风险评价
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于投影寻踪博弈论-云模型的滑坡风险评价 基于投影寻踪博弈论-云模型的滑坡风险评价是一个复杂而有趣的主题,涉及到博弈论、风险评估和模糊逻辑等领域的交叉应用。这个方法结合了博弈论中的投影寻踪技术…...

WRF-Chem模式安装、环境配置、原理、调试、运行方法;数据准备及相关参数设置方法
大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因素是控制大气污染的关键自然因素。大气污染问题既是局部、当地的,也是区域的,甚至是全球的。本地的污染物排放除了对当地造成严重影响外,同时还会在…...

Spring中每次访问数据库都要创建SqlSession吗?
一、SqlSession是什么二、源码分析1)mybatis获取Mapper流程2)Spring创建Mapper接口的代理对象流程3)MapperFactoryBean#getObject调用时机4)SqlSessionTemplate创建流程5)SqlSessionInterceptor拦截逻辑6)开…...

力扣刷题TOP101:6.BM7 链表中环的入口结点
目录: 目的 思路 复杂度 记忆秘诀 python代码 目的 {1,2},{3,4,5}, 3 是环入口。 思路 这个任务是找到带环链表的环入口。可以看作是上一题龟兔赛跑(Floyd 判圈算法)的延续版:乌龟愤愤不平地举报兔子跑得太快,偷偷…...
浅谈telnet和ping
telnet 和 ping 是网络诊断工具,用于测试网络连接性和故障排查,但它们有不同的用途和功能。以下是它们的主要区别: 1. ping 功能描述 用途:ping 命令用于测试主机与目标地址(IP或域名)之间的连通性。工作…...

P4-3【应用数组进行程序设计 | 第三节】——知识要点:字符数组
知识要点:字符数组 视频: P4-3【应用数组进行程序设计 | 第三节】——知识要点:字符数组 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 本任务要求输入一行字符,统计其中的单词数,单词之间用…...

彻底理解微服务配置中心的作用
常见的配置中心有SpringCloudConfig、Apollo、Nacos等,理解它的作用,无非两点,一是配置中心能做什么,不使用配置中心会出现什么问题。 作用:配置中心是用来集中管理服务的配置,它是用来提高系统配置的维护…...
SpringBoot开发——详细讲解 Spring Boot 项目中的 POM 配置
文章目录 一、POM 文件简介二、单模块项目的 POM 配置1. 创建基本的 Spring Boot 单模块项目2. 重点解析三、多模块项目的 POM 配置1. 多模块项目结构2. 父模块 POM 文件3. 子模块 POM 文件4. 重点解析结语在 Spring Boot 项目中,POM(Project Object Model)文件起着关键作用…...

pyspark实现基于协同过滤的电影推荐系统
最近在学一门大数据的课,课程要求很开放,任意做一个大数据相关的项目即可,不知道为什么我就想到推荐算法,一直到着手要做之前还没有新的更好的来代替,那就这个吧。 推荐算法 推荐算法的发展由来已久,但和…...

视觉语言模型(VLM)学习笔记
目录 应用场景举例 VLM 的总体架构包括: 深度解析:图像编码器的实现 图像编码器:视觉 Transformer 注意力机制 视觉-语言投影器 综合实现 训练及注意事项 总结 应用场景举例 基于文本的图像生成或编辑:你输入 “生成一张…...

学习笔记:黑马程序员JavaWeb开发教程(2024.11.29)
10.5 案例-部门管理-新增 如何接收来自前端的数据: 接收到json数据之后,利用RequestBody注解,将前端响应回来的json格式的数据封装到实体类中 对代码中Controller层的优化 发现路径中都有/depts,可以将每个方法对应请求路径中的…...

文档加密怎么做才安全?
公司的文档包含很多机密文件,这些文件不仅关乎公司的核心竞争力,还涉及到客户隐私、商业策略等敏感信息。因此,文档的保管和传递一直是我们工作的重中之重。 为了确保机密文件的安全,公司需要制定了一系列严格的保密措施。从文件的…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...

Tauri2学习笔记
教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...

MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...
raid存储技术
1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...
Java中栈的多种实现类详解
Java中栈的多种实现类详解:Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...