CSS学习之路: 如何通过获取样式表对象来制作真实时间的时钟?

嵌入式GUI框架选型指南:LVGL、Qt、TouchGFX等6大方案深度对比 图形用户界面(GUI)是嵌入式系统与用户交互的核心组件,其底层原理涉及图形渲染、事件驱动和人机交互设计。在资源受限的嵌入式环境中,GUI框架需在性能、内存占用和开发效率间取得平衡,其技术价值直接决定了产品的用户体验和开发维护成本。常见的应用场景包括智能家居面板、工业HMI、穿戴设备和车载显示等。本文聚焦嵌入式GUI选型,针对LVGL、Qt for MCUs、TouchGFX等主流框架,从硬件资源、开发工具、生态支持等维度进行横评,并结合LVGL的移植与优化实践,为工程师提供选型决策矩阵和实战避坑指南。 阅读详情

使用场景

使用html和css制作一个时钟,想要将当前真实的时间赋值给时钟,所以需要通过样式表对象,修改@keyframes定义动画中的transform的rotate()函数。
动态时钟
在这里插入图片描述
代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>clock</title>
		<style type="text/css">
			.clock{
				width:400px;
				height:400px;
				border:1px solid #555;
				border-radius:50%;
				position:relative;

			}
			.num{
				width:32px;
				text-align:center;
				line-height:25px;
				position:absolute;
				top:0;
				left:184px;
				transform-origin: 50% 200px;
			}
			 .num:nth-child(1){
			      transform:rotate(30deg)
			    }
			    .num:nth-child(2){
			      transform:rotate(60deg)
			    }
			    .num:nth-child(3){
			      transform:rotate(90deg)
			    }
			    .num:nth-child(4){
			      transform:rotate(120deg)
			    }
			    .num:nth-child(5){
			      transform:rotate(150deg)
			    }
			    .num:nth-child(6){
			      transform:rotate(180deg)
			    }
			    .num:nth-child(7){
			      transform:rotate(210deg)
			    }
			    .num:nth-child(8){
			      transform:rotate(240deg)
			    }
			    .num:nth-child(9){
			      transform:rotate(270deg)
			    }
			    .num:nth-child(10){
			      transform:rotate(300deg)
			    }
			    .num:nth-child(11){
			      transform:rotate(330deg)
			    }
			    .num:nth-child(12){
			      transform:rotate(360deg)
			    }
			    .s{
					width:2px;
					height:180px;
					position:absolute;
					top:20px;
					left:199px;
					background-color:#555;
					transform-origin:50% 180px ;
					animation: s_rotate 60s linear infinite;
				}
				.m{
					width:4px;
					height:150px;
					position:absolute;
					top:50px;
					left:198px;
					background-color:#555;
					transform-origin:50% 150px;
					animation: m_rotate 3600s linear infinite;
				}
				.h{
				  width:4px;
				  height:150px;
				  position:absolute;
				  top:50px; left:198px;
				  background-color:#555;
				  transform-origin: 50% 150px;
				  animation: h_rotate 3600s linear infinite;
				}
				@keyframes s_rotate{
				  0%{
					transform:rotate(0deg);
				  }
				  100%{
					transform:rotate(360deg);
				  }
				}
				@keyframes m_rotate{
				  0%{
					transform:rotate(0deg);
				  }
				  100%{
					transform:rotate(360deg);
				  }
				}
				@keyframes h_rotate{
				  0%{
					transform:rotate(0deg);
				  }
				  100%{
					transform:rotate(360deg);
				  }
				}
		</style>
		
	</head>
	<body>
		<div class="clock">
		  <div class="num">I</div>
		  <div class="num">II</div>
		  <div class="num">III</div>
		  <div class="num">IIII</div>
		  <div class="num">V</div>
		  <div class="num">VI</div>
		  <div class="num">VII</div>
		  <div class="num">VIII</div>
		  <div class="num">IX</div>
		  <div class="num">X</div>
		  <div class="num">XI</div>
		  <div class="num">XII</div>
		  <div class="s"></div>
		  <div class="m"></div>
		  <div class="h"></div>
		</div>
		</body>
</html>

<script type="text/javascript">
	 //根据当前系统时间计算每个指针得角度
	 var now=new Date()
	 var s=now.getSeconds()
	 var sdeg=s/60*360
	 var m=now.getMinutes()
	 var mdeg=m/60*360
	 var h=now.getHours()
	 h>=12&&(h-=12)
	 var hdeg=(h*60+m)*360/60*12
	 
	 //获取样式表对象
	 var sheet=document.styleSheets[0]
	 console.log(sheet.cssRules)
	 
	 //秒针
	 //获取想修改的cssRule对象
	 var cssRule=sheet.cssRules[17]
	 console.log(document.styleSheets[0].cssRules[17].cssRules[0].style.transform)
	 var rule0=cssRule.cssRules[0]
	 //修改rule0的style中的transform为新角度
	 rule0.style.transform=`rotate(${sdeg}deg)`
	 var rule100=cssRule.cssRules[1]
	 rule100.style.transform=`rotate(${sdeg+360}deg)`
	 
	 //分针
	 //获取想修改的cssRule对象
	 var cssRule=sheet.cssRules[18]
	 console.log(cssRule)
	 //获取其中的子规则
	 var rule0=cssRule.cssRules[0]
	 //修改rule0的style中的transform为新角度
	 rule0.style.transform=`rotate(${mdeg}deg)`
	 var rule100=cssRule.cssRules[1]
	 rule100.style.transform=`rotate(${mdeg+360}deg)`
	 
	 //时针
	 //获取想修改的cssRule对象
	 var cssRule=sheet.cssRules[19]
	 console.log(cssRule);
	 //获取其中的子规则
	 var rule0=cssRule.cssRules[0]
	 //修改rule0的style中的transform为新角度
	 rule0.style.transform=`rotate(${hdeg}deg)`
	 var rule100=cssRule.cssRules[1]
	 rule100.style.transform=`rotate(${hdeg+360}deg)`
</script>

剖析代码

    <script type="text/javascript">
           var sheet=document.styleSheets
		    console.log(sheet) 
    </script>

在这里插入图片描述

    <script type="text/javascript">
           var sheet=document.styleSheets[0]
		    console.log(sheet) 
    </script>

在这里插入图片描述

    <script type="text/javascript">
           var sheet=document.styleSheets[0]
		    console.log(sheet.cssRules) 
    </script>

在这里插入图片描述
在这里插入图片描述

   
    <script type="text/javascript">
           //获取想修改的cssRule对象
           var sheet=document.styleSheets[0]
		   console.log(sheet.cssRules[17]) 
		   console.log(sheet.cssRules[18]) 
		    console.log(sheet.cssRules[19]) 
    </script>

在这里插入图片描述

   
    <script type="text/javascript">
           //获取想修改的cssRule对象
           var sheet=document.styleSheets[0]
		   console.log(sheet.cssRules[17].cssRules)   
    </script>

在这里插入图片描述在这里插入图片描述

   
    <script type="text/javascript">
           //获取想修改的cssRule对象
           var sheet=document.styleSheets[0]
		   console.log(sheet.cssRules[17].cssRules[0])   
		   console.log(sheet.cssRules[17].cssRules[1]) 
    </script>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

   
    <script type="text/javascript">
           //获取想修改的cssRule对象
           var sheet=document.styleSheets[0]
		   console.log(sheet.cssRules[17].cssRules[0].style)   
		   console.log(sheet.cssRules[17].cssRules[1].style) 
    </script>

在这里插入图片描述
在这里插入图片描述

    <script type="text/javascript">
          //修改的cssRule对象
           var sheet=document.styleSheets[0]
           sheet.cssRules[17].cssRules[0].style="xxxx"
           sheet.cssRules[17].cssRules[1].style="xxxx"
    </script>
模拟时钟的HTML-CSS-JS实现:前端技术实战 本文还有配套的精品资源,点击获取 简介:本项目通过HTML、CSS和JavaScript实现了动态显示当前时间的模拟时钟。它涉及前端开发的基础技术,包括HTML5的 <canvas> 元素、CSS样式设计、JavaScript的时钟逻辑编程以及使用Canvas API绘制时钟指针。还涵盖了使用JavaScript Date对象获取时间、CSS Tr... 阅读详情

相关推荐

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

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

weixin_42509720的博客 1531

通过vue来添加动画和修改@keyframes属性值

CSS3中增加了@keyframes规则用于创建动画,创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式。也就是说通过改变CSS样式而达到动画的效果,所以,要动态去改变动画,只有修改样式。 你可以打印一下document.styleSheets,console.log(document.styleSheets),会发现document.styleSheets是一个对象数组。 拿到样式表后就可以操作样式啦~ insertRule方法用来给当前样式表插入新的样式规则。举个栗子: var style =

qq_17355709的博客 4319

python爬取淘宝数据

python爬取淘宝数据淘宝评论 淘宝评论 打开淘宝,选择打开需要爬取的商品的评论。在谷歌浏览器选择开发者工具,选择network,找到list_detail_rate.htm?itemId=624466733121,点击headers、previews,可以看见相应的评论数据。 爬取一页屏评论代码如下 import re import requests headers = { 'Referer': '在headers中', 'User-Agent': '在

qq_36333776的博客 5798

html在div中数字时钟,在JS+CSS中如何实现滚动数字时钟

本篇文章教给大家用JS代码配合CSS样式来实现滚动时钟的动画效果,一起来学习下。本篇内容我们用js配合css样式表来实现一个滚动时钟的动画效果,这个效果一般都是用在网页开场动画以及区域的时间显示中,非常好看,动画效果也很个性,我们先来看下运行后的效果:下面就是这个滚动时钟动画的全部代码:CSS3+JS滚动数字时钟代码-脚本之家body{text-align: center;background-c...

weixin_32457141的博客 506

野火STM32F407(骄阳)+无刷直流驱动板+永磁同步电机控制学习记录(四)(基于HAL库)

以上内容都是参考别人资料自学的,很多地方都是凭感觉,因为理论部分不太会算,只要电机能转就行,其他性能指标都没考虑,因为不会,所以这纯属是学习记录帖。带宽在500时,电流波动小,但是响应很慢,就是堵转后不太容易恢复转动。速度环带宽设定小了,响应不够快,带宽设定大了波动比较大,电机感觉起来也震一点,而且,当带宽设到200的时候,启动直接就锁死了,应该是PI增益设定太大了。电流环带宽的试验:去掉速度环,让Iq_Set=2,Ud=0,此时电机是电流环闭环控制,用手堵转电机然后松开,看电流的波动以及响应情况。

XUEXIDEXIAOhai的博客 4553

汇丰外包Java岗面试复盘:Zoom面1.5小时,从英语、粤语到现场敲代码的极限挑战

本文详细记录了汇丰银行外包Java岗位的面试全过程,包括多语言切换(英语、粤语)的技术沟通挑战和现场编码测试的实战经验。从高并发编程到JVM调优,面试不仅考察技术深度,更注重实战问题解决能力。文章分享了应对跨国银行技术面试的实用策略,帮助Java开发者在跨文化环境中提升竞争力。

weixin_42524824的博客 363

JavaScript-WebAPI基础②BOM对象、window对象、定时器、this、JS执行机制、location对象、navigation对象、history对象

JavaScript基础BOM对象什么是BOMBOM的构成window对象的常见事件定时器定时器案例:倒计时 BOM对象 什么是BOM BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window BOM的构成 window 对象是浏览器的顶级对象,它具有双重角色。 它是 JS 访问浏览器窗口的一个接口。 它是一个全局对象。定义在全局作用域中的变量、函数都会变成 window 对象的属性和方法。 在调用的时候可以省略

hjc13348的博客 243

能量机关 STM32HAL库开发大疆A板WS2812B彩灯(PWM+DMA)

本文主要目的是为了制作RoboMaster比赛能量机关的灯条控制,模拟比赛场中大符,搭建出类似场地道具,以供视觉测试 使用的是RoboMaster开发板A型,芯片为STM32F427IIH6,使用的灯条为WS2812B。 采用PWM+DMA控制,使用CUBEMX配置底层,keil5编辑烧录代码 实现:一共五片扇叶,每片扇叶均实现流水灯+常亮颜色 参考文章在后面会标记出来

m0_51756449的博客 4291

CSS 性能优化的5个简单步骤

  一个经常被忽视的网站性能瓶颈发生在处理级联样式表和随后在网页的文档对象模型中应用 CSS 选择器。为了加快网页的渲染速度并改善最终用户体验,请考虑以下五个 CSS 性能优化技巧。   1.使用内联样式   如果给定样式仅用于单个特定页面元素(例如图像滑块或轮播)并且该组件仅用于站点中的少数页面,请使用内联样式而不是通用加载的 CSS 文件。这不仅会减少外部样式表的大小,还会减少在不使用该组件的页面上发生的 CSS 选择器评估的数量。   2.使用特定的样式   不要将样式应用于通用选择器、后代选

yueqian_edu的博客 1280

内网Linux服务器离线安装python包

3、将下载的依赖包和requirements.txt 拷贝到内网主机,依赖包和requirements.txt放同一级目录,进入该目录,运行指令。其实还有个更加方便的办法,联网主机装个与内网主机一样环境的虚拟机,在虚拟机中下载py包,拷贝到内网主机后就能直接安装了,省去手动下载py包的步骤。简单记录下最近遇到的一个小问题,内网主机没有内网源,处于无互联网状态,安装python包只能通过联网主机下载好后拷贝到内网主机。由于内网主机安装了多个版本的python,为了防止搞错,使用这种方式来调用pip安装。

cyc头发还挺多的博客 651

Cadence PCB仿真 使用Allegro PCB SI为BRD文件创建通用型IBIS模型的方法图文教程

本文简单介绍使用Allegro PCB SI软件为BRD PCB设计文件中的元器件创建IBIS模型的方法。

fydar的博客 2169

JavaScript之BOM对象(上)

前言 接着上回的Dom对象的来讲,这次是BOM对象,BOM 即浏览器对象模型。它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window.,BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。 好奇吗?开始我也好奇,所以我就去学习探索了一些,简单的说一些我探索的成果吧! 一、BOM的相关介绍 1.BOM与dom的区别 DOM就是把「文档」当做个「对象」来看待,而BOM把「浏览器」当做一个「对象】来看待,DOM 的顶级对象是document,BOM的顶级对象是window

txq231254的博客 1136

微信小程序 - 最新详细实现“全局实时监听页面发生跳转“ 当页面跳转后立即捕捉并触发某个操作或调用处理函数,小程序整个项目无时无刻只要路由发生变化改变了就能监听,时刻检测页面URL变化(获取路由数据)

微信小程序,vue2,vue3,监听路由,如何监听路由发生变化,如何watch监听路由,怎么全局监听页面发生变化,实现当页面路由发生变化时执行一个函数,当路由变化时执行一些操作执行一段代码,怎么监听路由变化时触发一个函数,监听页面变化,页面间的跳转如何监听,页面跳转时怎么拿到路由及参数,页面路由变化时拿到参数和url,使用watch监听路由变化,页面跳转后怎么触发事件,怎么监听页面跳转,监听页面跳转并拿到路由url路径,小程序怎么全局定义一个专门监听路由的函数,小程序怎么无时无刻实时监听路由页面跳转,监听当

🏆 前端领域优质创作者 4475

Javascript【BOM 概述、window 对象的常见事件、定时器、JS 执行机制、 location 对象、navigator 对象、history 对象】

Javascript【BOM 概述、window 对象的常见事件、定时器、JS 执行机制、 location 对象、navigator 对象、history 对象】

m0_52896752的博客 262

这个AI工具可以把产品说明书转成演示视频,老板狂喜

回顾本文,我们从“传统视频制作的痛点”出发,拆解了AI将产品说明书转为视频的核心技术(NLP文本理解→CV画面生成→视频合成),并提供了3类工具实操方案(SaaS/开源/API)。推广成本降80%,制作效率提90%,产品迭代与推广终于能“同频”;摆脱对专业团队的依赖,自己就能快速产出高质量视频;对技术爱好者来说,这是一个“AI多模态融合”的绝佳实践案例(NLP+CV+语音合成的综合应用)。今天就找一份产品说明书,用HeyGen或Pictory试做一个视频。

AIGC应用创新大全的博客 323

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Web APls 阶段——第十三节——BOM 浏览器对象模型和js执行机制

文章目录学习目标1. BOM 概述1.1 什么是 BOM1.2 BOM 的构成2. window 对象的常见事件2.1 窗口加载事件2.2 调整窗口大小事件3. 定时器3.1 两种定时器3.3 停止 setTimeout() 定时器3.4 setInterval() 定时器3.5 停止 setInterval() 定时器3.6 案例: 发送短信4. JS 执行机制5. location 对象6. navigator 对象7. history 对象 学习目标 能够说出什么是 BOM 能够知道浏览器的顶级对象

123加油的博客 790

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

JavaScript教程第三篇(作者原创)

JavaScript教程

qq_54525448的博客 625

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

javascript学习目录

前面的话   如果某些事情就像魔法一样,那意味着看到了新生事物的曙光,任何足够先进的技术都和魔法无异。   javascript就如同魔法一样,它是一门充满活力、简单易用的语言,又是一门具有许多复杂微妙技术的语言。即使是经验丰富的javascript开发者,如果没有认真学习的话,也无法真正理解它们,这就是javascript的矛盾之处。由于javascript不必理解就可以使用,因此通常来说很...

weixin_30325793的博客 125

web-API-BOM

BOM 概述什么是BOMBOM 的构成window 对象的常见事件窗口加载事件调整窗口大小事件定时器两种定时器setTimeout() 定时器停止setTimeout() 定时器setInterval() 定时器停止setInterval() 定时器thisJS 执行机制JS 是单线程同步和异步同步和异步JS 执行机制location 对象什么是location 对象URLlocation 对象的属性location 对象的方法navigator 对象history对象

weixin_43772946的博客 601

BOM笔记

7.BOM 浏览器对象模型 1. BOM 概述 1.1 什么是 BOM BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window。 BOM 由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。 BOM 缺乏标准,JavaScript 语法的标准化组织是 ECMA,DOM 的标准化组织是 W3C,BOM 最初是Netscape 浏览器标准的一部分 1.2 BOM 的构成 BOM 比 DOM 更大,它包含 DOM。

菜鸡成长站 268

如何用AI分析用户行为并实时切换网页主题?(附完整代码)

掌握CSS+AI:智能主题切换实现,教你通过AI分析用户行为实时调整网页主题。适用于夜间模式偏好识别、多设备自适应等场景,结合CSS变量与机器学习模型精准预测用户需求,提升体验一致性。方法简单高效,值得收藏。

VarFun的博客 461

【房屋租赁管理模块的设计与实现】

房屋租赁管理模块的设计与实现

qq_45936077的博客 647

妙味JS学习记录(一)

在学习过程中零碎的知识点记录以及一些想法,加深印象,强化记忆。 零、预热课程 常见的JS效果实现原理: ~鼠标移入:display:'block'-->'none' ;上下移动轮播:改变ul的top值;左右轮播:改变left值;网页换肤:更换link便签的href;点击菜单展开收缩:用if来判断display; ~首先想好修改的属性,其次考虑加什么事件; ~函数加括...

weixin_30413739的博客 116

Arduino Day:从IDE选择到ESP32项目实战的创客进阶指南

单片机开发是嵌入式系统和物联网应用的基础,其核心在于通过编程控制硬件执行特定功能。Arduino作为开源硬件平台,通过简化的编程框架和丰富的库函数,极大降低了电子原型开发的门槛,使开发者能快速实现从传感器数据采集到执行器控制的完整链路。在工程实践中,选择适合的开发工具至关重要,例如Arduino IDE 2.0提供了强大的代码智能感知和集成调试器,能显著提升开发效率。同时,掌握核心硬件演进趋势,如从经典的Arduino Uno转向功能更强大的ESP32,能够为项目添加网络通信和更复杂的计算能力。这些技术广泛

weixin_30279315的博客 365

ESP8266 FastLED WebServer项目架构深度解析:从硬件驱动到Web界面设计

想要通过浏览器远程控制LED灯带吗?ESP8266 FastLED WebServer项目为您提供了一个完美的解决方案!这个开源项目将ESP8266微控制器、FastLED库和Web服务器技术巧妙结合,让您可以通过任何设备的浏览器轻松控制可寻址LED灯带。无论您是物联网爱好者还是LED灯光项目开发者,这个项目都展示了如何构建一个完整的嵌入式Web控制系统。 ## 硬件驱动层架构设计 ### E

gitblog_00207的博客 1102

JAVA课程分为几部分_语文课程目标体系可以分为几个学段?

【简答题】身体功能包括心肺功能、肌耐力、柔软度、平衡。心肺耐力是指心脏及肺脏运送氧氣的能力,例如当您从事某项活动会不会有上氣不接下氣的感觉。肌力是指肌肉所产生的最大力量、例如您可以一次拿很重的東西;而耐力是指肌肉克服软小阻力但能重复进行的能力,例如拿很轻的水瓶100下就代表您的肌耐力。柔软度,即是关节活动的范围,例如手可以抬高或是弯腰可以模到地上就代表您的柔频度好不好。平衡,包含坐姿下或站姿下甚至...

weixin_42394780的博客 335
上一篇: 如何在js中解决阻止事件冒泡问题?
下一篇: 探索vue2框架的世界:vuex持久化,存储的数据刷新页面后导致数据丢失?
@德玛玩前端
博客等级 码龄5年 413粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值