Compteur de Caractères Moderne avec HTML, CSS & JavaScript

Mukaz
19 Jul 2025, 13:15
91
0
3 Min de lecture
Compteur dd Caractères JavaScript

Tu écris des descriptions, tweets, messages ou publications et tu veux savoir si tu dépasses la limite ? Voici un compteur de caractères moderne et esthétique, que tu peux intégrer dans n’importe quel projet web : formulaire de contact, éditeur de texte, ou même outil SEO personnel.
Ce composant indique le nombre de caractères restants, change de style quand tu t’approches de la limite, et s’adapte à tous les écrans. Tu peux aussi le transformer facilement en compteur de mots ou de lignes.


Code HTML (structure de base)



<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Compteur de caractères</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="counter-container">
<h1>Compteur de caractères</h1>
<textarea id="text-input" placeholder="Tape ton texte ici..." maxlength="200"></textarea>
<div class="progress-wrapper">
<svg height="100" width="100">
<circle cx="50" cy="50" r="45" stroke="#333" stroke-width="6" fill="none"/>
<circle id="progress-circle" cx="50" cy="50" r="45" stroke="#00ff88" stroke-width="6" fill="none" stroke-linecap="round"/>
</svg>
<span id="char-count">0 / 200</span>
</div>
</div>
<script src="script.js"></script>
</body>
</html>

Code CSS (style moderne et responsive)



* {
box-sizing: border-box;
}

body {
margin: 0;
font-family: "Segoe UI", sans-serif;
background-color: #121212;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}

.counter-container {
background-color: #1e1e1e;
padding: 2rem;
border-radius: 16px;
width: 90%;
max-width: 400px;
text-align: center;
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.5);
}

textarea {
width: 100%;
height: 120px;
border: none;
border-radius: 10px;
padding: 1rem;
font-size: 16px;
resize: none;
outline: none;
background: #2a2a2a;
color: white;
}

.progress-wrapper {
position: relative;
width: 100px;
height: 100px;
margin: 1.5rem auto 0;
}

svg {
transform: rotate(-90deg);
}

#progress-circle {
stroke-dasharray: 282.6;
stroke-dashoffset: 282.6;
transition: stroke-dashoffset 0.3s linear, stroke 0.3s;
}

#char-count {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-weight: bold;
font-size: 16px;
color: #ffffff;
}

Code JavaScript (comptage en temps réel)



const textarea = document.getElementById('text-input');
const charCount = document.getElementById('char-count');
const progressCircle = document.getElementById('progress-circle');

const maxChars = parseInt(textarea.getAttribute('maxlength'));
const circleLength = 2 * Math.PI * 45; // r = 45

function updateCounter() {
const currentLength = textarea.value.length;
const percent = currentLength / maxChars;
const offset = circleLength * (1 - percent);

charCount.textContent = `${currentLength} / ${maxChars}`;
progressCircle.style.strokeDashoffset = offset;

// Changement de couleur si limite atteinte
if (currentLength >= maxChars) {
progressCircle.style.stroke = "#ff5555";
} else {
progressCircle.style.stroke = "#00ff88";
}
}

textarea.addEventListener('input', updateCounter);
window.addEventListener('DOMContentLoaded', updateCounter);

⚙️ Fonctionnalités incluses


• 🧮 Mise à jour en temps réel du nombre de caractères
• 🎨 Alerte visuelle quand la limite est proche ou dépassée
• 📱 Design responsive sur mobile et tablette
• 💬 Idéal pour les limites de Twitter, SMS, SEO, etc.
• 🧑‍💻 Facile à personnaliser (limite, couleurs, texte)



📦 Télécharge ou copie/colle le code complet ci-dessous pour commencer à l’utiliser dans tes projets. Tu peux changer le style, le texte, ou même le transformer en éditeur markdown ou bloc-notes.
💡 Astuce : tu peux aussi utiliser ce compteur pour limiter un champ de saisie dans un formulaire en JavaScript natif, sans plugin externe.

Le bonheur dépend de nous-mêmes. – Aristote
Télécharger

Abonnez-vous à notre newsletter

Recevez les derniers articles directement par e-mail en vous inscrivant à notre newsletter.