使用JS操作SVG示例--时钟

【SVG.js实战篇】01-Vue中优雅的使用SVG.js 一、关于SVG.js SVG.js是一个基于SVG的开源JS库,支持操作 SVG 和执行 SVG 动画。真的很好用!(在实际项目场景中,使用SVG.js很便利友好) github仓库 官方文档 本文Demo源码 二、安装 // npm npm install @svgdotjs/svg.js // yarn yarn add @svgdotjs/svg.js 三、项目中引入 import { SVG } from "@svgdotjs/svg.js" 四、绘制基础图形 绘制图形之前,首先需要创 阅读详情
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
	<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
  <title>Document</title>
 </head>
 <body>
	<div id="" class="">
		<span>Open Time : <input type="text" id="time" size="25" /></span>
		<br><br>
	</div>
	<div id="" class="" style="height:500px">
		<svg style="height:400px;width:400px"  viewBox="-2 -2 402 402" id="svgclock">
		<circle cx="150" cy="150" r="150" style="fill:rgba(255,255,255,1);stroke:rgb(0,0,0);stroke-width:2"></circle>
		
		<g style="fill:rgb(0,0,0);font-weight:bold;font-size:1.3em">
			<text x="137" y="20">12</text>
			<text x="145" y="295">6</text>
			<text x="5" y="158">9</text>
			<text x="285" y="158">3</text>
		</g>
		<g style="fill:rgb(0,0,0);font-weight:bold;font-size:1em">
			<text x="215" y="35">1</text>
			<text x="267" y="87">2</text>
			<text x="267" y="225">4</text>
			<text x="215" y="278">5</text>
			<text x="75" y="278">7</text>
			<text x="25" y="225">8</text>
			<text x="25" y="90">10</text>
			<text x="75" y="38">11</text>
		</g>

		<circle cx="150" cy="150" r="3" style="fill:rgba(255,255,255,1);stroke:rgb(0,0,0);stroke-width:3"></circle>

		<line id="_hour" x1="150"y1="170" x2="150" y2="80" stroke="rgba(0,0,0,1)" stroke-width="4">
			<!-- <animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0 150 150" to="360 150 150" begin="0s" dur="43200s" repeatCount="indefinite"  />  -->
		</line>
		<line id="_min" x1="150"y1="170" x2="150" y2="40" stroke="rgba(0,0,0,1)" stroke-width="4">
			<animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0 150 150" to="360 150 150" begin="0s" dur="3600s" repeatCount="indefinite" /> 
		</line>
		<line id="_sec" x1="150"y1="170" x2="150" y2="40" stroke="red" stroke-width="2">
			<animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0 150 150" to="360 150 150" begin="0s" dur="60s" repeatCount="indefinite"  /> <!-- repeatCount="indefinite"  fill="freeze" -->
		</line>
		
		<rect width="100px" height="20px" x="100" y="220" style="fill:rgba(255,255,255,0);stroke:rgba(0,0,0,1);stroke-width:2px"></rect>
		<text x="105" y="235">2016-11-15</text>
		<circle cx="150" cy="150" r="2" style="fill:rgba(0,0,0,1);stroke:rgb(255,0,0);stroke-width:1"></circle>
	</svg>
	 <script type="text/javascript">
  <!--
	$(document).ready(function(){
		$("#time").val(new Date());
		var currentTime, hour, minute, second;
		currentTime = new Date();
		second = currentTime.getSeconds();
		minute = currentTime.getMinutes();
		hour = currentTime.getHours();
		hour = (hour > 12)? hour - 12 : hour;
		hour = (hour == '00')? 12 : hour;

		var line = document.getElementById("_sec");
		var fromRotate = second*6;
		var toRotate = fromRotate+360;
		line.setAttribute("transform","rotate("+fromRotate+" 150,150)");
		line.childNodes[1].setAttribute("from",fromRotate+" 150 150");
		line.childNodes[1].setAttribute("to",toRotate+" 150 150");
		
		line = document.getElementById("_min")
		fromRotate = minute*6 + (second/60)*6;
		toRotate = fromRotate+360;
		line.setAttribute("transform","rotate("+fromRotate+" 150,150)");
		line.childNodes[1].setAttribute("from",fromRotate+" 150 150");
		line.childNodes[1].setAttribute("to",toRotate+" 150 150");

		line = document.getElementById("_hour")
		fromRotate = hour*30 + (minute/60)*30;
		toRotate = fromRotate+360;
		line.setAttribute("transform","rotate("+fromRotate+" 150,150)");
		line.childNodes[1].setAttribute("from",fromRotate+" 150 150");//下标取1是因为换行符也被算作一个node
		line.childNodes[1].setAttribute("to",toRotate+" 150 150");
	});
  //-->
  </script>
	</div>
 </body>
</html>

JavaScript 模拟时钟 /** * 添加圆钟。 * @param {HTMLElement} root 容器 * @param {str} width 宽度 * @param {str} color 表针颜色 */ function createClock(root, width = '100px', color = '#000') { var svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="-50 -50 100 100" width="' 阅读详情

相关推荐

js实现动态罗盘时钟

HTML: <script src="//code.jquery.com/jquery-3.3.1.js"></script> <script> var w_resize = function(){ var w_fontsize = document.documentElement.clientWidth/750 ...

∑ 6367

【亲测免费】 SVG.js:轻量级SVG操作与动画库

SVG.js 是一个轻量级的 JavaScript 库,专门用于操作和动画 SVG(可缩放矢量图形)。它不依赖于任何其他库,提供了简洁而强大的 API,使得开发者能够轻松地创建、修改和动画化 SVG 元素。无论是简单的图形绘制,还是复杂的动画效果,SVG.js 都能满足你的需求。 ## 项目技术分析 SVG.js 的核心优势在于其轻量级和高性能。它通过简洁的 API 设计,使得开发者能够以最少...

gitblog_00991的博客 1058

使用SVG和Vanilla JS创建星形变心形

在本文中,我将向您展示如何使用SVG(可缩放矢量图形)和Vanilla JS(纯JavaScript)创建一个有趣的效果:将星形转变为心形。您可以根据自己的需求调整SVG元素的样式和JavaScript代码的逻辑,以实现更多有趣的效果。现在,我们已经创建了星形,接下来让我们编写JavaScript代码将星形转变为心形。首先,让我们创建一个HTML文件,并在其中添加一个SVG元素和一些必要的JavaScript代码。然后,我们修改了路径元素的路径数据,将其替换为心形的路径数据。在上面的代码中,我们首先使用。

CgbAutoit的博客 238

学习笔记——SVG.js中基本方法——SVG、addTo、size

SVG.js插件中的SVG()、addTo()、add()、size()、width()、height()方法

qq_41339126的博客 1104

SVG与JavaScript实现的平滑模拟时钟项目

SVG(Scalable Vector Graphics)是一种基于XML的矢量图形格式,用于描述二维矢量图形。它支持图形的缩放与变形,适合于网页中的图像展示。SVG图形可通过HTML中的<svg>标签直接嵌入,或者通过<img>标签引用外部.svg文件。SVG的优势在于它能提供高质量的图形输出,无论放大多少倍都保持清晰,并且可以使用CSS和JavaScript进行样式控制和交互动画制作。CSS3的动画功能强大,其中关键帧动画(@keyframes)是核心特性之一。

weixin_42350014的博客 742

使用JavaScript实现动态指针式时钟

本文还有配套的精品资源,点击获取 简介:通过JavaScript编程语言,我们可以在网页上创建一个模拟指针式时钟,动态显示当前时间,并在多种浏览器上保持良好的兼容性。本项目将详细讲解如何利用JavaScript的Date对象和SVG元素,以及CSS3的transform属性,结合定时器函数setInterval,实现时针、分针、秒针的动态更新。我们还将探讨如何处理浏览器兼容...

weixin_42509720的博客 1531

【亲测免费】 SVG.js:优雅地在Web上绘制SVG图形

SVG.js:优雅地在Web上绘制SVG图形 【免费下载链接】svg.js 项目地址: https://gitcode.com/gh_mirrors/svg/svg.js 是一个轻量级、强大的JavaScr...

gitblog_00070的博客 1294

SVG本地时钟特效:技术实现与设计指南

在Web开发中,预定义动画是指那些已经设计好且可以直接应用于DOM元素的动画效果。这些动画效果通常通过CSS类来定义,开发者可以很方便地将这些预定义动画应用到任何元素上。以jQuery为例子,它提供了一套丰富的动画方法,如fadeIn()fadeOut()等。这些方法定义了特定的动画效果,开发者可以通过调用它们并传入相应的参数来执行动画。以下是一个使用jQuery实现淡入淡出效果的示例:});});"></div>在这个例子中,点击按钮时,元素会以缓慢的速度淡入视野。

weixin_32287387的博客 756

html svg 爱心,HTML5/SVG 同心度圆动画

JavaScript语言:JaveScriptBabelCoffeeScript确定var c = Snap('#clock'),i;var c1 = c.circle(256, 256, 255).addClass('f1');var c2 = c.circle(256, 192, 192).addClass('f2');var c3 = c.circle(256, 128, 129).addC...

weixin_30328003的博客 245

svgdraggyjs是一款可以实现拖拽SVG的JavaScript工具库插件

svg.draggy.js是一款可以实现拖拽SVG的JavaScript工具库插件。该SVG工具库插件通过简单的设置,就可以实现任何SVG图形的拖拽互动。你可以设置SVG元素的拖动范围和拖动残影效果。

卡尔曼滤波、互补滤波与Tsinghua滤波:平衡车姿态感知的三大算法对比

本文对比了平衡车姿态感知中的卡尔曼滤波、互补滤波与Tsinghua滤波三大核心算法。互补滤波计算简单,适合入门;卡尔曼滤波理论最优但实现复杂;Tsinghua滤波则是一种面向嵌入式优化的轻量级方案,通过动态权重调整和零偏估计,在资源受限的MCU上实现了性能与效率的平衡,是智能车竞赛等场景的实用选择。

weixin_29232121的博客 349

漂亮的SVG时钟

漂亮的SVG时钟 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> ...

setsunadoudou的博客 139

基于立创EDA的8口全千兆POE交换机设计详解:RTL8370N芯片与90W大功率供电方案

本文详细解析了基于立创EDA设计的8口全千兆POE交换机方案,核心采用RTL8370N交换芯片与支持90W大功率供电的IEEE 802.3bt标准PD芯片。文章深入探讨了PSE/PD供电管理、电源架构设计、电路细节及关键散热方案,为DIY或学习POE交换机硬件设计提供了完整的开源实践指南。

weixin_29050829的博客 1万+

svg+js时区时钟动态js特效

下载地址svg+js代码实现的时区时钟动态特效,svg时钟特效。dd:

ICode联盟 184

C#实战:手把手教你用SerialPort实现RS485 ModbusRTU通信(附完整代码)

本文详细介绍了如何使用C#的SerialPort类实现RS485 ModbusRTU通信,包括硬件准备、串口配置、数据收发核心逻辑及高级通信技巧。通过实战案例和完整代码,帮助开发者快速掌握工业级通信框架的构建方法,提升设备间通信的稳定性和效率。

weixin_29207533的博客 254

OpenCV+ArUco实战:如何用Python实现高精度二维码测距(附完整代码)

本文详细介绍了如何使用Python和OpenCV实现基于ArUco标签的高精度单目视觉测距。通过相机标定、标签检测和三维位置估算,结合完整代码示例,帮助开发者在机器人导航、工业自动化等场景中实现厘米级距离测量,并探讨了精度优化与三维可视化等进阶应用。

weixin_29052717的博客 474

如何快速掌握Snap.svg:现代SVG图形开发的终极指南

Snap.svg是一款强大的JavaScript库,专为现代SVG图形开发设计。它提供了直观的API和丰富的功能,让开发者能够轻松创建、操作和动画化SVG图形,为网页和应用带来生动的视觉体验。 ## 为什么选择Snap.svg进行SVG开发? SVG(可缩放矢量图形)作为一种基于XML的图像格式,具有无损缩放、小文件体积和强大的交互能力等优势,在现代Web开发中应用广泛。Snap.svg作为专

gitblog_00605的博客 1074

AFSim 2.9实战指南:从入门到精通的中文教程

本文是AFSim 2.9的实战指南,提供从零开始的中文教程。内容涵盖仿真环境搭建、实体行为控制、脚本编写,到传感器、武器系统集成与复杂想定构建,最后讲解数据记录与结果分析方法,帮助用户快速掌握这一强大的军事仿真框架。

weixin_29281941的博客 943

如何快速掌握Snap.svg:现代SVG图形库的完整入门指南

Snap.svg是一款由Adobe开发的强大JavaScript库,专为现代SVG图形操作设计。作为轻量级且功能丰富的工具,它让开发者能够轻松创建、编辑和动画化可缩放矢量图形,为网页和应用带来生动的视觉体验。无论是制作交互式图表、动态图标还是复杂动画,Snap.svg都能提供简洁高效的解决方案。 ## 📌 为什么选择Snap.svg? 在众多SVG库中,Snap.svg脱颖而出的核心优势在于

gitblog_00021的博客 825

电机驱动和电源等大电流设计中的并联 MOSFET设计

在电机驱动等应用中,半桥拓扑(通常为 3 相)用于生成在电机中产生正扭矩或负扭矩的交流电源信号。想要更高的输出电流能力,只有通过并联形成每个功能开关的 MOSFET,才能实现高输出电流。当多个功率 MOSFET 并联以增加系统整体电流能力容量时,通常假设电流在并联器件之间均等分配或均等共享。然而,在并联 MOSFET 时,需要考虑并联器件之间的电流分配。PCB 布局的若干特性和特定的MOSFET 参数会影响这种分配,并在参数不匹配或布局不对称时导致均流不平衡。

小幽余生不加糖 2485

CDD数据库文件制作(二)——DTC配置

1.DTC库 2.新建DTC DTC相关介绍:https://blog.youkuaiyun.com/LOVE135149/article/details/122565443 ① 选择DTC数据库 ② 点击新建DTC ③ DTC参数编辑 3.将DTC库中的DTC加载到Variant中 找到Fault Memory的DTC Table,鼠标放在DTC Table区域,右键点击选择Copy … Reference from Available DTCs…,即可将DTC库中的故障码加载至Variant中。 虽然选择Co

LOVE135149的博客 1万+

JS - graphical clock svg (nice)

const HOURHAND = document.querySelector("#hour"); const MINUTEHAND = document.querySelector("#minute"); const SECONDHAND = document.querySelector("#second"); var date = new Date(); let hr = date.get...

howlowl 177

课题申报新手入门必备指南!利用AI辅助搞定 6大关键部分,高效提升申报成功率(附AI提示词)

以下是我(或团队)与本课题相关的已有基础:【如:承担过的公开课、校本教研活动、教学改革实践、课程建设、区级/校级课题、教学反思积累等】请你完成以下任务:1)判断哪些内容与本课题的研究目标和内容具有直接或间接关联;以下是我当前的研究设想(可能比较笼统):【填写你的研究想法 / 教学困惑 / 初步设想】,请你帮我完成以下任务:1)先判断该设想中隐含的核心研究问题是什么;以下是我目前拟定的研究目标,请你从课题评审视角进行校正:【逐条粘贴你已有的研究目标】,请你帮我:1)判断每个目标是否具体、清晰、可评估;

智能AI让学术科研更容易 917

JavaScript牛刀小试,结合CSS3动画属性来做一个系统时间同步的时钟

JavaScript总算入门了,复杂的就先不来了,今儿牛刀小试,先来一个系统同步的时钟效果,只用到最简单的获取系统时间的函数。因为学习是需要正反馈的,否则总也看不到效果,难免失了深入下去的兴趣。在之前的一篇专栏文章《利用CSS3的animation step属性实现wifi动画》的末尾,曾经做过一个时钟,当时鉴于JS空白,最终虽然也实现了时钟效果,但却无法做到与系统时间同步。今次,就来做一个可与当...

weixin_33704234的博客 635

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Snap.svg完全指南:现代Web的JavaScript SVG库革命

你还在为Web矢量图形开发烦恼?SVG(可缩放矢量图形)虽强大但原生API复杂,本文将用10分钟带你掌握Snap.svg——这款让SVG开发效率提升300%的JavaScript库。读完你将获得:从零开始的SVG绘制能力、3类核心动画实现方案、5个企业级案例解析,以及完整的国内开发资源包。 ## 核心优势:为何选择Snap.svg? 作为开源的现代SVG库,Snap.svg解决了三大行业痛点:...

gitblog_00172的博客 480

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 使用xsd验证xml
下一篇: JAVA8 分页工具
levelnini
博客等级 码龄14年 45粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值