【娱乐项目】基于cnchar库与JavaScript的汉字查询工具

Demo介绍

  • 利用了 cnchar 库来进行汉字相关的信息查询,并展示了汉字的拼音、笔画数、笔画顺序、笔画动画等信息
  • 用户输入一个汉字后,点击查询按钮,页面会展示该汉字的拼音、笔画数、笔画顺序,并绘制相应的笔画动画和测试图案

cnchar 库

cnchar 是一个用于处理汉字的 JavaScript 库,主要功能包括拼音查询、笔画数查询、笔画顺序、汉字书写动画等。这个库特别适用于中文学习和汉字处理,能够帮助开发者和学习者更好地理解和掌握汉字

主要功能:

  • 拼音查询: cnchar 可以为输入的汉字提供拼音查询,包括带音调和不带音调的拼音。
  • 笔画数查询: 该库可以返回汉字的笔画数,这对学习书写汉字的学生非常有帮助。
  • 笔画顺序: cnchar 可以展示汉字的正确笔画顺序,有助于用户学习如何正确书写汉字。它还可以提供笔画的图形展示(通过动画或普通笔画顺序的绘制)。
  • 汉字书写动画: 该库支持通过动画形式展示汉字的笔画顺序,让用户能够直观地理解每个字的书写流程。这对汉字初学者尤其有用。
  • 汉字绘制功能: 通过 cnchar.draw() 方法,可以绘制汉字的笔画,不仅可以绘制笔画顺序,还可以绘制练习用的汉字图案。
  • 汉字测试: cnchar 还提供了练习功能,用户可以通过绘制和测试图形来练习书写汉字。

使用方式:

  1. 网页调用:
    <script src="https://cdn.jsdelivr.net/npm/cnchar"></script>
  2. 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 代码

【引入库】

  1. cnchar.min.js:这是 cnchar 的核心库,提供了查询汉字拼音、笔画数等功能
  2. cnchar.order.min.js:用于获取汉字的笔画顺序
  3. cnchar.draw.min.js:提供绘制汉字笔顺动画和测试图案的功能。
  1. 查询汉字信息
  • spell():获取输入汉字的拼音
  • stroke():获取输入汉字的笔画数
  • cnchar.stroke():获取输入汉字的笔画顺序,返回一个字符串,表示汉字的笔画顺序
function queryChineseInfo(chineseChar) {const pinyin = chineseChar.spell(); // 获取拼音const strokeCount = chineseChar.stroke(); // 获取笔画数const strokeOrder = cnchar.stroke(chineseChar, 'order', 'shape'); // 获取笔画顺序
}
  1. 更新页面的查询结果

将获取到的拼音、笔画数和笔画顺序显示在页面上相应的 div 元素中

document.getElementById('pinyin-result').innerText = '拼音: ' + pinyin;
document.getElementById('stroke-count-result').innerText = '笔画数: ' + strokeCount;
document.getElementById('stroke-order-result').innerText = '笔画顺序: ' + strokeOrder;
  1. 绘制汉字的笔顺动画
  • 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}
});
  1. 清除之前的查询结果
function handleInput() {document.getElementById('pinyin-result').innerText = '拼音:';document.getElementById('stroke-count-result').innerText = '笔画数:';document.getElementById('stroke-order-result').innerText = '笔画顺序:';
}
  1. 按钮点击事件
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>

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#.Net筑基 - 常见类型

01、结构体类型Struct 结构体 struct 是一种用户自定义的值类型&#xff0c;常用于定义一些简单&#xff08;轻量&#xff09;的数据结构。对于一些局部使用的数据结构&#xff0c;优先使用结构体&#xff0c;效率要高很多。 可以有构造函数&#xff0c;也可以没有。因此初始化…

怎么选拔人才

1.引入案例&#xff1a;航天员的选拔 一、选拔&#xff1a; 1.测评和甄选的概念2.测评甄选的程序3.测评甄选原则&#xff1a;因事择人、人岗匹配&#xff1b;科学考核&#xff0c;平等竞争&#xff1b;德才兼备4.测评甄选的信效度&#xff1a;稳定系数、等值系数、内在一致系…

nginx-1.22.1 limit_req功能在C底层实现

##nginx.conf配置文件limit_req配置 ##nginx限制访问频率&#xff0c;限流 http { limit_req_zone $binary_remote_addr zoneone:30m rate1r/s; server { listen 8103; server_name localhost; location ~ ^/yym/ { …

Android 混淆问题

我的安卓混淆只需要在gradle里面开启就行了。 buildTypes {release {minifyEnabled trueshrinkResources truezipAlignEnabled trueproguardFiles getDefaultProguardFile(proguard-android-optimize.txt), proguard-rules.pro}} minifyEnabled true 这个就是开启方法&#xf…

XELA - uSkin 三轴触觉传感器:为机器人赋予敏锐触感

XELA Robotics 的 uSkin 触觉传感器以其创新性在机器人技术中备受关注。它凭借高密度设计和三轴力测量能力&#xff0c;大幅提升了机器人的触觉感知能力&#xff0c;这种技术不但增强了机器人的智能化和柔性&#xff0c;还为不同行业的应用创造了广泛的可能性。其中在机器人灵巧…

【前端开发】老年模式:字体大小设置

导入插件&#xff1a;npm install postcss-px-to-viewport--save-dev postcss-px-to-viewport&#xff1a;将px单位转换为视口单位的 (vw, vh, vmin, vmax) 的 PostCSS 插件 在根目录下新建文件&#xff1a;postcss.config.js const path require(“path”); module.exports …

k8s集成skywalking

如果能科学上网的话&#xff0c;安装应该不难&#xff0c;如果有问题可以给我留言 本篇文章我将给大家介绍“分布式链路追踪”的内容&#xff0c;对于目前大部分采用微服务架构的公司来说&#xff0c;分布式链路追踪都是必备的&#xff0c;无论它是传统微服务体系亦或是新一代…

Card组件的用法

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了DataTable的排序功能相关的内容,本章回中将介绍Card Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中介绍的Card Widget是一种容器类组件,它可以包含其它的组件,它的大小随着被包含…

【人工智能】Python与强化学习:从零实现多臂老虎机(Multi-Armed Bandit)问题

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 强化学习是一种模仿生物行为的学习方法,在不确定环境中寻找最优策略。多臂老虎机(Multi-Armed Bandit, MAB)是强化学习的经典问题之一,模拟了在多个选择中如何平衡探索和利用,以获取最大的长期回报。…

Ubuntu WiFi检测

ubuntu检测到多个同名wifi&#xff0c;怎么鉴别假冒的wifi&#xff1f; 在Ubuntu中&#xff0c;如果检测到多个同名的Wi-Fi网络&#xff0c;可能存在假冒的Wi-Fi&#xff08;例如“蜜罐”攻击&#xff09;。以下是一些鉴别假冒Wi-Fi的方法&#xff1a; 检查信号强度&#xff1a…

【论文格式】同步更新中

1横向和纵向坐标的坐标密度不能太大&#xff0c;显示太多看起来不好看&#xff0c;本课题组采用emf&#xff0c;目前使用页面内紧凑&#xff0c;600dpi 2Force(kN):k小写 3涉及到变量的&#xff0c;变量本身斜体

cesium中的CallbackProperty

Cesium中的CallbackProperty函数解析 在Cesium中&#xff0c;CallbackProperty是一个非常有用的特性&#xff0c;它允许开发者动态更新实体&#xff08;Entity&#xff09;的属性&#xff0c;例如位置、方向、高度等。这种动态更新的能力使得Cesium在处理与时间相关的数据时变…

win10 docker启动报错virtual machine platform not enabled

Docker启动报错virtual machine platform not enabled。原因是windows未启动虚拟化平台。 跟着下面的操作基本都能解决问题。 1.打开控制面板 2.在启用或关闭windows功能中开启Hyper-V和虚拟机平台 这个虚拟机平台也一定要勾选&#xff0c;我看晚上很多帖子是没说需要勾选这个…

【jvm】C1编译器和C2编译器的区别

目录 1. 说明2. 主要特点2.1 C1编译器2.2 C2编译器 3. 编译过程与优化策略3.1 C1编译器3.3 C2编译器 4. 分层编译与协作机制5. 性能影响与选择 1. 说明 1.JVM&#xff08;Java虚拟机&#xff09;中的C1编译器和C2编译器是两种不同的即时编译器&#xff08;JIT Compiler&#x…

【人工智能】使用Python实现序列到序列(Seq2Seq)模型进行机器翻译

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 序列到序列(Sequence-to-Sequence, Seq2Seq)模型是解决序列输入到序列输出任务的核心架构,广泛应用于机器翻译、文本摘要和问答系统等自然语言处理任务中。本篇文章深入介绍 Seq2Seq 模型的原理及其核心组件(…

【弓箭傳說 2 角色遊戲攻略】—詳細指南

《弓箭傳說2》是一款經典的Roguelike風格手遊&#xff0c;玩家將透過獨特的技能組合和角色選擇&#xff0c;挑戰複雜的關卡和強大的敵人。弓箭傳說 2 儲值 - 本攻略將從角色選擇、技能搭配、裝備強化及天賦升級等方面&#xff0c;全面解讀如何在遊戲中取得最佳表現。 一、遊戲…

Webpack 的构建流程

Webpack 的构建流程可以概括为以下几个步骤&#xff1a; 1. 初始化&#xff1a; Webpack 读取配置文件&#xff08;webpack.config.js&#xff09;&#xff0c;合并默认配置和命令行参数&#xff0c;初始化Compiler对象。 2. 构建依赖图&#xff1a; 从入口文件开始递归地分…

set up RAGFlow on your Mac

个人思考&#xff1a;这些仅仅是工具&#xff0c;和人的思维实际还是有很大差距。 可能是我认知片面&#xff0c;你需要投喂大量的内容给它&#xff0c;它自己其实并不会思考&#xff0c;只是从它的认知里告诉它他知道的东西。举个不太巧当的例子&#xff0c;和以往的方式恰恰相…

【0351】Postgres内核 Open WAL segment(包含 WAL 位置 ‘RecPtr’)(2 - 4)

上一篇: 文章目录 1. 打开 WAL Segment2. Standby mode 由一个 状态机(state machine)实现2.1 何处获取 WAL 文件?2.1.1 XLogSource2.1.2 从所选源(XLogSource )读取 XLOG2.1.2.1 walreceiver 运行状态 ?2.1.3 readFile(XLOG 文件句柄)1. 打开 WAL Segment 在经过前…

Java对象与XML互相转换(xstream)

依赖 <dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.18</version></dependency> 实体类 package com.itheima.util;import lombok.AllArgsConstructor; import lom…