所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解


Posted in Javascript onMay 27, 2016

本文教大家如何使用bootstrap-wysiwyg文本编辑器,充分发挥编辑器的优势,希望大家可以有所收获。

所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解

主要特性:
  超小5kb
  自动的热键支持(MAC和windows)
  拖放的插入图片,支持图片上传(支持手机拍照)
  支持声音输入(chrome支持)
  允许自定义的工具条,可以使用所有的bootstrap内容,字体
  不使用任何强制的样式
  …………………………

其实不止这些,需要大家自己去探索,加油吧!

使用其实很简单的,倒入bootstrap相关CSS,JS,jQuery,还有bootstrap-wysiwyg的JS,如下:

<link href="bootstrap-combined.no-icons.min.css" rel="stylesheet">
<link href="bootstrap-responsive.min.css" rel="stylesheet">
<link href="http://netdna.bootstrapcdn.com/font-awesome/3.0.2/css/font-awesome.css" rel="stylesheet">
<link rel="stylesheet" href="index.css" type="text/css"> </link>
<script src="jquery1.9.1.min.js" type="text/javascript"></script>
<script src="bootstrap.min.js"></script>
<script src="bootstrap-wysiwyg.js" type="text/javascript"></script>
<script src="external/jquery.hotkeys.js" type="text/javascript"></script>

定义相关菜单项目属性和方法:

function initToolbarBootstrapBindings() {
  var fonts = ['Serif', 'Sans', 'Arial', 'Arial Black', 'Courier', 
   'Courier New', 'Comic Sans MS', 'Helvetica', 'Impact', 'Lucida Grande', 'Lucida Sans', 'Tahoma', 'Times',
   'Times New Roman', 'Verdana'],
   fontTarget = $('[title=Font]').siblings('.dropdown-menu');
  $.each(fonts, function (idx, fontName) {
   fontTarget.append($('<li><a data-edit="fontName ' + fontName +'" style="font-family:\''+ fontName +'\'">'+fontName + '</a></li>'));
  });
  $('a[title]').tooltip({container:'body'});
  $('.dropdown-menu input').click(function() {return false;})
  .change(function () {$(this).parent('.dropdown-menu').siblings('.dropdown-toggle').dropdown('toggle');})
  .keydown('esc', function () {this.value='';$(this).change();});

  $('[data-role=magic-overlay]').each(function () { 
  var overlay = $(this), target = $(overlay.data('target')); 
  overlay.css('opacity', 0).css('position', 'absolute').offset(target.offset()).width(target.outerWidth()).height(target.outerHeight());
  });
  if ("onwebkitspeechchange" in document.createElement("input")) {
  var editorOffset = $('#editor').offset();
  $('#voiceBtn').css('position','absolute').offset({top: editorOffset.top, left: editorOffset.left+$('#editor').innerWidth()-35});
  } else {
  $('#voiceBtn').hide();
  }
 };
 function showErrorAlert (reason, detail) {
 var msg='';
 if (reason==='unsupported-file-type') { msg = "Unsupported format " +detail; }
 else {
 console.log("error uploading file", reason, detail);
 }
 $('<div class="alert"> <button type="button" class="close" data-dismiss="alert">×</button>'+ 
 '<strong>File upload error</strong> '+msg+' </div>').prependTo('#alerts');
 };
 initToolbarBootstrapBindings(); 
 $('#editor').wysiwyg({ fileUploadError: showErrorAlert} );

最后是HTML代码:

<div class="btn-toolbar" data-role="editor-toolbar" data-target="#editor">
  <div class="btn-group">
  <a class="btn dropdown-toggle" data-toggle="dropdown" title="Font"><i class="icon-font"></i><b class="caret"></b></a>
   <ul class="dropdown-menu">
   </ul>
  </div>
  <div class="btn-group">
  <a class="btn dropdown-toggle" data-toggle="dropdown" title="Font Size"><i class="icon-text-height"></i> <b class="caret"></b></a>
   <ul class="dropdown-menu">
   <li><a data-edit="fontSize 5"><font size="5">Huge</font></a></li>
   <li><a data-edit="fontSize 3"><font size="3">Normal</font></a></li>
   <li><a data-edit="fontSize 1"><font size="1">Small</font></a></li>
   </ul>
  </div>
  <div class="btn-group">
  <a class="btn" data-edit="bold" title="Bold (Ctrl/Cmd+B)"><i class="icon-bold"></i></a>
  <a class="btn" data-edit="italic" title="Italic (Ctrl/Cmd+I)"><i class="icon-italic"></i></a>
  <a class="btn" data-edit="strikethrough" title="Strikethrough"><i class="icon-strikethrough"></i></a>
  <a class="btn" data-edit="underline" title="Underline (Ctrl/Cmd+U)"><i class="icon-underline"></i></a>
  </div>
  <div class="btn-group">
  <a class="btn" data-edit="insertunorderedlist" title="Bullet list"><i class="icon-list-ul"></i></a>
  <a class="btn" data-edit="insertorderedlist" title="Number list"><i class="icon-list-ol"></i></a>
  <a class="btn" data-edit="outdent" title="Reduce indent (Shift+Tab)"><i class="icon-indent-left"></i></a>
  <a class="btn" data-edit="indent" title="Indent (Tab)"><i class="icon-indent-right"></i></a>
  </div>
  <div class="btn-group">
  <a class="btn" data-edit="justifyleft" title="Align Left (Ctrl/Cmd+L)"><i class="icon-align-left"></i></a>
  <a class="btn" data-edit="justifycenter" title="Center (Ctrl/Cmd+E)"><i class="icon-align-center"></i></a>
  <a class="btn" data-edit="justifyright" title="Align Right (Ctrl/Cmd+R)"><i class="icon-align-right"></i></a>
  <a class="btn" data-edit="justifyfull" title="Justify (Ctrl/Cmd+J)"><i class="icon-align-justify"></i></a>
  </div>
  <div class="btn-group">
 <a class="btn dropdown-toggle" data-toggle="dropdown" title="Hyperlink"><i class="icon-link"></i></a>
  <div class="dropdown-menu input-append">
  <input class="span2" placeholder="URL" type="text" data-edit="createLink"/>
  <button class="btn" type="button">Add</button>
  </div>
  <a class="btn" data-edit="unlink" title="Remove Hyperlink"><i class="icon-cut"></i></a>
  </div>
  
  <div class="btn-group">
  <a class="btn" title="Insert picture (or just drag & drop)" id="pictureBtn"><i class="icon-picture"></i></a>
  <input type="file" data-role="magic-overlay" data-target="#pictureBtn" data-edit="insertImage" />
  </div>
  <div class="btn-group">
  <a class="btn" data-edit="undo" title="Undo (Ctrl/Cmd+Z)"><i class="icon-undo"></i></a>
  <a class="btn" data-edit="redo" title="Redo (Ctrl/Cmd+Y)"><i class="icon-repeat"></i></a>
  </div>
  <input type="text" data-edit="inserttext" id="voiceBtn" x-webkit-speech="">
 </div>

 <div id="editor">
  输入内容…
 </div>

如果大家还想深入学习,可以点击这里进行学习,再为大家附一个精彩的专题:Bootstrap学习教程

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery+thickbox仿校内登录注册框
Jun 07 Javascript
jquery代码实现简单的随机图片瀑布流效果
Apr 20 Javascript
javascript判断数组内是否重复的方法
Apr 21 Javascript
jQuery超赞的评分插件(8款)
Aug 20 Javascript
Java Mybatis框架入门基础教程
Sep 21 Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 Javascript
BootStrap创建响应式导航条实例代码
May 31 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
Jun 21 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
Dec 14 Javascript
新手快速入门JavaScript装饰者模式与AOP
Jun 24 Javascript
vue组件 keep-alive 和 transition 使用详解
Oct 11 Javascript
Nest.js环境变量配置与序列化详解
Feb 21 Javascript
非常酷炫的Bootstrap图片轮播动画
May 27 #Javascript
Bootstrap安装环境配置教程分享
May 27 #Javascript
Bootstrap布局方式详解
May 27 #Javascript
使用Bootstrap框架制作查询页面的界面实例代码
May 27 #Javascript
JS组件Bootstrap Table布局详解
May 27 #Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
May 27 #Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
May 27 #Javascript
You might like
php桌面中心(四) 数据显示
2007/03/11 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
简单的代码实现jquery定时器
2013/11/17 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
JS去掉字符串中所有的逗号
2017/10/18 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
Django 路由控制的实现代码
2018/11/08 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
如何基于Python按行合并两个txt
2020/11/03 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
CSS3实现时间轴效果
2016/07/11 HTML / CSS
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
金融学专科生自我鉴定
2014/02/21 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
大学生见习报告总结
2014/11/04 职场文书
五好家庭申报材料
2014/12/20 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技