2016-11-22 9 views
0

幅をtdに動的に追加しようとしていますが、ChromeとSafariではうまく動作しますが、FFではうまく動作しません。CSS - calcが動作しませんFirefox

Fiddle

HTML

<table border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td>1</td> 
     <td>Title</td> 
     <td>Interpret</td> 
     <td>Album</td> 
     <td>Year</td> 
     <td>YouTube</td> 
    </tr> 
</table> 

CSS

table{ 
    table-layout:fixed; 
    width: 100%; 
    border-collapse: collapse; 
} 
td{ 
    border:1px solid red; 
} 
td:first-child{ 
    width: calc(100%/6 * 0.5); 
} 
td:last-child{ 
    width: calc(100%/6 * 2); 
} 

Iハードコードピクセル値の代わりに、例えばため100%場合は、calc(690px/6 * 2)、それが動作します。

+3

あなたはフレキシボックスとのより良い運を持っています。 –

答えて

0

はCSSの行を削除します。

table { 
    // table-layout: fixed; 
    width: 100%; 
    border-collapse: collapse; 
} 

table-layout: fixedあなたがテーブルに独自の幅を適用することができます。私はFirefoxがなぜこの規則に従わないのか分かりません。これが動作するためには using calc() with tables

+0

@Turnip Oh?私は参照スレッドの上の投票された答えからそれを読んでいます。私はそれを調整します。ありがとう! – Roberrrt

+0

合意!しかし、固定レイアウトはすべての 'td'に等しい幅を提供し、内容のサイズが変わると変化しません。 – moustacheman

-1

、私はそれを理解するように、固定されたセル幅をシミュレートしようとすると、autofixedからtable-layoutを変更することであるだけでなく、のためのデフォルトの幅を設定しながら:参考

すべてtdさんです。

これを動的に行うには、表の幅を列数(この場合はパーセント値)で割ります。100/6 = 16.66666...

その後、我々はまた、既存の改質剤(それぞれ0.52を)維持しながら16.6666%100%を置き換えることによって、:first-child:last-childためcalc()内にその値を使用します。

CSS

table{ 
    table-layout:auto; 
    width: 100%; 
    border-collapse: collapse; 
} 
td{ 

    border:1px solid red; 
    width: 16.6666%; 
} 
td:first-child{ 
    width: calc(16.6666% * 0.5); 
} 
td:last-child{ 
    width: calc(16.6666% * 2); 
} 

Example Fiddle

+0

手動で分割する必要はありません。 'table-layout'を' auto'に変更しても動作します。 – moustacheman

+0

@aravindtrueがOPの要求に従ってFirefoxで動作するためには、手動で行う必要がありました。そうしないと、最初と最後の間のすべての列が幅が変わります。これを明示的に設定すると、最初と最後を明示的に(パーセンテージ*修飾子で)許可しながら、これらの列を流動的で均一にすることで、この問題を明示的に修正しました。 – seantunwin

関連する問題