javascript - 获取由 css column-width 创建的列数

标签 javascript jquery css

<分区>

Possible Duplicate:
How to get css3 multi-column count in Javascript

我有一个很长的动态文本,它将使用 CSS 分成几列

div
{
    -moz-column-width: 500px;
    -moz-column-gap: 20px;
}

是否可以获取创建了多少列?我在客户端使用 jQuery。

最佳答案

您的问题和 fiddle 会忽略 vendor 前缀; larssin 的回答是一个很好的方向,但并不完整。

我为您创建了一个小的辅助函数,它遍历当前为这些值实现的前缀,使用 .css() 获取实际值并返回正确的数字。跨浏览器工作,包括始终返回 1 的不支持的浏览器。

我选择忽略 iframe 的情况,这只会让事情变得更复杂,但据我所知,这与您的问题没有直接关系。

更新:现在考虑了边框和填充。

Code on jsFiddle在这里:

function getColumnsNumber(el){
    var $el = $(el),
        width = $el.innerWidth(),
        paddingLeft, paddingRight, columnWidth, columnGap, columnsNumber;

    paddingLeft = parseInt( $el.css('padding-left'), 10 );
    paddingRight = parseInt( $el.css('padding-right'), 10 );

    $.each(['-webkit-','-moz-',''], function(i, prefix){
        var _width = parseInt( $el.css(prefix+'column-width'), 10 );
        var _gap =   parseInt( $el.css(prefix+'column-gap'), 10 );
        if (!isNaN(_width)) columnWidth = _width;
        if (!isNaN(_gap))   columnGap = _gap;
    });

    columnsNumber = Math.floor( (width - paddingLeft - paddingRight) / (columnWidth + columnGap) );
    if (isNaN(columnsNumber) || columnsNumber < 1) columnsNumber = 1;
    return columnsNumber;
}

关于javascript - 获取由 css column-width 创建的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10276359/

相关文章:

html - flex 容器的高度在 Safari 中无法正常工作

html - 如何将 div/占位符放入 bootstrap 网格

JavaScript 函数毫无明显原因地变慢了 100 倍

javascript - 谷歌地理图表中不同的、有范围的颜色

javascript - IFrame Loaded 事件中的所有内容

jquery - jQuery Datepicker + Grails + dd/mm/yyyy格式

javascript - Node.js 中的 `exit` 事件的行为与手册中的不同

javascript - 如何使用 javascript 或 jquery 将变量值传递给 href 属性?

jquery - 类型错误 : $ is not a function when using Firebug console directly

javascript - 将 DIV 转换为单击并拖动视口(viewport)