关于 ECSide 列宽度整合的一些不足和一些建议
关于 ECSide 列宽度调整的一些不足和一些建议
很多朋友反映 在使用ecside的列宽调节功能的时候,会出现定位不准,调整条位置错乱等bug
这篇文章主要是来更大家将一下为什么会有这个bug 以及该如何避免
同时希望有朋友帮忙想出一个好的完美的解决方案 先谢谢大家了
同时谢谢所有关注ecside的朋友们
先说一下我的建议:
1 ectable的宽度最好不要使用 百分比
2 当ectable使用百分宽度时,最好各个列也使用百分比,不要百分比和像素混合着用
(当然总和不要超过ectable的width宽度)
3 不管是使用什么样的宽度(百分比或像素),建议都要使用一个“自动宽度”的column,
就是说不要给所有的ec:column都指定width,给其中一个点“自由”,这样很多已知的关于列宽调整的问题都可以解决。
关于为什么百分比又bug
当你设置100% 的时候, table的宽度随窗口大小而变
而这时候有个问题就是 你给各个列设置的宽度不会跟着去变
例如 只有两列
各50% 页面第一次打开的时候, 大小是200像素 那么 每列100(其实不是 因为还有空白间距等, 但这里就取这么个大概数,便于理解)
当窗口变大到300的时候 列会自动重新计算 变成150;
但是此时 ecside的js脚本并不会重新计算,所以他纪录的还是原先的大小
也许你会问 为什么不重新计算,问题就是 没有一个快速简单合理的算法
例如原先窗口大小 200, 每列100
我调整成了 50 150
这时候后 窗口变大了 我该怎么重新计算这 50 和 100 才合理呢?
其实大家注意看一下 那些商业的 还有其他很多的开元的 可调节列宽的组件 都是固定宽度的
都不支持 100% ,我想大家的理由都是差不多的.
当然 如果你按我的第2 3条建议去做 很多时候不会有这个bug
哈哈 谢谢提醒
我又写了一个js函数
请用我写的这个替换 js自带的parseInt吧
很多朋友反映 在使用ecside的列宽调节功能的时候,会出现定位不准,调整条位置错乱等bug
这篇文章主要是来更大家将一下为什么会有这个bug 以及该如何避免
同时希望有朋友帮忙想出一个好的完美的解决方案 先谢谢大家了
同时谢谢所有关注ecside的朋友们
先说一下我的建议:
1 ectable的宽度最好不要使用 百分比
2 当ectable使用百分宽度时,最好各个列也使用百分比,不要百分比和像素混合着用
(当然总和不要超过ectable的width宽度)
3 不管是使用什么样的宽度(百分比或像素),建议都要使用一个“自动宽度”的column,
就是说不要给所有的ec:column都指定width,给其中一个点“自由”,这样很多已知的关于列宽调整的问题都可以解决。
关于为什么百分比又bug
当你设置100% 的时候, table的宽度随窗口大小而变
而这时候有个问题就是 你给各个列设置的宽度不会跟着去变
例如 只有两列
各50% 页面第一次打开的时候, 大小是200像素 那么 每列100(其实不是 因为还有空白间距等, 但这里就取这么个大概数,便于理解)
当窗口变大到300的时候 列会自动重新计算 变成150;
但是此时 ecside的js脚本并不会重新计算,所以他纪录的还是原先的大小
也许你会问 为什么不重新计算,问题就是 没有一个快速简单合理的算法
例如原先窗口大小 200, 每列100
我调整成了 50 150
这时候后 窗口变大了 我该怎么重新计算这 50 和 100 才合理呢?
其实大家注意看一下 那些商业的 还有其他很多的开元的 可调节列宽的组件 都是固定宽度的
都不支持 100% ,我想大家的理由都是差不多的.
当然 如果你按我的第2 3条建议去做 很多时候不会有这个bug
1 楼
bjwulin
2007-01-29
按百分比的js代码有点bug:
ecside.js的197行:
我修改为:
ecside.js的197行:
var w=parentN.clientWidth-parseInt(parentN.style.paddingLeft)-parseInt(parentN.style.paddingLeft);
我修改为:
var w=parentN.clientWidth if (parentN.style.paddingLeft) { w=w- parseInt(parentN.style.paddingLeft); } if (parentN.style.paddingRight) { w=w- parseInt(parentN.style.paddingRight); }
2 楼
retow
2007-01-29
原来如此!try it!
3 楼
fins
2007-01-29
bjwulin 写道
按百分比的js代码有点bug:
ecside.js的197行:
我修改为:
ecside.js的197行:
var w=parentN.clientWidth-parseInt(parentN.style.paddingLeft)-parseInt(parentN.style.paddingLeft);
我修改为:
var w=parentN.clientWidth if (parentN.style.paddingLeft) { w=w- parseInt(parentN.style.paddingLeft); } if (parentN.style.paddingRight) { w=w- parseInt(parentN.style.paddingRight); }
哈哈 谢谢提醒
我又写了一个js函数
请用我写的这个替换 js自带的parseInt吧
ECSideUtil.parseIntOrZero=function(num){ var t=parseInt(num); return isNaN(t)?0:t; };
4 楼
firedragon
2007-01-31
ectable的width宽度用px后如果是用可伸缩的左右框架就难了