兩種為wangEditor添加拖拽調整高度的方式:CSS3和jQuery UI


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>

使用這種方式,可以調整到任意高度(無右下角拖拽把手,但鼠標移到下邊框時,會呈上下雙箭頭狀):

注:第二種方式未考慮查看源代碼區域的高度,所以如果使用第二種方式,還應該隱藏查看源代碼按鈕,或者同時調整源代碼區域的高度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM