如何在Javascript中获得css3多列计数
How to get css3 multi-column count in Javascript
我们正在使用新的css3多栏布局属性将我们的文本放到报纸栏中。每个列有一个固定的宽度,列数默认为"auto",这意味着浏览器决定有多少列。
如何在Javascript中获得实际的列数作为整数?
如果我们查询css "column-count"(或-moz-column-count),我们得到的结果要么是"auto",要么是一个空白
秘诀是在内容的末尾放一个小标记。您可以通过编程方式添加一个空span:
<span id="mymarker"></span>
然后使用jquery $("#mymarker")获取span并获得"left"属性。将该数字除以列的宽度(根据列间距进行调整),结果将告诉您最后一个元素位于哪个列。Math.ceil()的值,你有列数
将列容器的scrollable width
除以visible width
:
container.scrollWidth / container.offsetWidth
试试这个:
$.fn.howMuchCols = function(){
return Math.round($(this).find(' :last').position().left - $(this).position().left / $(this).outerWidth()) +1;
};
$('.my-stuff-with-columns').howMuchCols();
代码解释:
这段代码将为每个jQuery元素创建一个函数'howMuchCols '。
你不能用常规的方法得到一个有列的元素的宽度,因为它的宽度被用来定义每个内部列的大小。要知道元素内部有多少列,你需要得到它的实际宽度,然后除以列的大小,然后你就会得到列的数量。
获得实际宽度的方法是将列容器的最后一个子元素的X偏移量与其宽度相加,然后将其与列容器的X偏移量之和相减。
在代码中,我在进行减法和除法之后添加了一列的大小,而不是在除法之前使用像素单位(它没有区别)。
数学。必须使用Round,因为容器的大小不一定能完全被其内列的宽度整除。
您是否可以为每个列设置一个类,例如class="another-column",然后使用Jquery选择类并迭代它们。
var count = 0;
$('.another-column').each(function(){
count++;
});
警告,这是未经测试的。如果你能提供一些html/css3代码,我可以在jsfiddle
- css3转换和javascript出错
- 使用带有onclick事件的Javascript启动CSS3动画
- 仅限滑动图像css3或需要javascript
- JavaScript应用CSS3渐变
- 由 JavaScript 控制的 CSS3 单向转换在按顺序添加/删除类时不起作用
- 将 JQuery Animation 转换为 Javascript/CSS3
- 在 CSS3 动画完成后重新加载 JavaScript
- 哪种动画最适合表演?css3或javascript
- CSS3转换和javascript交互
- Chrome在尝试从Javascript修改CSS3动画时崩溃
- 如何使用CSS3/JavaScript缩放DIV元素及其子元素以适应父元素
- 悬停时使用 CSS3/Javascript 的导航栏过渡高度
- 如何在CSS3 / Javascript中创建“突出显示”效果
- 将2D画布(图像+文本)应用于3D表面,并进行360度旋转/动画-可以使用HTML5/CSS3/Javascript或F
- CSS3 + Javascript - Will -ms-transition:不透明15易进易出;仅在IE 10中工作
- 在HTML5/CSS3/Javascript应用程序中使用SVG图像的首选方式是什么?
- 在html5/css3/javascript中实现全功能文字处理器的可能性
- CSS3 Javascript Library for Gradients?
- Css3/Javascript转换不工作
- HTML5 CSS3/Javascript模糊蒙版