这是一个使用span的静态样式,但我愿意在文本编辑器中动态使用它。这是我迄今为止完成的代码。
HTML代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Text Editor</title>
<link type="text/css" rel="stylesheet" href="css/reset.css" />
<link type="text/css" rel="stylesheet" href="css/layout.css" />
</head>
<body>
<div class="main-wrapper">
<div class="title"> Text Editor </div>
<div class="menu">
<ul>
<li>
<button onclick="changeFont('editor','bold')"><strong>B</strong> </button>
</li>
<li>
<button onclick="changeFont('editor','italic')"><em>I</em> </button>
</li>
<li>
<button onclick="changeFont('editor','underline')"><u>U</u> </button>
</li>
<li>
<ul>
<li>
<input id="fsize" type="text" value="10" />
</li>
<li>
<button onclick="changeFont('editor','fontSize')">Size</button>
</li>
</ul>
</li>
<li>
<button onclick="changeFont('editor','adjustR')">R</button>
</li>
<li>
<button onclick="changeFont('editor','adjustC')">C</button>
</li>
<li>
<button onclick="changeFont('editor','adjustL')">L</button>
</li>
<li>
<select id="fontFamily" value="" onclick="changeFont('editor','fontFamily')">
<option value="1">Times New Roman</option>
<option value="2">Arial</option>
<option value="3">Verdana</option>
</select>
</li>
<li> <button onclick="ShowSelectionInsideTextarea('editor')">Area</button>
</ul>
</div>
<div class="line"> </div>
<div class="main-body">
<textarea id="editor"></textarea>
</div>
<div class="footer"></div>
</div>
<script type="text/javascript" src="js/script.js">
</script>
</body>
</html>
CSS 代码:
@charset "utf-8";
.main-wrapper{
width:1000px;
background-color:#e0e7e7;
margin:0px auto;
}
.title{
font-size:24px;
text-align:center;
color:#357f7c;
}
.menu{
width:auto;
height:70px;
background-color:#f2f6f6;
padding-top:50px;
}
.menu ul {
list-style:none;
}
.menu ul li{
float:left;
margin-left:10px;
}
button{
width:55px;
height:30px;
border-radius:5px;
font-size:24px;
}
input{
width:55px;
height:25px;
}
select{
height:25px;
}
.line{
height:17px;
background:url(../img/bar.jpg) repeat-x;
}
.main-body{
width:750px;
height:450px;
margin:0px auto;
background-color:#fff;
}
#editor{
width:750px;
height:450px;
overflow:hidden;
text-align:left;
}
.footer{
height:55px;
background-color:#d2d9d3;
}
Js 代码:
var editor=document.getElementById("editor");
function changeFont(txt,change) {
var editor=document.getElementById(txt);
if (change == 'bold') {
if (editor.style.fontWeight == 'bold')
editor.style.fontWeight = 'normal';
else
editor.style.fontWeight = 'bold';
}
else if (change == 'italic') {
if (editor.style.fontStyle == 'italic')
editor.style.fontStyle = 'normal';
else
editor.style.fontStyle = 'italic';
}
else if (change=='underline'){
if (editor.style.textDecoration == 'underline')
editor.style.textDecoration = 'none';
else
editor.style.textDecoration = 'underline';
}
else if (change=='fontSize'){
var fsize=document.getElementById("fsize");
var fontSize=fsize.value;
editor.style.fontSize=fontSize+"px";
}
else if (change=='adjustR'){
if(editor.style.textAlign=="right")
editor.style.textAlign="left";
else
editor.style.textAlign="right";
}
else if (change=='adjustC'){
if(editor.style.textAlign=="right" || editor.style.textAlign=="left" )
editor.style.textAlign="center";
else
editor.style.textAlign="left";
}
else if (change=='adjustL'){
editor.style.textAlign="left";
}
else if (change=='fontFamily'){
var fontFamily=document.getElementById("fontFamily");
var value=fontFamily.value;
if(value==1){
editor.style.fontFamily="Times New Roman";
}
if(value==2){
editor.style.fontFamily="Arial";
}
if(value==3){
editor.style.fontFamily="Verdana, Geneva, sans-serif";
}
}
}
function ShowSelectionInsideTextarea(editor){
var textComponent = document.getElementById(editor);
var selectedText;
if (document.selection != undefined)
{
textComponent.focus();
var sel = document.selection.createRange();
selectedText = sel.text;
}
else if (textComponent.selectionStart != undefined)
{
var startPos = textComponent.selectionStart;
var endPos = textComponent.selectionEnd;
selectedText = textComponent.value.substring(startPos, endPos)
}
console.log(selectedText);
}
请给我建议,如何在我的代码中使用contenteditable div!
<span>
中,并对包含所选文本的 span 应用样式。 - Bananatextarea
里面? - Robby Cornelissen<div contenteditable></div>
... - Banana