首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >html+css+js实现文本编辑器

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

作者头像
GeekLiHua
发布2025-01-21 19:45:40
发布2025-01-21 19:45:40
65100
代码可运行
举报
文章被收录于专栏:JavaJava
运行总次数:0
代码可运行

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

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

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

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

代码分析

完整的代码:

代码语言:javascript
代码运行次数:0
运行
复制
<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中去。
代码语言:javascript
代码运行次数:0
运行
复制
// 当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();
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • html+css+js实现文本编辑器
    • 代码分析
    • 难点分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档