CSS 有個蠻常用得功能,就是設定寬度後,往左漂移(float)排列(現在可以使用 flex 等等)
若以前使用 width + float 後,想要將內容置中,就是一件很麻煩的事情,但是 width 有些算法就是無法整除,右邊就會有些空白出現,要怎麼辦呢?
CSS 寬度計算使用 calc()
CSS 現在有 calc() 可以自動計算寬度,無法整除的也會盡量作到填滿。
- 註:CSS 的 calc() 可以使用 +、-、、/ 而且 em、px、% ... 都可以做運算
可以看下述的範例,裡面主要差異只有 .box div 的那段 css,主要是:
- width: 16%;
- width: 16.6%;
- width:calc(100%/6);
範例程式:
<style> body {width:100%;} .box {margin:0 auto; width:100%; background:#ccc; height:500px;} .box div {background:radial-gradient(circle at center,yellow,red); text-align:center;} .box div {height:350px; float:left; width:calc(100%/6);} /* .box div {height:350px; float:left; width:16%;} */ /* .box div {height:350px; float:left; width:16.6%;} */ </style> <div class="box"> <h1>Test</h1> <div>111</div> <div>222</div> <div>333</div> <div>444</div> <div>555</div> <div>666</div> </div>
若使用 width: 16% 會看到最右邊還留有一塊灰色,16.6% 會盡量補到滿,而使用 calc() 運算就直接都補到滿,沒有灰色的空間。
- 註:同理若改成 3個,就會需要 33.3%,使用 calc() 會比較省事