aralejs / switchable

Switchable Widget
aralejs.org/switchable
34 stars 24 forks source link

effect能否增加不是使用display控制的但又没有动画的效果 #22

Closed fayching closed 11 years ago

fayching commented 11 years ago

具体的需求是在tab中切换图表,切换才去加载,用display控制图表画出来大小有问题,也不想用fade,因为在ie下切换比较慢,会有重叠的情况,现在是自己写的:

              if (fromPanel[0]) {
                 toPanel.css({
                    opacity: 1 ,
                    position: 'absolute',
                    zIndex:  9 
                });
                fromPanel.css({
                    opacity: 0,
                    position: 'absolute',
                    zIndex:  1
                });
lizzie commented 11 years ago

switchable 通过切换 display:block /none ,来显示不同的panel ,至于panel 里面是什么,不考虑的。像你所说的图表情况display: none 会对绘制有影响,我觉得可以换种方式实现,switchable 有 switch 事件在切换之后触发,是否你可以在这时再初始化图表。应该可以避免display: none 是图表定位错误的问题了。

fayching commented 11 years ago

可能我的实际场景更复杂一点,我这两个要切换的图表是要用ajax实时更新的,就是说我隔几秒要重新画下图,在这时间里切换了tab还是会有display:none的问题;还有flash在tab中,如果使用这种方式切换每次都要重新请求,实在没必要。

lizzie commented 11 years ago

@fayching 想起来了, 你这个需求可以通过自定义 effect 来实现, 你可以自定义 effect 为函数, 看 https://github.com/aralejs/switchable/blob/master/src/plugins/effects.js#L90 , 函数传参为 panelInfo, 在这里进行设置

                if (fromPanel[0]) {
                 toPanel.css({
                    opacity: 1 ,
                    position: 'absolute',
                    zIndex:  9 
                });
                fromPanel.css({
                    opacity: 0,
                    position: 'absolute',
                    zIndex:  1
                });

你试试

fayching commented 11 years ago

ok