草庐IT

php - 显示 : table-cell & table-row alternative without using tables (problems with dompdf)

coder 2024-05-03 原文

我正在使用 dompdf库生成 PDF 但不能使用大表作为 dompdf库不支持它。因此,我将表格更改为使用 span 标签,并使用 display: table-cell & display: table-row 设置元素样式。

问题是 dompdf仍然将这些 span 标签视为表格(因为样式)。

问题: 是否有替代的 css 样式我可以使用来获得相同的外观和感觉而不使用 display: table-cell & display: table-row 并且不使用表格?

这是我的代码:

HTML:

<span class="table">
    <span class="tr">
        <span class="th h2">Request Information</span>
    </span> 
    <span class="tr">
        <span class="td">Quote #</span>
        <span class="td">sdfsdfsdfsf</span>
    </span> 
    <span class="tr">
        <span class="td">Project Number</span>
        <span class="td">sdfsdfsdfsd</span>
    </span> 
    <span class="tr">
        <span class="td">Account Manager</span>
        <span class="td">khksjksjhdf</span>
    </span> 
    <span class="tr">
        <span class="td">Customer</span>
        <span class="td">ljsljflksjd</span>
    </span> 
    <span class="tr">
        <span class="td">Customer Location</span>
        <span class="td">
            123 Fake Street<br>
            City, State ZIPCode                 
        </span>
    </span> 
    <span class="tr">
        <span class="td">Customer Contact</span>
        <span class="td">lsjdlfkjslkjdfs</span>
    </span> 
    <span class="tr">
        <span class="td">Date Submitted</span>
        <span class="td">sdfsdfgdfg</span>
    </span> 
    <span class="tr">
        <span class="td">Date Approved</span>
        <span class="td">N/A</span>
    </span>
</span>

CSS:

span {
    width: 72% !important;
    padding: 5px 0px 5px 0px;
    /*padding-bottom: 9px;*/
    /*border: 1px solid Black;*/
}
span.table {
    /*border-collapse: collapse;*/
    /*display: table;*/
}
span .td {
    border: none !important;
    background: White !important;
    display: table-cell;
    padding-left: 10px;
    font-size: 16px;
    margin-bottom: 30px;
    border:none !important;
}
span .tr {
    display: table-row;
    border: 1px solid Black;
    padding: 2px 2px 2px 5px;
    background-color: #f5f5f5;
}
span .th {
    text-align: left;
    font-weight: bold;
}

jsFiddle:http://jsfiddle.net/Mn7GH/

最佳答案

您可以使用 span 标签的 displaywidthfloat 模拟一个表格(尽管使用 div 会更好).

table 的想法是有一个 block 可以容纳所有东西:

span.table {
    display:block;
    height:auto;
    overflow:auto;
    border:1px solid black;
}

它有显示 block (如果可能的话使用一个 div),你需要 height:autooverflow:auto 所以它会随着 float 元素一起增长。

那么该行将是类似的:

span.tr {
    display:block;
    height:auto;
    overflow:auto;
    border: 1px solid Black;
}

由于 display:block,它会自动占用 100% 的宽度,所以我们很好。出于与表格相同的原因,高度和溢出值是自动的(也许它只在 tr 中需要)。

最后是细胞。对于 td,我们将设置一个 display:inline-block 并使它们向左浮动:

span.td {
    border:none !important;
    float:left;
    display:inline-block;
    width:50%;
}

唯一需要考虑的是,您可能希望不同的列具有不同的宽度,在这种情况下,您将不得不定义具有宽度的特定类。 (注意,对于理想的可视化,table 和 tr 必须有 padding:0 和 margin:0,并且所有宽度的总和必须等于 100%)

您可以在此处查看使用您的 html 代码并更新您的 css 的示例:http://jsfiddle.net/Mn7GH/3/

关于php - 显示 : table-cell & table-row alternative without using tables (problems with dompdf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24019049/

有关php - 显示 : table-cell & table-row alternative without using tables (problems with dompdf)的更多相关文章

随机推荐