wangEditor是一款优秀的Web富文本编辑器,但如果能像KindEditor那样支持拖拽调整高度就更好了。有两种方式可以为wangEditor添加这一功能,这里使用的wangEditor版本为2.1.22。

第一种方式是最简单,也是比较完美的一种方式:为编辑器元素添加值为vertical的resize CSS样式:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>原生CSS方式</title>
<meta charset="utf-8" />
<link href="Content/wangEditor/css/wangEditor.css" rel="stylesheet" />
<script src="Scripts/jquery-3.1.1.js"></script>
<script src="Scripts/wangEditor.js"></script>
<style>
#editor {
resize: vertical;
}
</style>
</head>
<body>
<div id="editor"></div>
<script>
var editor = new wangEditor("editor");
editor.create();
</script>
</body>
</html>

这样,编辑器的右下角就变成了可以拖动的把手(值vertical使其仅可垂直拖动):

使用这种方式,在Chrome里,无法将编辑器的高度拖动到比原始高度更小,而在FireFox里,可以拖动到任意大小。

第二种方式是使用jQuery UI的resizable组件。使用这种方式的优点是可以让编辑器的整个下边框可以拖动,但由于编辑器和resizable组件难以完美结合,导致这种方法略微复杂,并且会导致编辑器的全屏功能无法正常使用。代码如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery UI方式</title>
<meta charset="utf-8" />
<link href="Content/themes/base/jquery-ui.css" rel="stylesheet" />
<link href="Content/wangEditor/css/wangEditor.css" rel="stylesheet" />
<script src="Scripts/jquery-3.1.1.js"></script>
<script src="Scripts/jquery-ui-1.12.1.js"></script>
<script src="Scripts/wangEditor.js"></script>
</head>
<body>
<div id="editor"></div>
<script>
var editor = new wangEditor("editor"); // 由于这种方式导致全屏功能异常,所以应该移除全屏按钮
editor.config.menus = $.grep(editor.config.menus, function (menu) {
return menu != "fullscreen";
}); editor.create(); // 类为wangEditor-container的元素是wangEditor为编辑器元素包裹的最外层元素,应使其成为resizable组件,而不是包含编辑器文本内容的元素(即ID为editor的div元素)
$(".wangEditor-container").resizable({
// 只让下边框可以拖动
handles: "s",
// 拖动时,不断调整内层编辑器文本区域的高度
resize: setTextAreaHeight
}); // 调整浏览器窗口大小时,也要同时调整编辑器文本区域的高度
$(window).bind("resize", setTextAreaHeight); // 调整编辑器内层文本区域高度的函数,计算方法是编辑器包装元素高度减工具栏高度,再减文本区域的垂直margin和padding之和
function setTextAreaHeight() {
$("#editor").height($(".wangEditor-container").height() - $(".wangEditor-menu-container").height() - 20);
}
</script>
</body>
</html>

使用这种方式,可以调整到任意高度(无右下角拖拽把手,但鼠标移到下边框时,会呈上下双箭头状):

注:第二种方式未考虑查看源代码区域的高度,所以如果使用第二种方式,还应该隐藏查看源代码按钮,或者同时调整源代码区域的高度。

两种为wangEditor添加拖拽调整高度的方式:CSS3和jQuery UI的更多相关文章

  1. 为Bootstrap模态对话框添加拖拽移动功能

    请自行下载使用到的Bootstrap库及jQuery库 <!DOCTYPE html> <html> <head lang="en"> < ...

  2. winform中文本框添加拖拽功能

    对一个文本框添加拖拽功能: private void txtFolder_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataP ...

  3. RCP:给GEF编辑器添加拖拽辅助线

    当图形边缘碰触时,会产生一条帮助拖拽的辅助线 这里需要三个类: 1.SnapToGeomotry 2.SnapToGuide(非必须) 3.SnapFeedbackPolicy

  4. 为UniDBEdit添加拖拽属性

    不知是作者Fashard的疏忽还是有意,UniDBEdit的拖拽属性居然没有发布出来(其他组件都已发布).加上其实也很简单. 打开source目录下的uniDBEdit.pas单元,在TUniDBEd ...

  5. 拖拽调整Div大小

    今天写了一天这个jquery插件: 可以实现对div进行拖拽来调整大小的功能. (function ($) { $.fn.dragDivResize = function () { var delta ...

  6. element-ui 弹出添加拖拽功能

    1.新建dialog.js文件2.在main.js 中引入dialog.js  import ‘./utils/dialog.js’3. 使用:<el-dialog v-dialogDrag&g ...

  7. 可拖拽和带预览图的jQuery文件上传插件ssi-uploader

    插件描述:ssi-uploader是一款带预览图并且可以拖拽文件的jQuery ajax文件上传插件.该文件上传插件支持AJAX,支持多文件上传,可控制上的文件格式和文件大小,提供各种回调函数,使用非 ...

  8. 为Bootstrap Modal(模态框)全局添加拖拽操作

    在js中绑定方法 $(document).on("show.bs.modal", ".modal", function(){ $(this).draggable ...

  9. MVC两种获取上传的文件数据变量的方式

    第一种方式,在控制器中利用HttpPostedFileBase参数对象获取. [HttpPost] public ActionResult SaveFile(HttpPostedFileBase up ...

随机推荐

  1. docker网络解析

    Docker概念和默认网络 什么是Docker网络呢?总的来说,网络中的容器们可以相互通信,网络外的又访问不了这些容器.具体来说,在一个网络中,它是一个容器的集合,在这个概念里面的一个容器,它会通过容 ...

  2. 伪 alter 弹窗 +弹窗统一

    你应该有遇到这种情况:alert() 在手机上面显示的时候 反正是不好看  有的时候就只看到一个白色的框  看不到提示信息  反正很反人类  这时候我觉得 马上会有产品跟你说 这个要改掉. 然后我就遇 ...

  3. C# WinForm 类似QQ靠近屏幕边缘隐藏显示

    当窗体离屏幕四周一定距离时,改变窗体位置,引导窗体靠边:靠边后,当鼠标离开窗体时,改变窗体位置,窗体隐藏,凸出一点在屏幕内:隐藏后,当鼠标移到窗体时,窗体显示. using System; using ...

  4. mysql版本,根据经纬度定位排序sql

    SELECT id,lng,lat,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((lat1*PI()/180-lat*PI()/180)/2),2)+COS(lat1*PI( ...

  5. 设计模式 -- 组合模式 (Composite Pattern)

    定义: 对象组合成部分整体结构,单个对象和组合对象具有一致性. 看了下大概结构就是集团总公司和子公司那种层级结构. 角色介绍: Component :抽象根节点:其实相当去总公司,抽象子类共有的方法: ...

  6. [HMLY]4.CocoaPods详解----制作

    作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/20067595 转载请注明出处   学会使用别人的pods依赖库后,你一 ...

  7. openstack私有云布署实践【10.2 计算nova - controller节点配置(办公网环境)】

    一.首先登录controller1创建nova数据库,并赋于远程和本地访问的权限.     mysql -u root -p   CREATE DATABASE nova; GRANT ALL PRI ...

  8. Hadoop集群出现no data node to stop的解决方案

    问题描述: 今天stop hadoop集群的时候出现no datanode to stop ,寻找解决方案,并不是网上资料所说的什么DFS Used .Non DFS Used等于0 .所有的节点都是 ...

  9. C# 语言规范_版本5.0 (第15章 委托)

    1. 委托 **(注:此章非常重要,特别是对于图形界面相关的区别于MFC和QT等的消息机制,委托是基石.) 委托是用来处理其他语言(如 C++.Pascal 和 Modula)需用函数指针来处理的情况 ...

  10. MySql 安装过程(摘自网络)

    下面的是MySQL安装的图解,用的可执行文件安装的,详细说明了一下! 打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩, 运行“setup.exe”,出现如下界面 ...