From 48e58c9cb192b4ac2905d23e6b9775cce71ebc19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?= <3277200+sentsim@users.noreply.github.com> Date: Mon, 5 Jun 2023 00:12:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20tab=20=E5=9C=A8=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=92=8C=E5=88=87=E6=8D=A2=E9=80=89=E9=A1=B9=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E6=8A=98=E5=8F=A0=E5=92=8C=E5=B1=95=E5=BC=80=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/element.js | 45 +++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/modules/element.js b/src/modules/element.js index 17f0d67c..ef265212 100644 --- a/src/modules/element.js +++ b/src/modules/element.js @@ -49,8 +49,10 @@ layui.define('jquery', function(exports){ barElem[0] ? barElem.before(li) : titElem.append(li); contElem.append('
'+ (options.content || '') +'
'); - call.hideTabMore(true); - call.tabAuto(); + // call.hideTabMore(true); + // 是否添加即切换 + options.change && this.tabChange(filter, options.id); + call.tabAuto(options.change); return this; }; @@ -180,19 +182,22 @@ layui.define('jquery', function(exports){ } // Tab 自适应 - ,tabAuto: function(){ - var SCROLL = 'layui-tab-scroll', MORE = 'layui-tab-more', BAR = 'layui-tab-bar' - ,CLOSE = 'layui-tab-close', that = this; + ,tabAuto: function(spread){ + var SCROLL = 'layui-tab-scroll'; + var MORE = 'layui-tab-more'; + var BAR = 'layui-tab-bar'; + var CLOSE = 'layui-tab-close'; + var that = this; $('.layui-tab').each(function(){ - var othis = $(this) - ,title = othis.children('.layui-tab-title') - ,item = othis.children('.layui-tab-content').children('.layui-tab-item') - ,STOPE = 'lay-stope="tabmore"' - ,span = $(''); + var othis = $(this); + var title = othis.children('.layui-tab-title'); + var item = othis.children('.layui-tab-content').children('.layui-tab-item'); + var STOPE = 'lay-stope="tabmore"'; + var span = $(''); if(that === window && device.ie != 8){ - call.hideTabMore(true) + // call.hideTabMore(true) } // 开启关闭图标 @@ -210,16 +215,24 @@ layui.define('jquery', function(exports){ if(typeof othis.attr('lay-unauto') === 'string') return; // 响应式 - if(title.prop('scrollWidth') > title.outerWidth()+1){ + if( + title.prop('scrollWidth') > title.outerWidth() + 1 || + title.height() > title.find('li').eq(0).height() + ){ + // 若执行是来自于切换,则自动展开 + spread && title.addClass(MORE); + if(title.find('.'+BAR)[0]) return; title.append(span); othis.attr('overflow', ''); + + // 展开图标事件 span.on('click', function(e){ - title[this.title ? 'removeClass' : 'addClass'](MORE); - this.title = this.title ? '' : '收缩'; + var isSpread = title.hasClass(MORE); + title[isSpread ? 'removeClass' : 'addClass'](MORE); }); } else { - title.find('.'+BAR).remove(); + title.find('.'+ BAR).remove(); othis.removeAttr('overflow'); } }); @@ -530,7 +543,7 @@ layui.define('jquery', function(exports){ }); dom.on('click', '.layui-tab-title li', call.tabClick); // Tab 切换 - dom.on('click', call.hideTabMore); // 隐藏展开的 Tab + // dom.on('click', call.hideTabMore); // 隐藏展开的 Tab $(window).on('resize', call.tabAuto); // 自适应 exports(MOD_NAME, element);