600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 前端应用 - 汉字笔顺书写演示带拼音及发音进阶版

前端应用 - 汉字笔顺书写演示带拼音及发音进阶版

时间:2020-02-12 16:26:02

相关推荐

前端应用 - 汉字笔顺书写演示带拼音及发音进阶版

本版本更加适合小学一年级学生学习汉字笔顺,优化后说明:

1.支持多文字演示,可以上下页切换

2.支持连续书写演示和连续书写练习

html:

<!DOCTYPE html>

<html lang="en-us">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="description" content="">

<meta name="keywords" content="">

<meta name="viewport" content="width=device-width,user-scalable=no, initial-scale=1">

<title>汉字笔顺书写演示</title>

<link rel="stylesheet" href="static/css/styles.css" />

</head>

<body>

<h1 class="title">汉字笔顺书写演示</h1>

<div class="actions">

<button class="js-animate">书写演示</button>

<button class="js-quiz">书写练习</button>

</div>

<div id="pinyin"></div>

<!--汉字所在的田字格背景图-->

<svg xmlns="/2000/svg" width="360" height="360" id="target">

<line x1="0" y1="0" x2="360" y2="0" stroke="#DDD"/>

<line x1="0" y1="0" x2="0" y2="360" stroke="#DDD"/>

<line x1="0" y1="360" x2="360" y2="360" stroke="#DDD"/>

<line x1="360" y1="0" x2="360" y2="360" stroke="#DDD"/>

<line x1="0" y1="180" x2="360" y2="180" stroke="#DDD"/>

<line x1="180" y1="0" x2="180" y2="360" stroke="#DDD"/>

<line x1="0" y1="0" x2="360" y2="360" stroke="#DDD"/>

<line x1="0" y1="360" x2="360" y2="0" stroke="#DDD"/>

</svg>

<div style="clear: both;"></div>

<div class="toolsImageBtn">

<input type="button" title="上一个字" value="上一个" class="btn goPrev">

<input type="button" title="下一个字" value="下一个" class="btn goNext">

<input type="button" title="开始" value="开始" class="btn goOk">

</div>

<textarea class="form-control" rows="3" name="demo" id="demo" name-id="demo" placeholder="请在这里输入需要练习的生字"></textarea>

<script src="/jquery-2.1.4.min.js"></script>

<script src="/npm/hanzi-writer@2.2/dist/hanzi-writer.min.js"></script>

<script type="text/javascript" src="static/js/app.js?v=.9.30 17:55"></script>

<script type="text/javascript" src="static/js/pinyin_dict_withtone.js"></script>

<script type="text/javascript" src="static/js/pinyinUtil.js"></script>

</body>

</html>

app.js:

$(function() {

var writer;

var isCharVisible;

var isOutlineVisible;

var hzArr = [];

function printStrokePoints(data) {

var pointStrs = data.drawnPath.points.map(point => `{x: ${point.x}, y: ${point.y}}`);

}

function updateCharacter(character) {

var targetBgHtml = '<line x1="0" y1="0" x2="360" y2="0" stroke="#DDD"/>'+

'<line x1="0" y1="0" x2="0" y2="360" stroke="#DDD"/>'+

'<line x1="0" y1="360" x2="360" y2="360" stroke="#DDD"/>'+

'<line x1="360" y1="0" x2="360" y2="360" stroke="#DDD"/>'+

'<line x1="0" y1="180" x2="360" y2="180" stroke="#DDD"/>'+

'<line x1="180" y1="0" x2="180" y2="360" stroke="#DDD"/>'+

'<line x1="0" y1="0" x2="360" y2="360" stroke="#DDD"/>'+

'<line x1="0" y1="360" x2="360" y2="0" stroke="#DDD"/>';

$('#target').html(targetBgHtml);

var fayin = '/text2audio.mp3?tex='+character+'&cuid=baike&lan=ZH&ctp=1&pdt=301&vol=100&rate=32&per=2&spd=3&pit=3'

var pinyin = pinyinUtil.getPinyin(character, ' ', true, 0);

var laba = '<span class="boyin"><img src="./static/images/laba.png" style="width: 32px;"></a>';

var boyin = '<audio src="'+fayin+'" id="boyin"></audio>';

$('#pinyin').html(pinyin + ' '+laba + boyin);

window.location.hash = character;

writer = HanziWriter.create('target', character, {

width: 360,

height: 360,

radicalColor: '#166E16',

onCorrectStroke: printStrokePoints,

onMistake: printStrokePoints,

showOutline: true

});

isCharVisible = true;

isOutlineVisible = true;

window.writer = writer;

}

updateCharacter('永');

$(document).on('click','.boyin',function(){

document.getElementById("boyin").play();

});

$(document).on('click','.js-animate',function(){

$(this).addClass("check").siblings().removeClass("check");

writer.animateCharacter();

});

$(document).on('click','.js-quiz',function(){

$(this).addClass("check").siblings().removeClass("check");

writer.quiz({

showOutline: true

});

});

$(document).on('click','.goOk',function(){

var _val = $('textarea[name="demo"]').val().trim();

_val = _val.replace(/[^\u4e00-\u9fa5]/gi,"");

$('textarea[name="demo"]').val(_val);

var _arr = _val.split("");

hzArr = _arr.filter(s => $.trim(s).length > 0);

if(hzArr.length > 0){

$('.goPrev').attr('val',hzArr.length);

$('.goNext').attr('val',0);

updateCharacter(hzArr[0]);

}

});

$(document).on('click','.goPrev',function(){

var _val = $(this).attr('val');

if(hzArr.length > 0){

var thisIndex = Number(_val)-1;

thisIndex = thisIndex < 0?0:thisIndex;

updateCharacter(hzArr[thisIndex]);

$('.goPrev').attr('val',thisIndex);

$('.goNext').attr('val',thisIndex+1);

if($('.js-animate').hasClass("check")){

writer.animateCharacter();

}

if($('.js-quiz').hasClass("check")){

writer.quiz({showOutline: true});

}

}

});

$(document).on('click','.goNext',function(){

var _val = $(this).attr('val');

if(hzArr.length > 0){

var thisIndex = Number(_val)+1;

thisIndex = thisIndex >= hzArr.length?0:thisIndex;

updateCharacter(hzArr[thisIndex]);

$('.goPrev').attr('val',thisIndex-1);

$('.goNext').attr('val',thisIndex);

if($('.js-animate').hasClass("check")){

writer.animateCharacter();

}

if($('.js-quiz').hasClass("check")){

writer.quiz({showOutline: true});

}

}

});

});

演示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。