`
dengjianqiang200
  • 浏览: 128113 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何用jQuery和CSS3制作数字时钟[译]

阅读更多

这要从上周开始说起,当我看到 漂亮的 dribbble 截图,就立刻感觉到一种要将其转变为一个可工作的时钟,并且和本站读者分享的欲望。 如果你想了解如何制作它,请继续阅读!

DEMO   DOWNLOAD

标签

这个时钟不需要很多HTML,这是因为它很大的一部分,像工作日的名称和数字都是动态生成的。 下面是你需要在你页面上使用时钟时要有的标签:

index.html

<div id="clock" class="light">
    <div class="display">
        <div class="weekdays"></div>
        <div class="ampm"></div>
        <div class="alarm"></div>
        <div class="digits"></div>
    </div>
</div>

主元素为#clock的div,包含.display的div,用于容纳平日列表、AM/PM标记、闹铃和时间。 下面代码为每个数字生成一个标签:

<div class="zero">
    <span class="d1"></span>
    <span class="d2"></span>
    <span class="d3"></span>
    <span class="d4"></span>
    <span class="d5"></span>
    <span class="d6"></span>
    <span class="d7"></span>
</div>

.digits元素包含6个像这样带span的div,每个div为时钟的一个数字。就像你在上面片段中所见到的一样,这些div拥有一个从0到9的样式名称,并且包含7个带独立样式的span元素,这些span是数字的一部分,像老的数字时钟一样:

The Digits Explained

数字说明

它们完全用CSS样式渲染且默认设置为 opacity:0 。定义在它们父div上的样式将决定它们的可见性。下面是数字“0”的CSS:

assets/css/styles.css

/* 0 */

#clock .digits div.zero .d1,
#clock .digits div.zero .d3,
#clock .digits div.zero .d4,
#clock .digits div.zero .d5,
#clock .digits div.zero .d6,
#clock .digits div.zero .d7{
    opacity:1;
}
 

除了中间一个,所有的片断都是可见的,我已经向所有的这些span添加了CSS3转换属性,当在数字之间切换时出现渐变效果。

样式表里有很多其他CSS,我不再这列举。我相信最好的方式去学习CSS如何工作就是在FirebugChrome的审查器或你浏览器里的开发者工具里即时审查demo的代码。

The Dark Theme

黑色主题

jQuery 代码

要想要时钟工作,我们将使用jQuery生成每个数字的标签,并且设置一个定时器每秒钟更新一次样式,为了更简单,我们使用moment.js 库(快速开始) 来补偿JavaScript原生日期和时间方法的缺陷。

assets/js/script.js

$(function(){

	// Cache some selectors

	var clock = $('#clock'),
		alarm = clock.find('.alarm'),
		ampm = clock.find('.ampm');

	// Map digits to their names (this will be an array)
	var digit_to_name = 'zero one two three four five six seven eight nine'.split(' ');

	// This object will hold the digit elements
	var digits = {};

	// Positions for the hours, minutes, and seconds
	var positions = [
		'h1', 'h2', ':', 'm1', 'm2', ':', 's1', 's2'
	];

	// Generate the digits with the needed markup,
	// and add them to the clock

	var digit_holder = clock.find('.digits');

	$.each(positions, function(){

		if(this == ':'){
			digit_holder.append('<div class="dots">');
		}
		else{

			var pos = $('<div>');

			for(var i=1; i<8; i++){
				pos.append('<span class="d' + i + '">');
			}

			// Set the digits as key:value pairs in the digits object
			digits[this] = pos;

			// Add the digit elements to the page
			digit_holder.append(pos);
		}

	});

	// Add the weekday names

	var weekday_names = 'MON TUE WED THU FRI SAT SUN'.split(' '),
		weekday_holder = clock.find('.weekdays');

	$.each(weekday_names, function(){
		weekday_holder.append('<span>' + this + '</span>');
	});

	var weekdays = clock.find('.weekdays span');

	// Run a timer every second and update the clock

	(function update_time(){

		// Use moment.js to output the current time as a string
		// hh is for the hours in 12-hour format,
		// mm - minutes, ss-seconds (all with leading zeroes),
		// d is for day of week and A is for AM/PM

		var now = moment().format("hhmmssdA");

		digits.h1.attr('class', digit_to_name[now[0]]);
		digits.h2.attr('class', digit_to_name[now[1]]);
		digits.m1.attr('class', digit_to_name[now[2]]);
		digits.m2.attr('class', digit_to_name[now[3]]);
		digits.s1.attr('class', digit_to_name[now[4]]);
		digits.s2.attr('class', digit_to_name[now[5]]);

		// The library returns Sunday as the first day of the week.
		// Stupid, I know. Lets shift all the days one position down, 
		// and make Sunday last

		var dow = now[6];
		dow--;

		// Sunday!
		if(dow < 0){
			// Make it last
			dow = 6;
		}

		// Mark the active day of the week
		weekdays.removeClass('active').eq(dow).addClass('active');

		// Set the am/pm text:
		ampm.text(now[7]+now[8]);

		// Schedule this function to be run again in 1 sec
		setTimeout(update_time, 1000);

	})();

	// Switch the theme

	$('a.button').click(function(){
		clock.toggleClass('light dark');
	});

});

 

这里最重要的代码部分就是 update_time 方法,在它里面,我们获取到当前日期作为一个字符串,并且使用它来填充时钟元素并且给数字设置正确的样式。

 

有了这些我们的数字时钟已经做好了准备!

下周保持收听啊,我们将要为设置闹铃添加方法并且用HTML5的audio来播放。

E文链接:http://tutorialzine.com/2013/06/digital-clock/

译文链接:http://www.woiweb.net/make-digital-clock-with-jquery-and-css.html

 

分享到:
评论

相关推荐

    jQuery+css3数字时钟效果 jQuery+css3数字时钟网页特效.zip

    本篇将深入探讨如何利用jQuery和CSS3技术实现一个生动、实时的数字时钟效果,让你的网页更具魅力。 首先,jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画制作等任务。在数字时钟项目中,jQuery...

    基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)

    综上所述,本文通过一个实际案例,详细展示了如何结合jQuery和CSS3,以及moment.js库来制作一个网页版数字时钟,并最终实现了一个带有日期和星期功能的动态时钟。这些知识点不仅包含了前端开发中常用的HTML结构布局...

    jquery+CSS3实现的数字时钟效果源码.zip

    在本项目中,"jquery+CSS3实现的数字时钟效果源码.zip"是一个包含使用jQuery和CSS3技术创建的数字时钟效果的代码资源。这个压缩包包含了必要的文件,帮助开发者理解和学习如何利用这两种强大的Web开发工具来构建动态...

    基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)

    随着前端技术的发展,特别是Jquery和CSS3的广泛应用,制作一个无需图片的纯CSS数字时钟变得简单而高效。本文将详细介绍如何利用Jquery和CSS3来制作一个数字时钟,并提供源码下载。 首先,本文强调了数字时钟在Web...

    CSS3带数字时钟的圆盘时钟.rar_CSS3带数字时钟的圆盘时钟_css digit clock

    在这个圆盘时钟中,CSS3被用来创建动态的圆盘指针和数字显示。通过CSS3的transform属性,我们可以对元素进行旋转、缩放和位置调整,以模拟时钟指针的运动。同时,transition属性可以平滑地过渡这些变化,为用户带来...

    jQuery和CSS3精美时钟插件

    尤其是CSS3的过渡和动画特性,使得时钟指针的转动和数字的切换更加自然,增强了视觉吸引力。 **三、响应式设计** 响应式设计是现代网页开发的重要原则,它允许网页根据用户的设备和屏幕尺寸自动调整布局。在这个...

    jQuery+CSS3双表盘时钟代码.zip

    《jQuery+CSS3双表盘时钟代码解析与实践》 在现代网页设计中,动态效果的运用可以提升用户体验,使网页更具吸引力。本篇文章将深入解析“jQuery+CSS3双表盘时钟代码”,探讨如何利用这两种强大的技术实现一个功能...

    jQuery+CSS3动态指针时钟特效源码.zip

    总结起来,"jQuery+CSS3动态指针时钟特效源码"结合了jQuery的事件处理和动画功能,以及CSS3的变形和过渡效果,实现了一款动态、真实的时钟界面。理解并掌握这些知识点,不仅可以帮助你创建类似的动态效果,也能提升...

    html5 css3带翻页数字时钟动画特效

    总的来说,"html5 css3带翻页数字时钟动画特效"是一个结合了HTML5的`&lt;canvas&gt;`、CSS3的动画和过渡效果以及JavaScript编程的项目,旨在创建一个实时且具有翻页动画效果的数字时钟。通过理解和实践这样的项目,开发者...

    jquery+css3时钟

    jquery+css3写的时钟,钟使用的技术是css3的旋转、背景渐变(径向渐变)、圆角,还有负边距的定位,兼容ie9以上的浏览器,firefox、chrome、opera、safari等主浏览器,仅供参考,莫喷我

    jQuery和CSS3精美翻页式电子时钟特效

    《jQuery与CSS3结合打造的翻页式电子时钟特效详解》 在现代网页设计中,动态元素和交互效果越来越受到重视,其中,时钟作为常见的网页元素,其设计方式也在不断创新。今天我们将深入探讨一个利用jQuery库和CSS3技术...

    jQuery+CSS3实现的一款超酷数字时钟翻页动画.zip

    《使用jQuery和CSS3构建数字时钟翻页动画》 在现代网页设计中,动态元素的运用能够极大地提升用户体验,其中数字时钟翻页动画就是一个常见的亮点。本项目"jQuery+CSS3实现的一款超酷数字时钟翻页动画"正是以此为...

    css3+js简单数字时钟代码

    本项目就是一个基于CSS3和JavaScript实现的简单数字时钟,它能自动获取本地时间,并以时、分、秒上下滚动的动画效果展示在网页上。下面将详细介绍这个时钟的实现原理。 **一、HTML结构** 在`index.html`文件中,...

    jQuery+CSS3黑色时钟代码.zip

    《jQuery+CSS3黑色时钟代码详解》 在网页设计中,动态元素总是能吸引用户的注意力,提升用户体验。"jQuery+CSS3黑色时钟代码"就是这样一个实例,它结合了JavaScript库jQuery的强大功能和CSS3的新特性,创建了一个...

    jQuery+CSS3黑色时钟代码

    本教程将详细讲解如何使用jQuery和CSS3来创建一个黑色圆角时钟的实现过程。 首先,jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。在这个项目中,jQuery主要用于监听页面...

    jQuery CSS3双表盘时钟代码.zip

    【jQuery CSS3双表盘时钟代码】是一个利用JavaScript库jQuery和CSS3技术实现的动态时钟效果。这个代码设计独特,采用了双表盘的布局,呈现出大气且复杂的黑色圆形时钟界面,为网页添加了视觉吸引力和实用性。 在这...

    超酷jQuery CSS3翻页时钟动画.zip

    在本资源"超酷jQuery CSS3翻页时钟动画.zip"中,我们探索了一个创新的数字时钟设计,它结合了jQuery和CSS3的技术,创造出一种动态且视觉吸引力极强的用户体验。这款时钟的独特之处在于,其时间的更新不是传统的方式...

    jQuery+css3实现的时钟罗盘动画效果源码.zip

    在本资源中,"jQuery+css3实现的时钟罗盘动画效果源码.zip" 提供了一个使用 jQuery 和 CSS3 技术构建的时钟罗盘动画效果的源代码示例。这个项目可能是为了帮助开发者学习如何将这两种强大的前端技术结合,创建动态且...

Global site tag (gtag.js) - Google Analytics