javascript - 将 HTML 表格转换为 Bootstrap 列 - 响应式设计

标签 javascript jquery html css twitter-bootstrap

我一直在研究我们现有的旧产品,该产品目前使用 HTML 表格来显示其内容。在这个响应性的世界里,我想让它响应。在线阅读后,我相信重新设计整个网站可能需要大量工作,但是,我正在尝试找到一种解决方案,可以将任何表格转换为基于包含 Bootstrap 列的 div 的列。这里给出了登录页面的一个很好的例子:JsFiddle

我无权访问字段的源,但是,我可以使用 jQuery 添加元素(追加/前置)。我还可以添加 CSS 样式。

有人可以帮我解决这个问题吗?

<table></table>
.
.
.
<div class="container">
<div class="row">
<div class="col-md-3">
</div>
</div>
</div>

干杯。

最佳答案

可能很难将任何给定的表完美地转换为 Bootstrap 列。考虑到 bootstrap 列最多只允许 12 列,而一个表可能有更多。

此函数会将表格转换为 BS 行/列,但它假设表格行数可以被 12 整除(如果不能,您必须根据自己的需要进行调整)。

/**
 * Convert a table to bootstrap columns
 * @param table DOMElement
 */
function makeBSCols(table){
    var html = ["<div class='container'>"];
    $(table).find('tr').each(function(){
        var $td = $(this).find('td').length ? $(this).find('td') : $(this).find('th');
        // get the column width
        if($td.length > 12) return alert("too many columns");
        var cls = Math.floor(12/$td.length);
        if(cls!==(12/$td.length)) return alert("invalid column count");
        html.push("<div class='row'>");
        $td.each(function(){
            html.push('<div class="col-sm-'+cls+'">'+$(this).html()+'</div>');
        });
        html.push('</div>');
    });
    html.push('</div>');
    $(table).replaceWith(html.join(''));
}

示例:makeBSCols(document.getElementById('myTable')) ( Fiddle )

对于更灵活的解决方案,(假设您实际上正在显示表格数据)您可能会考虑只使用 BS 表格而不是 BS cols/rows。这只会将 BS 样式添加到您的表格并将其放在 .table-responsive div 中,这有助于提高响应能力。

/**
 * Convert a regular table to bootstrap table
 * @param table DOMElement
 */
function makeBSTable(otable){
    var table = $(otable).clone(); console.log(table);
    table.addClass("table-hover table-bordered table-striped table");
    var div = $('<div class="table-responsive" />');
    $(otable).replaceWith(div);
    div.append(table);
}

示例:makeBSTable(document.getElementById('myTable')) ( Fiddle )

关于javascript - 将 HTML 表格转换为 Bootstrap 列 - 响应式设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40993532/

相关文章:

html - 具有动态宽度的固定背景渐变

javascript - javascript中前置加号的含义

javascript - CSS 和 Javascript 耦合太紧(CSS 不仅仅是 presentation 而是 UI 和 JS 所使用的),如何改进?

javascript - 在数据表单元格中创建动态按钮单击事件

javascript - 如何在 Internet Explorer 11 上检测 Windows 8.1 中的触摸屏?

c# - 将 JSON 发送到 web 方法?

javascript - 如何创建页面滚动链接

jquery - 如何让函数等到动画完成?

javascript - 如何使用 jQuery (.css) 添加多值(逗号分隔)框阴影?

javascript - 如何使用 jquery 将数据保存在 cookie 中