Glassmorphism✨ Premium

Neu Clock

Une horloge analogique de 200 px en relief, cadran creusé de 180 px, 12 repères des heures et trois aiguilles qui suivent l'heure réelle de l'appareil, recalculée chaque seconde en JavaScript. Autant d'horloges que voulu dans la page.

CSSJSAnimation

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Glassmorphism comprend 47 effets, dont 6 gratuits. Découvrir la catégorie →

3 exemples d'usage

Apprendre à lire l'heure — radio-réveil connecté pour enfants — Neu Clock exemple 1

① Apprendre à lire l'heure — radio-réveil connecté pour enfants

QuandDans la chambre, l'écran du réveil montre un grand cadran à aiguilles à côté de l'heure du lever et d'un rappel « petite aiguille = l'heure ».
PourquoiUn vrai cadran analogique, avec ses quatre grands repères, apprend à lire l'heure mieux qu'un affichage numérique ; le relief doux et sans contraste agressif convient à une chambre.
RéglagesHorloge d'origine (200 px, 12 repères), sur la façade d'un réveil dans la teinte de la matière. À côté : heure du lever et pastille soleil en relief. Pour la capture, l'horloge du navigateur est décalée à 7 h 52 par un script de scène ; le script de l'effet n'est pas modifié.
Heure de la station météo d'intérieur — écran posé sur le buffet — Neu Clock exemple 2

② Heure de la station météo d'intérieur — écran posé sur le buffet

QuandLa station affiche l'heure au centre, la température et l'humidité intérieures à gauche, l'extérieur à droite, la date en dessous.
PourquoiL'horloge à l'heure réelle est la pièce centrale d'une station d'intérieur ; le relief s'accorde à l'objet posé, et l'analogique se lit d'un coup d'œil en passant dans la pièce.
RéglagesHorloge au centre d'un écran de 500 px, valeurs météo en 28 px de part et d'autre. Aucun réglage de l'effet : taille, ombres et aiguilles d'origine.
Pointeuse tactile d'un atelier de menuiserie — Neu Clock exemple 3

③ Pointeuse tactile d'un atelier de menuiserie

QuandLes compagnons pointent à l'arrivée sur la tablette fixée au mur ; le cadran donne l'heure, la liste montre qui est déjà là.
PourquoiLe cadran de 200 px se lit de loin, d'un coup d'œil, sans chiffres minuscules ; la liste des pointages porte l'heure exacte en texte, pour qui en a besoin.
RéglagesHorloge à gauche de l'écran de la tablette, liste des arrivées à droite (heures en #166534, 5,6:1), zone de badge en relief. Même décalage d'horloge à 7 h 52 pour la capture.

Comment ça marche

Deux disques dans la teinte #e0e5ec. Le boîtier .neu-clock (200 px) sort de la surface par #b8bec7 12px 12px 24px et #fff -12px -12px 24px ; le cadran .neu-clock-inner (180 px) y est creusé par des ombres internes de 4 px / 8 px. Douze repères .neu-clock-mark tournent autour du centre grâce à transform-origin: center 82px (8 px du bord + 82 px = le centre du cadran) : huit petits de 2 × 12 px en #9ca3af, quatre grands de 3 × 16 px en #6b7280 à 12, 3, 6 et 9 h. Les aiguilles partent du centre (bottom: 50%, transform-origin: center bottom) : heures 4 × 50 px en #374151, minutes 3 × 65 px en #6b7280, secondes 1,5 × 72 px en violet #8b5cf6, sous un moyeu violet de 10 px.

Le JavaScript lit new Date() une fois par seconde et calcule trois angles : secondes à 6° par seconde, minutes à 6° par minute plus 0,1° par seconde (l'aiguille glisse entre deux minutes), heures à 30° par heure plus 0,5° par minute. Aucune transition CSS : la trotteuse saute d'un cran à chaque seconde, comme un mouvement à quartz, et ne repart jamais en arrière au passage de 59 à 0. L'heure est celle de l'appareil du visiteur, dans son fuseau. À chaque tic, le script écrit aussi l'heure dans aria-label (toLocaleTimeString, heures et minutes) sur l'horloge, qui porte role="img".

Le cadran porte ses douze repères dans le HTML, et leur margin-left les centre exactement (−1 px et −1,5 px). Le script ne vise aucun identifiant : il anime toutes les .neu-clock de la page, si bien qu'une deuxième horloge n'est pas condamnée à rester figée sur la position écrite dans le HTML — mesuré, deux horloges collées côte à côte affichent le même angle à la seconde près. Et .neu-clock-scene porte sa surface (#e0e5ec, padding: 40px, assez pour l'ombre de 12 + 24 px), pour que le relief ne dépende pas du fond de votre page.

Accessibilité

  • Texte alternatif vivant : l'horloge est une image (role="img") dont le nom suit l'heure, par exemple « 07:52 » ; il n'est mis à jour que dans l'attribut, sans annonce répétée chaque seconde, ce qui évite de saturer un lecteur d'écran. Si l'heure est l'information principale de la page, ajoutez-la aussi en texte visible.
  • Contraste : sur le cadran #e0e5ec, l'aiguille des heures #374151 mesure 8,1:1, celle des minutes #6b7280 3,8:1, la trotteuse violette 3,3:1 et les grands repères 3,8:1 — au-dessus des 3:1 demandés aux éléments graphiques. Les petits repères #9ca3af (2,0:1) sont en dessous : passez-les en #6b7280 si l'horloge doit se lire de loin.
  • Mouvement : seule la trotteuse bouge, d'un cran par seconde, sans animation CSS. prefers-reduced-motion n'est pas pris en compte ; pour un écran calme, masquez-la : @media (prefers-reduced-motion: reduce) { .neu-clock-hand--second { display: none } }. Le code ne s'arrête pas quand l'onglet est caché : le navigateur ralentit lui-même le minuteur, sans conséquence sur l'heure affichée au retour.
  • Rien à atteindre au clavier : l'horloge n'est pas interactive, elle ne prend pas le focus.

Compatibilité navigateur

CSS : box-shadow portées et internes, transform: rotate() avec transform-origin en pixels, border-radius: 50%. JavaScript : setInterval, Date, toLocaleTimeString, querySelectorAll(...).forEach (NodeList.forEach : Chrome 51, Firefox 50, Safari 10). Mesuré dans Chromium, Firefox et WebKit (Playwright) : 12 repères à égale distance du centre, trotteuse qui avance d'un cran par seconde, deux horloges synchrones, aucune erreur console.

Chrome 51+✓ Complet
Firefox 50+✓ Complet
Safari 10+✓ Complet
Edge 16+✓ Complet
Mobile iOS 10+✓ Complet
Android Chrome✓ Complet

Sans JavaScript, le cadran s'affiche avec ses repères et des aiguilles figées sur la position écrite dans le HTML (environ 3 h 02) : retirez ces styles en ligne si une heure fausse vous gêne plus qu'une horloge sans aiguilles.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec Premium) :

index.html — structure
<div class="neu-clock-scene">
  <div class="neu-clock" role="img" aria-label="Horloge">
    <div class="neu-clock-inner">
      <span class="neu-clock-mark neu-clock-mark--major" style="transform: rotate(0deg);"></span>
      <span class="neu-clock-mark" style="transform: rotate(30deg);"></span>
      <!-- … 10 autres repères, de 60 à 330° -->
      <div class="neu-clock-dot"></div>
      <div class="neu-clock-hand neu-clock-hand--hour"></div>
      <div class="neu-clock-hand neu-clock-hand--minute"></div>
      <div class="neu-clock-hand neu-clock-hand--second"></div>
    </div>
  </div>
</div>
Débloquer le code complet — 9,90 € TTC/mois

Le code complet HTML + CSS + JS de Neu Clock, prêt à coller — et les 840 effets. Ou 299 € TTC une fois, accès à vie.

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
Taille (CSS — .neu-clock 200 px, .neu-clock-inner 180 px) 200 px Pour 300 px, multipliez par 1,5 : cadran 270 px, aiguilles 75 / 97 / 108 px, repères à top: 12px avec transform-origin: center 123px (rayon du cadran − top). Ou gardez le CSS et réduisez avec transform: scale(.6) sur .neu-clock.
Trotteuse (CSS — .neu-clock-hand--second) 1,5 × 72 px, violet #8b5cf6 display: none pour une horloge calme (salle d'attente, chambre). Pour un balayage continu au lieu des sauts : transition: transform 1s linear — mais l'aiguille fera alors un tour à l'envers de 354° à 0°.
Repères (HTML — 12 .neu-clock-mark, --major à 0, 90, 180 et 270°) 4 grands, 8 petits Ne gardez que les quatre grands pour un cadran épuré, ou ajoutez la classe --major aux douze. Les angles sont dans l'attribut style de chaque repère.
Fuseau horaire (JS — new Date()) heure locale de l'appareil Pour afficher Tokyo : var now = new Date(new Date().toLocaleString('en-US', { timeZone: 'Asia/Tokyo' })) à la place de la première ligne de tick.
Couleurs des aiguilles (CSS — #374151, #6b7280, #8b5cf6) gris foncé, gris, violet Gardez au moins 3:1 sur #e0e5ec : une trotteuse rouge #dc2626 mesure 3,8:1.

FAQ

Oui : le script anime toutes les .neu-clock présentes au chargement, sans identifiant. Une horloge ajoutée plus tard par votre code n'est pas prise en compte : relancez le script, ou appelez-le après avoir inséré le HTML.
Elle est celle de l'appareil du visiteur : si son horloge système est décalée, le cadran l'est aussi. Pour une heure de référence (pointeuse, borne), récupérez l'heure du serveur une fois, calculez l'écart avec Date.now() et ajoutez-le dans tick.
Les deux associent un relief et un creux, mais Neu Card est un conteneur statique dont seule la jauge respire, alors que Neu Clock est le seul cadran vivant de la famille : ses aiguilles bougent toutes seules, calées sur l'heure réelle.