html+css+js实现文本编辑器

简介: html+css+js实现文本编辑器

html+css+js实现文本编辑器

简介:本文讲解,如何制作使用html+css+js实现一个好看的文本编辑器。

效果展示

文本框聚焦的时候,就是显示textarea,然后是可编辑的,这个时候可以对文本框输入内容。

当失去文本框焦点的时候,那么就隐藏textarea,显示div,使用div来显示这个文本的内容,更加的专业。

代码分析

完整的代码:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>作文编辑器G</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <style>
        body{
            padding: 100px 200px;
        }
        .form-control{
            min-height:500px;
            margin: 30px;
            border-color: skyblue;
        }
        #editor1 {
            height: 500px;
            display: inline-block;
        }
        #editor2 {
            display: none;
        }
    </style>
</head>
<body>
<div id="editparent">
    <!-- 编辑器控制按钮 -->
    <div id='editControls' style='text-align:center; padding:5px;'>
        <h1>作文编辑器</h1>
    </div>
    <!-- 编辑器可输入内容处 -->
<!--    textarea负责文本内容的编辑-->
    <textarea id='editor1' class='form-control'  contenteditable placeholder="在这里输入内容 英文缩写请用全称"></textarea>
<!--    div负责文本内容的显示-->
    <div id="editor2" class='form-control'  contenteditable >
        <h3></h3>
    </div>
</div>
<script src="https://cdn.acwing.com/static/jquery/js/jquery-3.3.1.min.js"></script>
<script>
    // 默认文本聚焦的
    var editor1 =document.getElementById("editor1");
    editor1.focus();
    var editor2 =document.getElementById("editor2");
    var text1 = editor1.value;
    var text2 = editor2.value;
    // 当textarea失去焦点的时候 隐藏textarea 现实div
    editor1.onblur = function (){
        editor1.style.display = 'none';
        editor2.style.display = 'inline-block';
        editor2.innerHTML = "<h3>" + editor1.value + "</h3>";
    }
    // 当div获取焦点的时候 那么就隐藏div 显示textarea启动编辑功能
    editor2.onfocus = function (){
        editor1.style.display = '';
        editor2.style.display = "none";
        editor1.focus();
    }
    console.log(text2)
</script>
</body>
</html>

难点分析

  • 首先是,如何让这个div的高度根据内容自适应,这里就需要用到min-height这个属性,这个属性就是给这个div盒子指定一个默认的最小大小,当这个大小大过这个最小值的时候,那么就高度根据内容自适应。
  • 第二个难点就是聚焦和失去焦点的问题,这里就要好好的看一下我的js部分是怎么处理的,其实原理并不困难,先默认div隐藏,textarea获得焦点,然后了当div获得焦点的时候,textarea隐藏,当div失去焦点的时候,textarea显示,并且获取焦点。
  • 第三个地方就是设置,当textarea失去焦点的时候把内容同步到div中去。
// 当textarea失去焦点的时候 隐藏textarea 现实div
    editor1.onblur = function (){
        editor1.style.display = 'none';
        editor2.style.display = 'inline-block';
        editor2.innerHTML = "<h3>" + editor1.value + "</h3>";
    }
    // 当div获取焦点的时候 那么就隐藏div 显示textarea启动编辑功能
    editor2.onfocus = function (){
        editor1.style.display = '';
        editor2.style.display = "none";
        editor1.focus();
    }


相关文章
|
17天前
|
前端开发 JavaScript 开发工具
【HTML/CSS】入门导学篇
【HTML/CSS】入门导学篇
23 0
|
1天前
|
JavaScript 前端开发 BI
原生html—摆脱ps、excel 在线绘制财务表格加水印(html绘制表格js加水印)
原生html—摆脱ps、excel 在线绘制财务表格加水印(html绘制表格js加水印)
6 1
|
7天前
|
数据采集 前端开发 网络协议
如何使用代理IP通过HTML和CSS采集数据
如何使用代理IP通过HTML和CSS采集数据
|
10天前
|
JavaScript 前端开发
js怎么删除html元素
js怎么删除html元素
23 10
|
10天前
|
JavaScript 前端开发 iOS开发
js实用方法记录-动态加载css/js
js实用方法记录-动态加载css/js
16 0
|
12天前
|
前端开发 搜索推荐 数据安全/隐私保护
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
18 1
|
12天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
18天前
|
JSON JavaScript 前端开发
js是什么、html、css
js是什么、html、css
|
20天前
|
XML 前端开发 JavaScript
css和html
【4月更文挑战第7天】css和html
13 0
|
24天前
|
人工智能 前端开发 JavaScript
【前端设计】HTML+CSS+JavaScript基本特性
【前端设计】HTML+CSS+JavaScript基本特性