【发布时间】:2019-05-12 08:27:27
【问题描述】:
我有一个 html 页面,我希望文本看起来清晰而不模糊
当我上传文件时,会从文件中读取文本并显示在 TextArea 上,但文本似乎是模糊的
我使用的概念是,当我键入某个特定关键字时,如果该特定关键字与 textarea 中的某个类型匹配,那么它会以不同的颜色显示,例如关键字“已连接”,如果我在 textarea 中键入它,则显示为绿色,这就是我的功能已定义
问题:当我从文件中获取文本时,文本显示在我的 textarea 上但出现模糊如何修复该模糊
使用此文件并查看模糊内容 您能否上传此文本文件并查看(示例文本文件)链接:sendspace.com/file/67ge9n 您可能会看到模糊内容,如图像 sendspace.com/file/r25qme 所示
const color = {
"connected successfully": "green",
"connected": "green",
"connection failure": "red"
};
let textArea = document.getElementById("myTextArea");
let colorsArea = document.querySelector(".colors");
let backdrop = document.querySelector(".backdrop");
// Event listeners.
textArea.addEventListener("input", function() {
colorsArea.innerHTML = applyColors(textArea.value);
});
textArea.addEventListener("scroll", function() {
backdrop.scrollTop = textArea.scrollTop;
});
function applyColors(text) {
let re = new RegExp(Object.keys(color).join("|"), "gi");
return text.replace(re, function(m) {
let c = color[m.toLowerCase()];
return `<spam style="color:${c}">${m}</spam>`;
});
}
function rdata() {
var file = document.getElementById("myFile").files[0];
var reader = new FileReader();
reader.onload = function(e) {
var textArea = document.getElementById("myTextArea");
textArea.value = e.target.result;
};
reader.readAsText(file);
}
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 50%;
}
td {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
input[type=text],
select {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.container,
.backdrop,
#myTextArea {
font: 12px 'Open Sans', sans-serif;
letter-spacing: 1px;
width: 48%;
height: 250px;
}
#myTextArea {
margin: 0;
position: absolute;
border-radius: 0;
background-color: transparent;
z-index: 2;
color: black;
/* i change it to red , u can change to any color u want */
resize: none;
}
.backdrop {
position: absolute;
z-index: 1;
border: 2px solid transparent;
overflow: auto;
pointer-events: none;
}
.colors {
white-space: pre-wrap;
word-wrap: break-word;
}
<tr>
<td><input id="myFile" type="file" /></td>
</tr>
<tr>
<td colspan="2">
<div class="container">
<div class="backdrop">
<div class="colors">
</div>
</div>
<textarea id="myTextArea" onclick="rdata();"></textarea>
</div>
</td>
</tr>
【问题讨论】:
-
您的文本没有模糊,您有 2 个容器,它们的位置绝对在彼此之上。当您键入相同的文本时,两者都会弹出一个轻微的偏移量,从而产生模糊的效果。这 2 个容器是背景和 mytextarea,它们的绝对位置使它们彼此重叠。
-
我该如何解决@Jonny
-
您可以将位置更改为相对位置,以查看我在说什么将拆开 2 个容器。您将不得不使用它来将它们定位在您想要的位置
标签: javascript html css