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の幅を計算し、その幅をlike$('.td21').width()に割り当てています。td11$('td11').width($('.td21').width())

問題は、適用される幅が同じではなく、さまざまであり、この違いが1pxどのように発生するかを見つけることができなかったことです。幅がより大きいです1px.td211px.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% がコンテナーの幅であり、パディングと境界線を追加する必要があります。

この場合、10 進数が発生するため、四捨五入する必要があります。

例:

ページの幅は 900px です。パディング、マージン、またはボーダーがないと、幅は 630px (70%)、160px (20%)、90px (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 に答える