親要素が動的のときに、widthの”残り全部”という指定がしずらい。
ul (100%), li (width:100px), li (width:残り全部;)
ul,li(float:left)では全てのliが100%になるように指定しないとイコールの式にならない。
ulのwidth(指定値) >= li(width指定) + li(width未指定)
tableタグを使うと出来る。
tableのwidth(指定値) = td(width指定) + td(width未指定)
横並びの要素を、一方はwidth指定、他方のwidthを残り全部に指定したいとき
<style>
.width-100 {width:100%;}
.width-100px {width:100px;}
.width-500px {width:500px;}
table {background-color:blue;}
table td {background-color:#fff;}
</style>
<table class="width-500px">
<tr>
<td class="width-100px">100px</td>
<td class="width-100px">100px</td>
<td>残り全部</td>
</tr>
</table>
3つのtdのうち、
2つのtdをwidth:100px;にすると、
最後のtdのwidthは親要素の残り300pxくらいになる。
ul,liで使うにはdisplay:table, table-cell を使う。
<style>
.width-100 {width:100%;}
.width-100px {width:100px;}
.width-500px {width:500px;}
ul {display:table;}
li {display:table-cell; border:1px solid #f00;}
</style>
<ul class="width-500px">
<li class="width-100px">100px</li>
<li class="width-100px">100px</li>
<li>残り全部</li>
</ul>
※ li要素にfloatがあたってると崩れる。