aspect-ratio:等比例縮放區塊的屬性來了!
開發的時候常常遇到需要固定區塊比例的情境,而且通常長寬都不是絕對的數值。之前都是利用 padding
的特性去做等比例區塊。但現在有了更方便的 aspect-ratio
,加上 vw
/vh
,整理了 3 個可以使用的方法:
1. vw or vh
vw
、vh
分別指瀏覽器的寬度以及高度,這個方法在佈局比較簡單的行動版裝置上比較可行。
以下是一個長寬都是50%螢幕寬度的正方形:
1 | .square-box { |
2. padding + position
padding 有個特性——給予的值是百分比時,百分比的數值是基於父層元素的寬度、而不是元素本身。
假設現在需要一個 16:9 的區塊,可以這樣做:
透過width: 100%
:取得 .parent
寬度的 100%;padding-bottom: 56.25%
:取得 .parent
寬度的 56.25%;
製作出 16:9 等比例縮放的外層 .outer
後,再絕對定位內層 .content
,並將寬高皆設置成 100%,就能得到一個與外層相同大小,但可以任意佈局內部元素的區塊了!
See the Pen aspect-radio by jyun1 (@jyun1desu) on CodePen.
懶得計算的話,也可以用 calc()
:
1 | .child { |
3. 簡單暴力的 aspect-ratio
aspect-ratio
是滿新的 CSS 屬性,支援度可以看這裡。只要使用 aspect-ratio: ratio;
, ratio 的表現方式是width/height
(有夠簡單!)。
也能設置最大寬度、高度,依然會維持等比例,感覺這點是方法2做不到的。
See the Pen aspect-radio by jyun1 (@jyun1desu) on CodePen.
參考資料
aspect-ratio:等比例縮放區塊的屬性來了!