索引
ht.widget.Panel
面板是一种容器组件,面板内部可以放置HTML
文本、DOM
元素或HT
组件,面板自身实现了子面板、拖拽位置、resize
、吸附、成组,展开/合并、
最小化/恢复、流式布局等功能。
注意:此插件依赖CSS动画
插件
在正式使用API
之前,您的页面里应该引入相关的js
:
<script src="ht.js"></script> <!--先引入ht.js-->
<script src="ht-cssanimation.js"></script>
<script src="ht-panel.js"></script>
面板的使用方法很简单,只需要创建出一个面板对象,在构造函数中传入一个js
对象指定面板的配置参数,如标题、宽度、高度、内容等;也可以不在构造函数中指定,
面板创建完成后,调用setConfig
可以实现同样的功能。可配置的参数如下:
id
面板唯一标识,如果为空,面板内部会自动生成一个唯一标识。如果要获取面板的状态,如是否展开等,需要指定此参数title
面板标题titleBackground
标题栏的背景颜色separatorWidth
内部面板之间分割线的宽度separatorColor
内部面板之间分割线的颜色titleColor
标题文本的颜色borderWidth
边框宽度titleHeight
标题栏的高度titleIcon
面板icon
,可以为url
或base64
字符titleIconSize
标题栏中图片的尺寸,包括展开/合并图标、最小化图标及titleIcon
restoreIconSize
恢复图标的尺寸buttons
扩展标题栏中的按钮,此参数为一个数组,数组中元素可以是以下两个字符串:
minimize
最小化按钮toggle
展开/合并按钮independentSwitch
控制independent
参数
也可以是js
对象,表示自定义按钮,自定义按钮的参数如下:
name
名称,唯一标识,请使用英文字母icon
按钮图片,可以为url
或base64
字符toolTip
鼠标悬停时的提示文本action: function(paneConfig, panelView, e)
点击时的回调函数
minimizable
面板是否可最小化,为false
时表示面板不可最小化,默认为空
minimize
已无效
,请使用minimized
minimized
面板是否最小化,为true
时表示将面板最小化,默认为空expand
已无效
,请使用expanded
expanded
面板是否展开,为false
时表示合并,否则展开,默认为空narrowWhenCollapse
如果为true
合并面板时收缩宽度exclusive
此参数只在外层面板有效,表示是否只允许展开一个子面板,默认为false
independent
此参数只在内层面板有效,表示外层面板只允许展开一个子面板时,自身是否独立,换句话说,如果此参数为true
,此子面板不受外层面板exclusive
参数影响toggleToolTip
展开/合并按钮的toolTip
restoreToolTip
恢复按钮的toolTip
content
面板的内容,可以为HTML
文本、DOM
元素或HT
组件width
指定面板的宽度,对于HTML
文本或DOM
元素可以不指定此参数,由HTML
内容撑开面板;由于HT
组件自身没有尺寸,所以如果content
为HT
组件,必须指定此参数contentHeight
指定面板内容的高度,对于HTML
文本或DOM
元素可以不指定此参数,由HTML
内容撑开面板;由于HT
组件自身没有尺寸,所以如果content
为HT
组件,必须指定此参数resizeMode
用户鼠标移动到面板右下角时可以resize
面板,此参数控制resize
模式:w
表示只允许调整宽度,h
表示只允许调整高度,wh
表示宽高都允许调整,none
表示不允许resize
items
此参数为一个数组,数组中每个js
对象都表示一个子面板,子面板的配置参数如上。flowLayout
如果为true
表示使用流式布局,在此布局下无法使用最小化,拖拽位置、吸附等功能。面板上提供了一些API
用于设置或获取面板状态:
setConfig(config)
配置面板参数getPanelConfig(id)
根据id
获得面板配置,在配置中可获得width
、contentHeight
、expanded
等状态,只可查询,不可修改getPanelView(id)
根据id
获得面板的DIV
setInnerPanel(config)
传入一个指定配置参数的js
对象,如果对象的id
与面板中某个子面板id
重复则更新那个子面板,否则新增一个子面板removeInnerPanel(id)
根据id
删除子面板togglePanel(id)
根据id
切换面板状态(展开或合并)dragContainment
由setDragContainment(value)
和getDragContainment()
操作,表示是否限制在父容器中拖拽,默认为parent
,改为null
可取消限制minimize()
最小化面板restore()
将面板从最小化状态恢复getView()
获得面板DIV
setPosition(x, y)
设置面板在父容器中的位置setPositionRelativeTo(relativeTo)
设置面板相对父容器哪个角落定位,参数枚举如下:
leftTop
默认值,面板的position
相对于左上角定位leftBottom
面板的position
相对于左下角定位rightTop
面板的position
相对于右上角定位rightBottom
面板的position
相对于右下角定位
如果希望一个面板始终固定在父容器的右下角,调用下面的API
即可:
panel.setPositionRelativeTo('rightBottom');
panel.setPosition(0, 0);
addEventListener: function (listener, scope, ahead)
增加事件监听,支持的事件类型:
beginRestore
开始恢复时触发endRestore
恢复结束后触发beginMinimize
开始最小化时触发endMinimize
最小化结束后触发beginToggle
开始合并或展开时触发endToggle
合并或展开结束后触发beginResize
开始resize
时触发betweenResize
在resize
过程中触发endResize
resize
结束后触发beginMove
开始移动时触发betweenMove
移动过程中触发endMove
移动结束后触发removeEventListener: function (listener, scope)
删除事件监听此插件还提供了ht.widget.PanelGroup
类用于实现面板的角落吸附和自动布局功能,如果需要这些功能,首先要创建一个PanelGroup
:
panelGroup= new ht.widget.PanelGroup({//在构造函数中指定吸附的面板之间的间隔
hGap: 10,
vGap: 10
});
然后通过PanelGroup
的API
对面板进行分组:
add(panel)
将参数中的面板加到此组中,注意,如果两个面板的父容器不一致,不要加到同一个分组中setLeftTopPanels(panel1, panel2, ..., orientation)
将参数中的多个面板加到此分组中,吸附到左上角并按顺序排列,最后一个参数为字符串,表示排列的方向,枚举值如下:h
水平排列v
垂直排列setLeftBottomPanels(panel1, panel2, ..., orientation)
将参数中的多个面板加到此分组中,吸附到左下角并按顺序排列setRightTopPanels(panel1, panel2, ..., orientation)
将参数中的多个面板加到此分组中,吸附到右上角并按顺序排列setRightBottomPanels(panel1, panel2, ..., orientation)
将参数中的多个面板加到此分组中,吸附到右下角并按顺序排列remove(panel)
将参数中的面板从分组中移除接下来看一个例子:
在需要大量输入的页面中,将表单分组并合并隐藏某些表单可以大幅节省页面空间,使用面板的流式布局很容易实现这种效果:
除了概述章节
里提到配置参数,面板还支持使用全局的htconfig
对象配置整体风格,可配置的参数如下:
Color.titleIconBackground
指定HT
所有组件的标题ICON
的颜色,如面板,对话框,AccordionView
等Color.titleBackground
指定
HT所有组件的标题栏的背景色,如面板,对话框,
AccordionView`等
Default.panelTitleLabelColor
指定面板标题栏的文字颜色,默认为Default.labelSelectColor
Default.panelTitleLabelFont
指定面板标题栏的文字字体,默认为Default.labelFont
Default.panelContentLabelFont
指定面板内容区域的文字字体,默认为Default.labelFont
Default.panelTitleBackground
指定面板标题栏的背景色,默认为Color.titleBackground
Default.panelSeparatorWidth
指定内部面板之间分割线的宽度,默认为1
Default.panelSeparatorColor
指定内部面板之间分割线的颜色,默认为undefined
Default.widgetTitleHeight
指定面板标题栏的高度当全局风格配置与面板API
配置冲突时,以后者为准。
<script>
htconfig = {
Color: {
toolTipBackground: '#DAECF4',
titleBackground: '#076186',
titleIconBackground: 'white',
headerBackground: '#DAECF4',
highlight: '#4799BC',
}
};
</script>