花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 16|回复: 3

Mahei TextArea文档

[复制链接]
  • TA的每日心情
    奋斗
    2026-5-27 20:40
  • 签到天数: 1827 天

    [LV.Master]伴坛终老

    3231

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2026-5-27 21:35 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    Mahei TextArea(下面简称 mhta)是一款基于 h5 textarea 控件的 Web 编辑器,集成行号、当前行行号高亮、智能缩进、行移动、键盘成对符号自动完成、编辑器状态保存、效果预览等功能于一身,源码体积在10KB上下,无第三方依赖。

    一、CSS和HTML

    以下是简洁而基础的配套CSS设置和HTML代码结构:

    <style> .ed-container { --xx: 60px; width: 1000px; height: 480px; border: 2px solid silver; background:linear-gradient(to right,#eee 59px,#aaa 60px,#fff 0); margin: 20px auto; position: relative; } .ed-container:hover { border-color: gray; } .editor { position: absolute; left: var(--xx); width: calc(100% - var(--xx)); height: 100%; box-sizing: border-box; padding: 10px; font-size: 16px; border: none; outline: none; resize: none; } .lnum { position: relative; margin: 0; padding: 0; color: #999; visibility: hidden; } .lnum:hover::before { color: red; } .lnum::before { position: absolute; content: attr(data-num); left: -5px; top: 0; width: calc(var(--xx) - 10px); height: 100%; text-align: right; cursor: pointer; padding: 0; box-sizing: border-box; visibility: visible; } .hlight { color: red; } .tMid { text-align: center; } </style> <div class="ed-container"> <textarea class="editor" placeholder="输入代码 ..."></textarea> </div> <div class="tMid"><button id="btnPre" type="button">预览效果</button></div>

    CSS中,.lnum 选择器是行号 p 标签样式,.hlight 选择器是行号高亮样式,.tMid 选择器规范文本居中(可选);--xx 变量很重要,它是行号区域宽度、编辑器右移距离的重要设置。HTML结构非常简单:一个父元素包裹一个textarea标签,外加一个预览按钮。

    二、脚本引入与应用

    mhta 封装一个名为 TA 的对象,实例化之即可使用,实例化时需要一个参数:textarea 控件DOM实体。例如,依据上面CSS+HTML代码示例,可以这样操作:

    <!-- 引入 mhta.js --> <script charset="utf-8" src="mhta.js"></script> <script> const editor = document.querySelector('.editor'); const ta = new TA(editor); // 实例化TA对象 btnPrev.onclick = () => ta.preView(); // 预览 </script>

    三、实例

    将上述一、二的代码示例进行整合,便可真正运行 mhta 编辑器(注意 maha.js 的地址真实可用):

    <style> .ed-container { --xx: 60px; width: 1000px; height: 480px; border: 2px solid silver; background:linear-gradient(to right,#eee 59px,#aaa 60px,#fff 0); margin: 20px auto; position: relative; } .ed-container:hover { border-color: gray; } .editor { position: absolute; left: var(--xx); width: calc(100% - var(--xx)); height: 100%; box-sizing: border-box; padding: 10px; font-size: 16px; border: none; outline: none; resize: none; } .lnum { position: relative; margin: 0; padding: 0; color: #999; visibility: hidden; } .lnum:hover::before { color: red; } .lnum::before { position: absolute; content: attr(data-num); left: -5px; top: 0; width: calc(var(--xx) - 10px); height: 100%; text-align: right; cursor: pointer; padding: 0; box-sizing: border-box; visibility: visible; } .hlight { color: red; } .tMid { text-align: center; } </style> <div class="ed-container"> <textarea class="editor" placeholder="输入代码 ..."></textarea> </div> <div class="tMid"><button id="btnPre" type="button">预览效果</button></div> <!-- 引入 mhta.js --> <script charset="utf-8" src="https://638183.freep.cn/638183/web/js/mhta.js"></script> <script> const editor = document.querySelector('.editor'); const ta = new TA(editor); // 实例化TA对象 btnPre.onclick = () => ta.preView(); // 预览 </script>

    四、编辑器的使用

    • 行号与行号高亮
      1. 行号 :自动生成,编辑框里有内容,其右侧就有行号;
      2. 高亮 :当前行行号高亮;
      3. 点击:点击行号,选中编辑框对应行。点击或选中编辑框任意行,对应行号高亮;
    • 智能缩进
      1. 回车 :继承上一行的缩进距离。有选中文本时,选中的文本会被删除;
      2. Tab :缩进四个自然空格。有选中文本时,选中文本所有行增加四个自然空格;
      3. 退格键 :若输入光标前面有四个或以上空格,删除四个空格,若不足四个空格保持退格键自然行为;
    • 自动完成 :输入键盘上的 `{[('" 等成对符号,会自动补齐其右侧符号,若有选中文本,左侧符号和后侧符号将其包裹;
    • 行移动 :编辑器里的行可以上下移动,支持多行操作。方法:点击任意行或选中多行后,按 alt+↑/↓ 组合键;
    • 保存编辑状态 :预览、刷新页面和关闭页面均自动触发编辑器内容的自动保存,下次相同浏览器打开相同页面自动加载;
    • 预览编辑器内容 :TA 对象提供一个预览指令,preView(),需要自设触发按钮(详情参阅示例代码)。预览页面以 _blank 方式加载;
    • 集成到自己的项目 :给 textarea 标签提供 form 父元素即可,注意 textarea 需要一个 name 属性名称以便 submit 时正确提交数据;
    • 其它 :编辑器理论上支持无限多的文本,但从性能和外观考虑,代码行数在1000行左右较为合适。

    评分

    参与人数 1威望 +50 金钱 +100 经验 +50 收起 理由
    红影 + 50 + 100 + 50 匠心独运,细节精致入微!

    查看全部评分

  • TA的每日心情
    奋斗
    2026-5-27 20:40
  • 签到天数: 1827 天

    [LV.Master]伴坛终老

    3231

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2026-5-27 21:37 | 显示全部楼层
    生产环境演示地址:

            简易编辑器
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1897

    主题

    33万

    回帖

    39万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2026-5-27 22:29 | 显示全部楼层
    祝贺黑黑完成的Web 编辑器 Mahei TextArea ,非常简洁实用。很赞
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-5-27 20:40
  • 签到天数: 1827 天

    [LV.Master]伴坛终老

    3231

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2026-5-27 22:31 | 显示全部楼层
    红影 发表于 2026-5-27 22:29
    祝贺黑黑完成的Web 编辑器 Mahei TextArea ,非常简洁实用。很赞

    这个,据我所知,开源项目中也有一个叫 textareajs 的,不过实现思路不尽相同,功能也不尽一样
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2026-5-28 04:01 , Processed in 0.143661 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表