1. 程式人生 > >純JavaScript在網頁上實現”簡書“的文章編輯器

純JavaScript在網頁上實現”簡書“的文章編輯器

今天在“簡書”上看到發文章的文字編輯器,覺得很神奇,很夢幻,於是想在網頁上實現一下。先上一張自己實現的網頁編輯器的效果:我的demo

原理:多個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,希望大家不吝賜教