【娱乐项目】基于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,可以将每个方法对应请求路径中的…...
文档加密怎么做才安全?
公司的文档包含很多机密文件,这些文件不仅关乎公司的核心竞争力,还涉及到客户隐私、商业策略等敏感信息。因此,文档的保管和传递一直是我们工作的重中之重。 为了确保机密文件的安全,公司需要制定了一系列严格的保密措施。从文件的…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
