Свойство CSS `zoom`
Базовая поддержка Недавно стало доступно
Эта функция работает на последних устройствах и в последних версиях браузеров. Она может не работать на старых устройствах или в старых версиях браузеров. Она поддерживается браузерами с мая 2024 года.
Свойство zoom CSS можно использовать для управления уровнем увеличения элемента. В качестве альтернативы этому свойству можно использовать transform: scale().
Свойство CSS zoom масштабирует целевой элемент, что может повлиять на макет страницы. При масштабировании элемент увеличивается относительно top и center при использовании стандартного writing-mode.
В отличие от этого, масштабирование элемента с помощью scale() не приводит к перерасчёту макета и перемещению других элементов на странице. Если при использовании scale() содержимое становится больше содержащего его элемента, вступает в действие overflow. Кроме того, элементы, масштабированные с помощью scale(), по умолчанию преобразуются относительно center; это можно изменить с помощью свойства CSS transform-origin.
Синтаксис
/* <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уменьшают масштаб.
Не рекомендуется использовать два нестандартных ключевых слова. См. данные о совместимости с браузерами:
-
normal - Отображает элемент в обычном размере; эквивалентно
zoom: 1. Вместо этого используйте глобальное ключевое словоunset. -
reset - Сбрасывает значение до
zoom: 1и предотвращает увеличение или уменьшение элемента при масштабировании документа пользователем без жеста щипка (например, с помощью сочетаний клавиш Ctrl - - или Ctrl + +).
Формальное определение
| Исходное значение | 1 |
|---|---|
| Применяется к | всем элементам |
| Наследуется | нет |
| Проценты | Преобразуются в <number>
|
| Вычисленное значение | как задано, но <percentage> преобразуется в эквивалентное <number>
|
| Тип анимации | по типу вычисленного значения |
Формальный синтаксис
zoom =
normal |
reset |
<number [0,∞]> ||
<percentage [0,∞]>
Примеры
Изменение масштаба абзацев
В этом примере элементы абзацев масштабируются. При наведении на абзац значение zoom становится равным unset.
HTML
<p class="small">Small</p> <p class="normal">Normal</p> <p class="big">Big</p>
CSS
body {
display: flex;
align-items: center;
justify-content: space-around;
height: 100vh;
}
.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 определяется поле select с различными значениями zoom, которые будут использоваться.
<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);
}
.controls,
.zoom-notice {
display: flex;
justify-content: space-around;
}
.zoom-notice {
color: red;
}
В последнем блоке CSS проверяется, поддерживает ли браузер zoom, и, если поддерживает, для сообщения не поддерживается задаётся значение display: none;.
@supports (zoom: 1) {
.zoom-notice {
display: none;
}
}
JavaScript
Этот код JavaScript отслеживает изменение поля выбора и задаёт новое значение --zoom-level для содержимого section, например 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 Viewport, уровень 1 # zoom-property |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
zoom |
1 |
12 |
126До Firefox 131 масштабирование SVG-элементов работает некорректно. См. ошибку 1905023 и ошибку 878346. |
15 |
3.1 |
18 |
126До Firefox для Android 131 масштабирование SVG-элементов работает некорректно. См. ошибку 1905023 и ошибку 878346. |
14 |
3 |
1.0 |
4.4 |
3 |
is_animatable |
150 |
150 |
126 |
134 |
Нет |
150 |
126 |
101 |
Нет |
Нет |
150 |
Нет |
reset |
1–59 |
Нет |
Нет |
15–46 |
3.1–18.4 |
18–59 |
Нет |
14–43 |
3–18.4 |
1.0–7.0 |
4.4–59 |
3–18.4 |
См. также
- Свойство
zoomв CSS Almanac от CSS-Tricks transformscale-
Ключевое слово
unset -
Устаревшее свойство
zoomна CSS-Tricks (2013)
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/zoom