使用 HTML、CSS 和 JavaScript 创建实时 Web 编辑器
在本文中,我们将创建一个实时网页编辑器。这是一个 Web
应用程序,允许我们在网页上编写 HTML
、CSS
和 JavaScript
代码并实时查看结果。这是学习 Web
开发和测试代码片段的绝佳工具。我们将使用iframe
元素来显示结果。iframe
元素用于在当前 HTML
文档中嵌入另一个文档。iframe
元素的 src
属性指定要嵌入的文档的 URL
。
实时网页编辑器的作用
实时网页编辑器是实时显示代码结果的网页编辑器。用途包括:快速原型设计、轻松测试和学习 Web
开发。
先决条件
在开始本文之前,应该对 HTML
、CSS
和 JavaScript
有基本的了解。还应该对 DOM
以及如何使用 JavaScript
选择元素有基本的了解,以及熟悉 iframe
元素的使用。
创建 HTML 文件
创建一个新文件夹并将其命名为live-web-editor
。在文件夹内,创建一个新文件并将其命名为 index.html
。在代码编辑器中打开该文件并添加以下代码:
<!DOCTYPE html>
<html>
<head>
<title>实时编辑器</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/split.js/1.0.0/split.min.js" integrity="sha512-tTsZnBXEzNdEaqUO9Ok8fUofS73xieiBa54pD/sxOSvayIgItM9MmEM0CnUjA13LDnJT22sfwmjf20+Bo2174g==" crossorigin="anonymous"></script>
</head>
<body>
<div class="container split">
<!-- Text area for Html Code -->
<textarea id="htmlCode" placeholder="HTML code" spellcheck="false" oninput="update(0)" onkeydown="onkeydownFn(event)"></textarea>
<!-- Text area for Css Code -->
<textarea id="cssCode" placeholder="CSS code" spellcheck="false" oninput="update(0)" onkeydown="onkeydownFn(event)"></textarea>
<!-- Text area for Javascript Code -->
<textarea id="javascriptCode" spellcheck="false" placeholder="JavaScript code" oninput="update(0)" onkeydown="onkeydownFn(event)"></textarea>
</div>
<div class="iframe-container split">
<iframe id="viewer"></iframe>
</div>
<script>
function onkeydownFn(event) {
if(event.keyCode===9){
let v=this.value,s=this.selectionStart,e=this.selectionEnd;
this.value=v.substring(0, s)+'\t'+v.substring(e);
this.selectionStart=this.selectionEnd=s+1;
return false;
}
if(event.keyCode==8){
update(1);
}
}
</script>
</body>
</html>
结果:
上面的代码展示最基本的页面结构,onkeydown
方法用于实时渲染文本区域,当我们输入文本区域时,它会自动渲染,并且还用于在文本区域中启用选项卡,因为默认情况下在文本区域中未启用选项卡。update
方法在下面的js
文件中定义,现在可以忽略。
创建 CSS 文件
创建一个新文件并将其命名为 styles.css
。在代码编辑器中打开该文件并添加以下代码:
@import url('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap');
*{
padding: 0;
margin: 0;
box-sizing: border-box;
}
body{
height: 100vh;
display: flex;
}
.container{
background: #E7E7E7;
display: flex;
flex-direction: column;
width: 50%;
height: 100vh;
margin: 3px;
}
.container textarea {
background-color: #121212;
border:1px solid #0dddf0;
resize: none;
width: 100%;
height: 33.333%;
font-size: 1.4rem;
padding: 10px;
resize: vertical;
overflow-y: scroll;
color:white;
}
.container textarea:focus {
outline: none;
color:white;
}
.iframe-container{
background: white;
width: 50%;
height: 100vh;
margin: 3px;
}
#viewer{
width: 100%;
height: 100%;
}
.split {
width:100%;
height:100%;
}
.gutter {
cursor: e-resize;
height: 100%;
background: grey;
}
.gutter.gutter-horizontal {
cursor: ew-resize;
}
并通过link
标签在html
中引入,结果如下图所示:
创建 JavaScript 文件
创建一个新文件并将其命名为app.js
。在代码编辑器中打开该文件并添加以下代码:
let j = 0;
// 实时渲染方法
function update(i) {
if (i == 0) {
let htmlCode = document.getElementById("htmlCode").value;
let cssCode = document.getElementById("cssCode").value;
let javascriptCode = document.getElementById("javascriptCode").value;
let text =
htmlCode +
"<style>" +
cssCode +
"</style>" +
"<script>" +
javascriptCode +
"</script>";
let iframe = document.getElementById("viewer").contentWindow.document;
iframe.open();
iframe.write(text);
iframe.close();
} else if (i == 1) {
let htmlCode = document.getElementById("htmlCode").value;
let html = htmlCode.slice(0, htmlCode.length);
document.getElementById("htmlCode").value = html;
j = 1;
}
}
这段代码也比较好理解,获取 textarea
的值并将其存储在text
变量中,然后调用iframe
的write
的方法把代码展示在iframe
中。
使用script
标签在html
中引入。
结论
在本文中,我们学习了如何使用 HTML
、CSS
和 JavaScript
创建实时代码编辑器。还学习了如何使用 split.js
库创建分屏布局。可以使用此代码编辑器来测试 HTML
、CSS
和 JavaScript
代码。当然如果想真正使用,可能需要通过添加更多功能来改进此编辑器。