原文网址:HTML--在textarea左侧添加行号-CSDN博客
简介
本文介绍HTML在textarea文本框左侧添加行号的方法。
效果

代码
html
<html xml:lang="cn" lang="cn">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="keywords" content="anchor,fixed navigation hide anchor">
<title>textarea测试</title>
<style>
.line-number-container {
display: inline-block;
padding: 2px 0 2px 1em;
font-family: monospace;
color: #999;
position: absolute;
left: 0;
top: 0;
bottom: 0;
overflow-y: scroll;
scrollbar-width: none; /* 禁止显示滚动条 */
}
.line-number-container::-webkit-scrollbar {
width: 0; /* 禁止显示滚动条 */
}
.container textarea {
width: 500px;
height: 200px;
padding-left: 2em;
overflow: scroll;
}
</style>
</head>
<body>
<div class="container" style="position: relative;">
<textarea wrap="off"></textarea>
<div class="line-number-container"></div>
</div>
</body>
<script>
createLineNumber('.container textarea', '.line-number-container')
function createLineNumber(textAreaSelector, lineNumberSelector) {
let textarea = document.querySelector(textAreaSelector);
let lineNumber = document.querySelector(lineNumberSelector);
updateLineNumbers();
textarea.addEventListener("input", updateLineNumbers);
textarea.addEventListener("scroll", syncScroll);
lineNumber.addEventListener("scroll", syncContent);
function updateLineNumbers() {
let lines = textarea.value.split("\n");
lineNumber.innerHTML = "";
for (let i = 0; i < lines.length; i++) {
let lineNum = document.createElement("div");
lineNum.textContent = i + 1 + '';
lineNumber.appendChild(lineNum);
}
let widthCount = String(lines.length).length;
widthCount += 1;
textarea.style.setProperty('padding-left', widthCount + 'em');
}
function syncScroll() {
lineNumber.scrollTop = textarea.scrollTop;
}
function syncContent() {
textarea.scrollTop = lineNumber.scrollTop;
}
}
</script>
</html>