123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- $(function () {
- var splitBar = {
- // 设置当前屏幕为 840px 时将分割条隐藏
- maxWidth: 840,
- // 父元素选择器
- parentSelector: '.manual-body',
- /**
- * 初始化分割条
- */
- init: function () {
- var self = this;
- $(self.parentSelector)
- .append(
- $('\
- <div id="manual-vsplitbar" unselectable="on"\
- style="\
- z-index:301;\
- position: absolute;\
- user-select: none;\
- cursor: col-resize;\
- left: 275px;\
- height: 100%;\
- display: block;\
- width: 3px;">\
- <a href="javascript:void(0)" accesskey="" tabindex="0" title="vsplitbar"></a>\
- </div>\
- ')
- .hover(
- function (event) {
- event.target.style.background = '#8f949ad8';
- },
- function (event) {
- event.target.style.background = '';
- }
- )
- );
- self.loadingHtml();
- // 设置媒体查询
- mediaMatcher.set();
- },
- /**
- * 加载页面时设置分割条是否显示
- */
- loadingHtml: function () {
- var self = this;
- var htmlWidth = document.body.clientWidth;
- if (htmlWidth <= self.maxWidth) $('#manual-vsplitbar').css('display', 'none');
- },
- /**
- * 在打开关闭菜单事初始化左右窗口和分割条
- */
- reset: function () {
- if (isFullScreen) {
- // 关闭菜单时,初始化左右窗口
- $('#manual-vsplitbar').css('display', 'none');
- splitBar.inMaxWidthReset();
- $('.manual-left').css('width', '0px');
- } else {
- // 打开菜单时,初始化左右窗口
- $('#manual-vsplitbar').css('display', 'block');
- splitBar.outMaxWidthReset();
- }
- },
- /**
- * 屏幕小于等于 840px,重置左右窗口
- */
- inMaxWidthReset: function () {
- $('#manual-vsplitbar').css('display', 'none');
- $('.m-manual.manual-reader .manual-right').css('left', '0');
- $('.manual-left').css('width', '280px');
- },
- /**
- * 屏幕大于 840px,重置左右窗口
- */
- outMaxWidthReset: function () {
- $('.manual-right').css('left', '279px');
- $('.manual-left').css('width', '279px');
- $('#manual-vsplitbar').css('left', '275px').css('display', 'block');
- }
- }
- /**
- * 设置媒体查询
- * 分割条隐藏
- */
- var mediaMatcher = {
- mql: window.matchMedia('(max-width:' + splitBar.maxWidth + 'px)'),
- /**
- * 添加媒体查询监听事件
- */
- set: function () {
- var self = this;
- self.mql.addListener(self.mqCallback);
- },
- /**
- * 删除媒体查询监听事件
- */
- remove: function () {
- var self = this;
- self.mql.removeListener(self.mqCallback);
- },
- /**
- * 媒体查询回调函数
- */
- mqCallback: function (event) {
- if (event.target.matches) { // 宽度小于等于 840 像素
- $(".m-manual").removeClass('manual-fullscreen-active');
- splitBar.inMaxWidthReset();
- } else { // 宽度大于 840 像素
- splitBar.outMaxWidthReset();
- }
- }
- }
- // 初始化分割条
- splitBar.init();
-
- /**
- * 控制菜单宽度
- * 最小为 140px
- */
- $('#manual-vsplitbar').on('mousedown', function (e) {
- var bodyEle = $('.manual-body')[0];
- var leftPane = $('.manual-left')[0];
- var splitBar = $('#manual-vsplitbar')[0];
- var rightPane = $('.manual-right')[0];
- var disX = (e || event).clientX;
- splitBar.left = splitBar.offsetLeft;
- var docMouseMove = document.onmousemove;
- var docMouseUp = document.onmouseup;
- document.onmousemove = function (e) {
- var curPos = splitBar.left + ((e || event).clientX - disX);
- var maxPos = bodyEle.clientWidth - splitBar.offsetWidth;
- curPos > maxPos && (curPos = maxPos);
- curPos < 140 && (curPos = 140);
- leftPane.style.width = curPos + "px";
- splitBar.style.left = curPos - 3 + "px";
- rightPane.style.left = curPos + 3 + "px";
- return false;
- }
- document.onmouseup = function () {
- document.onmousemove = docMouseMove;
- document.onmouseup = docMouseUp;
- splitBar.releaseCapture && splitBar.releaseCapture();
- };
- splitBar.setCapture && splitBar.setCapture();
- return false;
- });
- /**
- * 关闭侧边栏时,同步分割条;
- */
- $(".manual-fullscreen-switch").on("click", splitBar.reset);
- });
|