zoom
zoom CSS 屬性可用於控制元素的放大級別。transform: scale() 可以用作此屬性的替代方案。
zoom CSS 屬性會縮放目標元素,這可能會影響頁面佈局。當縮放時,如果使用預設的 writing-mode,縮放的元素會從 top 和 center 開始縮放。
相比之下,使用 scale() 縮放的元素不會導致佈局重新計算或移動頁面上的其他元素。如果使用 scale() 導致內容大於包含元素,則 overflow 會生效。此外,使用 scale() 調整的元素預設從 center 變換;這可以透過 transform-origin CSS 屬性進行更改。
語法
/* <percentage> values */
zoom: 50%;
zoom: 200%;
/* <number> values */
zoom: 1.1;
zoom: 0.7;
/* Non-standard keyword values */
zoom: normal;
zoom: reset;
/* Global values */
zoom: inherit;
zoom: initial;
zoom: revert;
zoom: revert-layer;
zoom: unset;
值
<percentage>-
縮放因子。
100%等同於normal。大於100%的值放大。小於100%的值縮小。 <number>-
縮放因子。等同於相應的百分比(
1.0=100%=normal)。大於1.0的值放大。小於1.0的值縮小。
不推薦使用兩個非標準關鍵字值。請檢視瀏覽器相容性資料
正式定義
正式語法
zoom =
<number [0,∞]> |
<percentage [0,∞]>
示例
調整段落大小
在此示例中,段落元素被縮放,當滑鼠懸停在段落上時,zoom 值被 unset。
HTML
<p class="small">Small</p>
<p class="normal">Normal</p>
<p class="big">Big</p>
CSS
.small {
zoom: 75%;
}
.normal {
zoom: normal;
}
.big {
zoom: 2.5;
}
p:hover {
zoom: unset;
}
結果
調整元素大小
在此示例中,div 元素使用 normal、<percentage> 和 <number> 值進行縮放。
HTML
<div id="a" class="circle"></div>
<div id="b" class="circle"></div>
<div id="c" class="circle"></div>
CSS
div.circle {
width: 25px;
height: 25px;
border-radius: 100%;
vertical-align: middle;
display: inline-block;
}
div#a {
background-color: gold;
zoom: normal; /* circle is 25px diameter */
}
div#b {
background-color: green;
zoom: 200%; /* circle is 50px diameter */
}
div#c {
background-color: blue;
zoom: 2.9; /* circle is 72.5px diameter */
}
結果
建立縮放控制元件
在此示例中,使用 select 欄位來更改元素的縮放級別。
HTML
在 HTML 的第一個塊中,定義了一個帶有不同 zoom 值以供使用的 select 欄位。
<section class="controls">
<label for="zoom"
>Zoom level
<select name="zoom" id="zoom">
<option value="0.5">Extra Small</option>
<option value="0.75">Small</option>
<option value="normal" selected>Normal</option>
<option value="1.5">Large</option>
<option value="2">Extra Large</option>
</select>
</label>
</section>
在第二個塊中,添加了一條不支援訊息,如果瀏覽器支援 zoom,該訊息將被隱藏。
<p class="zoom-notice">CSS zoom is not supported</p>
最後一個塊只是定義了將被縮放的內容。
<section class="content">
<h1>This is the heading</h1>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Placeat inventore
ea eveniet, fugiat in consequatur molestiae nostrum repellendus nam
provident repellat officiis facilis alias facere obcaecati quos sunt
voluptas! Iste.
</p>
<p>
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Placeat inventore
ea eveniet, fugiat in consequatur molestiae nostrum repellendus nam
provident repellat officiis facilis alias facere obcaecati quos sunt
voluptas! Iste.
</p>
</section>
CSS
在 CSS 的第一個塊中,我們使用 自定義屬性設定 --zoom-level 的起始值,然後將其用作內容塊上 zoom 的值。
html {
--zoom-level: normal;
}
.content {
max-width: 60ch;
margin: auto;
zoom: var(--zoom-level);
}
在最後的 CSS 塊中,我們檢查瀏覽器是否支援 zoom,如果支援,則將不支援訊息設定為 display: none;。
@supports (zoom: 1) {
.zoom-notice {
display: none;
}
}
JavaScript
此 JavaScript 監視選擇欄位中的更改,併為內容 section 上的 --zoom-level 設定新值,例如 style="--zoom-level: 1.5;"。
const zoomControl = document.querySelector("#zoom");
const content = document.querySelector(".content");
const updateZoom = () => {
content.style = `--zoom-level: ${zoomControl.value}`;
};
zoomControl.addEventListener("change", updateZoom);
結果
規範
| 規範 |
|---|
| CSS 視口模組級別 1 # zoom 屬性 |
瀏覽器相容性
載入中…
另見
- CSS-Tricks 的 CSS Almanac 中的
zoom條目 transformscaleunset關鍵字- 舊版
zoom屬性,來自 CSS-Tricks (2013)