- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
$(document).ready(function() {
// get elements only once instead of every Interval
var clock = {};
clock.seconds = $('.clock_seconds');
clock.minutes = $('.clock_minutes');
clock.hours = $('.clock_hours');
setInterval( function() {
// get time
var date = new Date();
var seconds = date.getSeconds();
var mins = date.getMinutes();
var hours = date.getHours();
// count degrees
var seconds_degree = seconds * 6; // 60 secs * 6 deg = 360 deg
var minutes_degree = mins * 6; // 60 mins * 6 deg = 360 deg
var hours_degree = hours * 30 + (mins / 2); // 12 hours * 30 = 360 deg
// apply transform
clock.seconds.css({"-moz-transform" : 'rotate('+seconds_degree+'deg)'});
clock.minutes.css({"-moz-transform" : 'rotate('+minutes_degree+'deg)'});
clock.hours.css({"-moz-transform" : 'rotate('+hours_degree+'deg)'});
}, 1000 );
});
Yurik 08.08.2011 22:43 # 0
Lure Of Chaos 08.08.2011 22:43 # 0
aTei 08.08.2011 22:55 # 0
inkanus-gray 08.08.2011 23:23 # −1
bugmenot 08.08.2011 23:28 # −2
inkanus-gray 08.08.2011 23:32 # −1
aTei 08.08.2011 23:44 # 0
inkanus-gray 09.08.2011 00:02 # +1
bugmenot 09.08.2011 01:36 # +1
aTei 09.08.2011 07:19 # 0
inkanus-gray 09.08.2011 07:46 # +2
Как написано в заголовке, здесь приветствуется код, над которым можно посмеяться. Варианты такого кода:
1. Работает с глюками.
2. Работает нормально, но жутко неоптимален.
Попробуем найти в этом коде что-нибудь интересное:
1. Обоснованность применения jQuery. Это священная война, дисциплина специальной олимпиады, в которой выигравших не бывает, поэтому останавливаться на этом пункте не будем.
2. class vs id. Если в документе будет несколько часов, то тикать они все будут синхронно. А если нам нужны часы для нескольких поясов, то придётся либо рисовать часовую стрелку для каждого пояса, либо менять class на id.
3. Получение текущего времени. Дата/время — это вообще отдельная тема ГК.
4. Вычисление углов. Квант движения секундной и минутной стрелки здесь — 6 градусов, а часовой — полградуса. Здесь есть, о чём поспорить.
5. Нестандартные свойства типа "-moz-transform". Когда вижу сайты, заточенные под один браузер, так и хочется с автором сделать что-то нехорошее. Заставлять юзера держать четыре браузера из-за того, что на одном сайте используется -moz-, на другом -webkit-, на третьем -o-, на четвёртом progid:DXImageTransform — синдром маркиза заграничного. Нормальные сайты работают со всеми браузерами, а поскольку ради пары сайтов, требующих установки специального браузера, юзеры заморачиваться не будут, сайт потеряет аудиторию.
6. Инициализация по загрузке документа. Если динамически появляющиеся/исчезающие часики не нужны, то это нормально.
7. Безымянные функции. Если подводить часы вручную не нужно, то это нормально.
8. Нет HTML-кода. «Вкусности» могут быть и в нём.
Вроде всё, больше высасывать нечего.
bugmenot 09.08.2011 08:20 # +1
и минутную же
а углы можно было бы из комментариев в выражения перевести
inkanus-gray 09.08.2011 08:47 # +1
Да, есть территории, время в которых отличается от теоретического пояса на 30 минут. А в Непале время от индийского отличается на 15 минут, поэтому индийский программист всегда найдёт занятие. Хотя бы стрелки рисовать.
> а углы можно было бы из комментариев в выражения перевести
Literate programming by Donald Knuth?
bugmenot 09.08.2011 10:13 # +1
тут даже не кнут, а читаемость, чтобы не вспоминать конструкцию шкал архаичных хронометров
guest 08.08.2011 23:50 # 0
нам что, заняться больше нечем?