純JavaScript在網頁上實現”簡書“的文章編輯器
阿新 • • 發佈:2019-02-07
今天在“簡書”上看到發文章的文字編輯器,覺得很神奇,很夢幻,於是想在網頁上實現一下。先上一張自己實現的網頁編輯器的效果:
原理:多個input文字域疊加使用
每次點選按鈕的時候,都會在一行新增一個input type=text,樣式值為點選相應按鈕的值【也給鍵盤enter繫結一個值】。廢話不多說,直接上程式碼:
<!DOCTYPE html>
<html>
<head>
<title>仿簡書</title>
<meta charset='utf-8'>
<script src="jquery-1.11.1.min.js" ></script>
<style >
ul{
text-align: center;
}
ul li{
display: inline;
}
input[type=text]{
border:0px;
width: 100%;
font-size: 20px;
}
input[mazhe=quote]{
background-color: rgb(192,192,192);
}
div [mazhe=quote]{
border-style: none none none solid;
background-color: rgb(192,192,192);
font-size: 2.5em;
}
</style>
</head>
<body>
<ul>
<li><button id='black'>黑體</button></li>
<li><button id='italic'>斜體</button ></li>
<li><button id='quote'>引用</button></li>
<li><button id='line-through'>劃掉</button></li>
</ul>
<div id='content'>
<input type='text' id="msg">
</div>
<script >
window.onload = function(){
$('#msg').focus();
}
var number = 0;
//回車
$('#br').click(function(){
string = '<br/>';
$('#content').append(string);
});
//斜體
$('#italic').click(function(){
var str = '<input style="font-style:italic" type="text" id = "num_'+number+'">';
$('#content').append(str);
$('#num_'+number).focus();
number ++;
});
//黑體
$('#black').click(function(){
var str = '<input style="font-weight:bold" type="text" id = "num_'+number+'">';
$('#content').append(str);
$('#num_'+number).focus();
number ++;
});
//引用
$('#quote').click(function(){
var str = '<div mazhe="quote"><input mazhe="quote"type="text" id = "num_'+number+'"></div>';
$('#content').append(str);
$('#num_'+number).focus();
number ++;
});
//劃掉
$('#line-through').click(function(){
var str = '<input style="text-decoration:line-through" type="text" id = "num_'+number+'">';
$('#content').append(str);
$('#num_'+number).focus();
number ++;
});
//鍵盤enter鍵
document.onkeydown = function(event){
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode ==13){
var str = '<input type="text" id = "num_'+number+'">';
$('#content').append(str);
$('#num_'+number).focus();
number ++;
}
};
</script>
</body>
</html>
除了向這樣很low的方法應該還有其他的方式,但是除了input我不知道html5還提供了什麼可用的api,希望大家不吝賜教