10

我在里面有一张桌子<div>

<div id="fixeddiv">
    <table id="fixedtable">
        <tr class="firstrow">
            <td class="td11"></td>
            <td class="td12"></td>
            <td class="td13"></td>
        </tr>

        <tr class="secondrow">
            <td class="td21" style="width:10%"></td>
            <td class="td22" style="width:20%"></td> 
            <td class="td23" style="width:70%"></td>
        </tr>
    </table>
</div>

CSS:

#fixeddiv
{
    overflow:auto;
    margin:0px;
    padding:0px;
    position: relative;
    text-align:left;
    width: 48%;
}

#fixedtable
{
    background-color: White;
    border-spacing:0px;
    cursor: pointer;
    width: 100%;
    height: 100%;
    font-family: Calibri !important;
    color: Black;
    font-size: 14px;
}

.firstrow
{
    position: absolute;
    margin: 0px;
    left: 0;
    top: 0;
    background: url(../Content/Images/header.jpg) repeat-x center top;
    color: White;
    font-weight: bold;
    text-align: center;

}
#fixedtable tr td
{
    padding: 5px !important;
    border: 1px solid #FFFFFF;
    text-align: center;
}

我正在计算td21with$('.td21').width()的宽度并将宽度分配给td11like $('td11').width($('.td21').width())

问题是应用的宽度不一样,它们会有所不同1px,我无法找到这种1px差异是如何发生的。.td21宽度1px大于.td11。_

任何人都可以帮我找到解决方案吗?

4

3 回答 3

16
<div id="div-1" style="width: 1000px;">
    <div id="div-2" style="width: 10%;"></div>
</div>

<script language="javascript">                
    var percents = parseInt(document.getElementById("div-2").style.width);
    var parentWidth = parseInt(document.getElementById("div-1").style.width);
    var pixels = parentWidth*(percents/100);
    alert(pixels); // will print "100"
</script>
于 2012-07-06T08:13:45.957 回答
2

尝试使用.outerWidth()而不是.width()

于 2012-07-06T08:10:30.713 回答
1

当您使用百分比 + 填充时会发生这种情况。像素是 int ,所以它会被四舍五入。

在您的示例中:10%、20% 和 70% 是容器的宽度,并且您需要添加填充和边框。

有了这个十进制数字,就会出现并且需要四舍五入。

例子:

您的页面宽度为 900 像素。如果没有填充、边距或边框,您将拥有 630 像素 (70%)、160 像素 (20%)、90 像素 (10%) 的宽度。

但是当您添加边框 + 填充时,百分比必须从 900 - (3 tds * 10px 填充(左右)) - (3 tds * 2px 边框(左右))= 864px 计算。

使用 864px 宽度,您将获得:604,8px (70%)、172,8px (20%)、86,4px (10%)。

这就是 1px 差异发生的地方。

于 2012-07-06T08:14:31.757 回答