优化 util 组件重构后的若干功能细节

This commit is contained in:
贤心 2022-09-05 01:19:38 +08:00
parent 86816ea6f5
commit b3d08bd130

View File

@ -20,11 +20,18 @@ layui.define('jquery', function(exports){
target: 'body', // fixbar 的插入目标选择器 target: 'body', // fixbar 的插入目标选择器
bars: [], // bar 信息 bars: [], // bar 信息
default: true, // 是否显示默认 bar default: true, // 是否显示默认 bar
showHeight: 200 // 出现 top bar 的滚动条高度临界值 showHeight: 200, // 出现 top bar 的滚动条高度临界值
duration: 200 // top bar 等动画时长(毫秒)
}, options); }, options);
// 目标元素对象
var $target = $(options.target); var $target = $(options.target);
// 滚动条所在元素对象
var $scroll = options.scroll
? $(options.scroll)
: $(options.target === 'body' ? $doc : $target)
// 是否提供默认图标 // 是否提供默认图标
if(options.default){ if(options.default){
// 兼容旧版本的一些属性 // 兼容旧版本的一些属性
@ -64,9 +71,13 @@ layui.define('jquery', function(exports){
elemBar.on('click', function(){ elemBar.on('click', function(){
var type = $(this).attr('lay-type'); var type = $(this).attr('lay-type');
if(type === 'top'){ if(type === 'top'){
$('html,body').animate({ (
options.target === 'body'
? $('html,body')
: $scroll
).animate({
scrollTop : 0 scrollTop : 0
}, 200); }, options.duration);
} }
typeof options.click === 'function' && options.click.call(this, type); typeof options.click === 'function' && options.click.call(this, type);
}); });
@ -101,7 +112,7 @@ layui.define('jquery', function(exports){
if(elemTopBar){ if(elemTopBar){
var lock; var lock;
var setTopBar = (function setTopBar(){ var setTopBar = (function setTopBar(){
var top = $doc.scrollTop(); var top = $scroll.scrollTop();
if(top >= options.showHeight){ if(top >= options.showHeight){
lock || (elemTopBar.show(), lock = 1); lock || (elemTopBar.show(), lock = 1);
} else { } else {
@ -113,7 +124,7 @@ layui.define('jquery', function(exports){
// 根据 scrollbar 设置 fixbar 相关状态 // 根据 scrollbar 设置 fixbar 相关状态
var timer; var timer;
$doc.on('scroll', function(){ $scroll.on('scroll', function(){
if(!setTopBar) return; if(!setTopBar) return;
clearTimeout(timer); clearTimeout(timer);
timer = setTimeout(function(){ timer = setTimeout(function(){