JSFiddle - React, Tailwind, and code Playground
HTML
<p>
<label for="my-textarea">textarea</label>
<textarea id="my-textarea"
maxlength="160"
data-counter-label="残り{remaining}文字まで入力できます"></textarea>
</p>
CSS
.short-and-sweet-counter {
color: #666;
font-size: 0.75em;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
input,
textarea {
display: block;
border: 1px solid #ddd;
border-radius: 0.5rem;
padding: 0.5rem;
color: #666;
font-size: 1rem;
margin-bottom: 0.3125rem;
}
input:focus,
textarea:focus {
outline: none;
border-color: #666;
box-shadow: 0 0 0 0.25rem #eee;
}
textarea {
min-width: 20rem;
min-height: 5rem;
max-width: 100%;
}
body {
padding: 2rem;
color: #333;
}
p {
margin-bottom: 3rem;
}
JavaScript
/*
* short-and-sweet v1.0.2 - Accessible character counter for input elements
* Copyright (c) 2018 Rik Schennink <hello@rikschennink.nl> (http://rikschennink.nl/)
*/! function(e, t) {
if ("function" == typeof define && define.amd) define(["module", "exports"], t);
else if ("undefined" != typeof exports) t(module, exports);
else {
var n = {
exports: {}
};
t(n, n.exports), e.shortAndSweet = n.exports
}
}(this, function(e, t) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
var i = Object.assign || function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
};
t.
default = function(e) {
if (typeof window === "undefined" ? null : window) {
var d = function(e) {
var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}, n = document.createElement(e);
return Object.keys(t).forEach(function(e) {
n.setAttribute(e, t[e])
}), n
}, p = 0,
n = function(s, e) {
if (s.getAttribute("maxlength")) {
var u = s.dataset.counterLabel || e.counterLabel,
l = function(e) {
var n = e.assistDelay,
t = e.counterClassName,
r = d("span", {
class: t,
"aria-hidden": "true"
}),
a = d("span", {
style: "position:absolute;overflow:hidden;height:1px;width:1px;padding:0;border:0;clip:rect(1px, 1px, 1px,...