javascript - 使所有表的列与第一个表的列具有相同的宽度

标签 javascript jquery css html jquery-mobile

我正在开发一个 HTML5/jQuery Mobile/PHP 网站。该网站有多个单独的表,因为我决定将数据分解到多个页面( <div data-role="page"> )。这些页面填充了电影信息(导演、年份、标题),但这无关紧要。

当用户单击其中一个标题时,表格将通过 jQuery 脚本按升序或降序排序。最初,当页面加载时,用户只能看到第一页(第一个表),如下图所示。用户可以通过单击按钮并向左或向右滑动来浏览页面,从而看到都有自己尺寸的其他表格。

enter image description here

如果用户单击导演标题,表格将按导演排序。然而,随着数据的变化,列的宽度也会发生变化。

我可以将列的宽度定义为某个固定宽度,但在这种情况下这是不可能的,因为用户可以定义可见的列:例如,他可以创建一个新的列编写器,或者甚至去掉director列,在这种情况下固定宽度不能很好地工作。

我的问题是,我可以使其他表的列宽与第一个表(或其他表,为了概括起见)中的宽度相同吗?如果可以的话,有没有不依赖于javascript的解决方案?

网站的基本结构:

<body>
    <div data-role="page" id="page-1">
        <table>...</table>
    </div>
    <div data-role="page" id="page-2">
        <table>...</table>
    </div>
    <div data-role="page" id="page-3">
        <table>...</table>
    </div>
    ...
</body>

最佳答案

由于我不了解您的任何 JavaScript,因此您必须相应地替换变量/数组。

迭代每个页面,获取该页面上的列的宽度。保存该列的最大宽度(跨页)

对于每个页面:

var colWidths = [];
for(var i=0, j=NumberOfPages; i<j; i++){
    for(var k=0, l=NumberOfColumns; k<l; k++){
        // check if the column is wider than the widest column for the previous pages
        if(colWidths[k]===undefined || colWidths[k] < $(...).width() ){
           // if so, change the widest width for that specific column to the current width
           colWidths[k] = $(...).width();
        }
    }
}

注意:将 $(...) 替换为表列元素。您只需从每个页面获取 1 个表格列,因为表格内所有列的宽度相同。

然后,因为您希望所有内容最终都等于 100%,所以您需要找到每列占总数的百分比。

var totalpx = 0;
// get combined widths of all the widest columns
for(var i=0, j=colWidths.length; i<j; i++){
    totalpx += colWidths[i];
}

// get percentage for each width from total
var percentages = [];
for(var i=0, j=colWidths.length; i<j; i++){
    percentages.push(colWidths[i]/totalpx);
}

然后,您从百分比数组中为每列指定适当的百分比。

.width = percentages[i]

关于javascript - 使所有表的列与第一个表的列具有相同的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31101315/

相关文章:

jquery - 使用视口(viewport)单位的响应式设计中的 CSS 文本溢出

javascript - 在 JavaScript 中实现递归的最佳方法?

javascript - 如何使用 jquery 添加或删除基于浏览器高度调整大小的类?

java - 网页本地化方法

javascript - 如何使用 jQuery 将光标从指针更改为手指?

javascript - 如何在同一页面上单击两个不同的图像时显示一个相同的模态?

CSS 语法 - 如何解释这个?

Stylus 的 PHP 预处理器脚本/库?

javascript - 使用 javascript 将 json 对象转换为排序的 html select 的最佳方法

javascript - 将 javascript 变量文件添加到 Sencha Touch 2 android 应用程序