English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Effetto di orologio digitale scorrevole implementato con JS+CSS

In questo articolo, utilizzeremo JavaScript insieme al foglio di stile CSS per creare un'animazione di orologio scorrevole. Questo effetto è generalmente utilizzato negli animazioni di avvio delle pagine web e per visualizzare l'ora in una regione, è molto bello e l'effetto animazione è anche molto personale. Vediamo prima l'effetto dopo l'esecuzione:

Ecco tutto il codice dell'animazione del orologio scorrevole:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>CSS3+JS scrolling number clock code - Yell tutorial</title>
<style>
body{text-align: center;background-color: #0e141b;color: rgba(224, 230, 235, 0.89);font-family: 'Roboto Condensed', sans-serif;font-weight: 300;overflow: hidden;}
.column,.colon{display: inline-block;vertical-align: top;font-size: 86px;line-height: 86px;}
.column{-webkit-transition: -webkit-transform 300ms;transition: -webkit-transform 300ms;transition: transform 300ms;transition: transform 300ms, -webkit-transform 300ms;}
.colon{-webkit-transizione: -webkit-trasformazione 300ms;trasizione: -webkit-trasformazione 300ms;trasizione: trasformazione 300ms;trasizione: trasformazione 300ms, -webkit-trasformazione 300ms;-webkit-trasformazione: translateY(calc(50vh - 43px));trasformazione: translateY(calc(50vh - 43px));}
.colon:after{content: ':';}
.num{-webkit-transizione: opacità 500ms, ombra-testo 100ms;transizione: opacità 500ms, ombra-testo 100ms;opacità: 0.025;}
.num.visible{opacità: 1.0;ombra-testo: 1px 1px 0px #336699;}
.num.close{opacità: 0.35;}
.num.far{opacità: 0.15;}
.num.distant{opacità: 0.1;}
</style>
</head>
<body>
<div class="column">
 <div class="num">0</div>
 <div class="num">1</div>
 <div class="num">2</div>
</div>
<div class="column">
 <div class="num">0</div>
 <div class="num">1</div>
 <div class="num">2</div>
 <div class="num">3</div>
 <div class="num">4</div>
 <div class="num">5</div>
 <div class="num">6</div>
 <div class="num">7</div>
 <div class="num">8</div>
 <div class="num">9</div>
</div>
<div class="colon"></div>
<div class="column">
 <div class="num">0</div>
 <div class="num">1</div>
 <div class="num">2</div>
 <div class="num">3</div>
 <div class="num">4</div>
 <div class="num">5</div>
</div>
<div class="column">
 <div class="num">0</div>
 <div class="num">1</div>
 <div class="num">2</div>
 <div class="num">3</div>
 <div class="num">4</div>
 <div class="num">5</div>
 <div class="num">6</div>
 <div class="num">7</div>
 <div class="num">8</div>
 <div class="num">9</div>
</div>
<div class="colon"></div>
<div class="column">
 <div class="num">0</div>
 <div class="num">1</div>
 <div class="num">2</div>
 <div class="num">3</div>
 <div class="num">4</div>
 <div class="num">5</div>
</div>
<div class="column">
 <div class="num">0</div>
 <div class="num">1</div>
 <div class="num">2</div>
 <div class="num">3</div>
 <div class="num">4</div>
 <div class="num">5</div>
 <div class="num">6</div>
 <div class="num">7</div>
 <div class="num">8</div>
 <div class="num">9</div>
</div>
<script>
'use strict';
var size = 86;
var columns = Array.from(document.getElementsByClassName('column'));
var d = undefined;
 c = undefined;
var classList = ['visible', 'close', 'far', 'far', 'distant', 'distant'];
var use24HourClock = true;
function padClock(p, n) {
	return p + ('0' + n).slice(-2);
{}
function getClock() {
	d = new Date();
	return [use24HourClock ? d.getHours() : d.getHours() % 12 || 12, d.getMinutes(), d.getSeconds()].reduce(padClock, '');
{}
function getClass(n, i2) {
	return classList.find(function (class_, classIndex) {}}
		return i2 - classIndex === n || i2 + classIndex === n;
	}) || '';
{}
var loop = setInterval(function () {
	c = getClock();
	columns.forEach(function (ele, i) {
		var n = +c[i];
		var offset = -n * size;
		ele.style.transform = 'translateY(calc(50vh + ' + offset + 'px - ' + size / 2 + 'px))';
		Array.from(ele.children).forEach(function (ele2, i2) {
			ele2.className = 'num ' + getClass(n, i2);
		});
	});
}, 200 + Math.E * 10);
</script>
</body>
</html>

Attenzione: Il contenuto più alto è il codice CSS, è possibile modificarlo per colori, font, ecc.

<style>
body{text-align: center;background-color: #0e141b;color: rgba(224, 230, 235, 0.89);font-family: 'Roboto Condensed', sans-serif;font-weight: 300;overflow: hidden;}
.column,.colon{display: inline-block;vertical-align: top;font-size: 86px;line-height: 86px;}
.column{-webkit-transition: -webkit-transform 300ms;transition: -webkit-transform 300ms;transition: transform 300ms;transition: transform 300ms, -webkit-transform 300ms;}
.colon{-webkit-transizione: -webkit-trasformazione 300ms;trasizione: -webkit-trasformazione 300ms;trasizione: trasformazione 300ms;trasizione: trasformazione 300ms, -webkit-trasformazione 300ms;-webkit-trasformazione: translateY(calc(50vh - 43px));trasformazione: translateY(calc(50vh - 43px));}
.colon:after{content: ':';}
.num{-webkit-transizione: opacità 500ms, ombra-testo 100ms;transizione: opacità 500ms, ombra-testo 100ms;opacità: 0.025;}
.num.visible{opacità: 1.0;ombra-testo: 1px 1px 0px #336699;}
.num.close{opacità: 0.35;}
.num.far{opacità: 0.15;}
.num.distant{opacità: 0.1;}
</style>

JS代码主要用于控制动画的滚动效果,CSS用于控制数字的大小等内容。

本篇内容是呐喊教程的原创,转载请留网址,感谢你对呐喊教程的支持。

Ti piacerebbe anche