transform
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since ÑенÑÑбÑÑ 2015 г..
CSS-ÑвойÑÑво transform позволÑÐµÑ Ð²Ð°Ð¼ повоÑаÑиваÑÑ, маÑÑÑабиÑоваÑÑ, наклонÑÑÑ Ð¸Ð»Ð¸ ÑдвигаÑÑ ÑлеменÑ. Ðно модиÑиÑиÑÑÐµÑ ÐºÐ¾Ð¾ÑдинаÑное пÑоÑÑÑанÑÑво Ð´Ð»Ñ CSS визÑалÑной ÑоÑмаÑиÑÑемой модели.
ÐнÑеÑакÑивнÑй пÑимеÑ
transform: matrix(1, 2, 3, 4, 5, 6);
transform: translate(120px, 50%);
transform: scale(2, 0.5);
transform: rotate(0.5turn);
transform: skew(30deg, 20deg);
transform: scale(0.5) translate(-100%, -100%);
<section id="default-example">
<img
class="transition-all"
id="example-element"
src="/proxy/developer.mozilla.org/shared-assets/images/examples/firefox-logo.svg"
width="200" />
</section>
ÐÑли ÑвойÑÑво Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение, оÑлиÑное Ð¾Ñ none, бÑÐ´ÐµÑ Ñоздан конÑекÑÑ Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ. Ð ÑÑом ÑлÑÑае, ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ Ð´ÐµÐ¹ÑÑвоваÑÑ ÐºÐ°Ðº ÑодеÑжаÑий блок Ð´Ð»Ñ Ð»ÑбÑÑ
ÑлеменÑов position: fixed; или position: absolute; коÑоÑÑе он ÑодеÑжиÑ.
ÐÑедÑпÑеждение:
ТолÑко ÑÑанÑÑоÑмиÑÑемÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ transform. Т.е. вÑе ÑлеменÑÑ, ÑÐ°Ð±Ð»Ð¾Ð½Ñ ÐºÐ¾ÑоÑÑÑ
ÑегÑлиÑÑÑÑÑÑ Ð±Ð»Ð¾Ñной моделÑÑ CSS, кÑоме : неизменÑемÑе инлайновÑе блоки, блоки ÑаблиÑа-колонка, и блоки ÑаблиÑа-колонка-гÑÑппа.
СинÑакÑиÑ
/* ÐлÑÑевÑе Ñлова */
transform: none;
/* ÐнаÑÐµÐ½Ð¸Ñ ÑÑнкÑий */
transform: matrix(1, 2, 3, 4, 5, 6);
transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
transform: perspective(17px);
transform: rotate(0.5turn);
transform: rotate3d(1, 2, 3, 10deg);
transform: rotateX(10deg);
transform: rotateY(10deg);
transform: rotateZ(10deg);
transform: translate(12px, 50%);
transform: translate3d(12px, 50%, 3em);
transform: translateX(2em);
transform: translateY(3in);
transform: translateZ(2px);
transform: scale(2, 0.5);
transform: scale3d(2.5, 1.2, 0.3);
transform: scaleX(2);
transform: scaleY(0.5);
transform: scaleZ(0.3);
transform: skew(30deg, 20deg);
transform: skewX(30deg);
transform: skewY(1.07rad);
/* ÐÑлÑÑиÑÑнкÑионалÑнÑе знаÑÐµÐ½Ð¸Ñ */
transform: translateX(10px) rotate(10deg) translateY(5px);
transform: perspective(500px) translate(10px, 0, 20px) rotateY(3deg);
/* ÐлобалÑнÑе знаÑÐµÐ½Ð¸Ñ */
transform: inherit;
transform: initial;
transform: unset;
СвойÑÑво transform Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñказано как знаÑение клÑÑевого Ñлова none или как одно или более знаÑений <transform-function>.
ÐнаÑениÑ
<transform-function>-
Ðдна или более пÑименÑемÑÑ ÑÑнкÑий CSS-ÑÑанÑÑоÑмаÑии. ФÑнкÑии ÑÑанÑÑоÑмаÑии ÑмножаÑÑÑÑ Ð² поÑÑдке Ñлева напÑаво, ÑÑо ознаÑаеÑ, ÑÑо ÑоÑÑавное ÑÑанÑÑоÑмиÑование ÑÑÑекÑивнее пÑименÑÑÑ Ð² поÑÑдке ÑпÑава налево.
none-
УказÑваеÑ, ÑÑо ÑÑанÑÑоÑмаÑÐ¸Ñ Ð½Ðµ должна пÑименÑÑÑÑÑ.
ФоÑмалÑнÑй ÑинÑакÑиÑ
transform =
none |
<transform-list>
<transform-list> =
<transform-function>+
<transform-function> =
<scale3d()> |
<scale()> |
<scaleX()> |
<scaleY()> |
<scaleZ()> |
<translate3d()> |
<translate()> |
<translateX()> |
<translateY()> |
<translateZ()> |
<rotate3d()> |
<rotate()> |
<rotateX()> |
<rotateY()> |
<rotateZ()> |
<skew()> |
<skewX()> |
<skewY()> |
<matrix3d()> |
<matrix()> |
<perspective()>
<scale3d()> =
scale3d( [ <number> | <percentage> ]#{3} )
<scale()> =
scale( <number> , <number>? )
<scaleX()> =
scaleX( <number> )
<scaleY()> =
scaleY( <number> )
<scaleZ()> =
scaleZ( [ <number> | <percentage> ] )
<translate3d()> =
translate3d( <length-percentage> , <length-percentage> , <length> )
<translate()> =
translate( <length-percentage> , <length-percentage>? )
<translateX()> =
translateX( <length-percentage> )
<translateY()> =
translateY( <length-percentage> )
<translateZ()> =
translateZ( <length> )
<rotate3d()> =
rotate3d( <number> , <number> , <number> , [ <angle> | <zero> ] )
<rotate()> =
rotate( [ <angle> | <zero> ] )
<rotateX()> =
rotateX( [ <angle> | <zero> ] )
<rotateY()> =
rotateY( [ <angle> | <zero> ] )
<rotateZ()> =
rotateZ( [ <angle> | <zero> ] )
<skew()> =
skew( [ <angle> | <zero> ] , [ <angle> | <zero> ]? )
<skewX()> =
skewX( [ <angle> | <zero> ] )
<skewY()> =
skewY( [ <angle> | <zero> ] )
<matrix3d()> =
matrix3d( <number>#{16} )
<matrix()> =
matrix( <number>#{6} )
<perspective()> =
perspective( [ <length [0,â]> | none ] )
<length-percentage> =
<length> |
<percentage>
ÐÑли perspective() ÑвлÑеÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из мÑлÑÑиÑÑнкÑионалÑнÑÑ
знаÑений, оно должно бÑÑÑ Ñказано пеÑвÑм.
ÐÑимеÑÑ
>HTML
<div>Transformed element</div>
CSS
div {
border: solid red;
transform: translate(30px, 20px) rotate(20deg);
width: 140px;
height: 60px;
}
РезÑлÑÑаÑ
ÐÐ»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÑмоÑÑеÑÑ Ð´ÑÑгие пÑимеÑÑ, обÑаÑиÑеÑÑ Ðº ÐÑполÑзование CSS-ÑÑанÑÑоÑмаÑии и <transform-function>.
Accessibility concerns
Scaling/zooming анимаÑии ÑвлÑÑÑÑÑ Ð¿Ñоблемой Ð´Ð»Ñ accessibility, поÑколÑÐºÑ Ð¾Ð½Ð¸ ÑÑановÑÑÑÑ ÑаÑÑÑм ÑÑиггеÑом Ð´Ð»Ñ Ð¾Ð¿ÑеделÑннÑÑ Ñипов мигÑени. ÐÑли вам нÑжно добавиÑÑ Ñакие анимаÑии на ваÑем веб-ÑайÑе, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑедоÑÑавиÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑпÑавлениÑ, позволÑÑÑий полÑзоваÑелÑм оÑклÑÑаÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñии, пÑедпоÑÑиÑелÑно Ð´Ð»Ñ Ð²Ñего ÑайÑа.
ÐÑоме Ñого, ÑаÑÑмоÑÑиÑе возможноÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ @media-опÑии prefers-reduced-motion â иÑполÑзÑйÑе ÐµÑ Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¼ÐµÐ´Ð¸Ð°Ð²ÑÑажениÑ, коÑоÑое оÑклÑÑÐ¸Ñ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ, еÑли полÑзоваÑÐµÐ»Ñ ÑменÑÑил анимаÑÐ¸Ñ Ð² ÑиÑÑемнÑÑ
наÑÑÑойкаÑ
.
УзнаÑÑ Ð±Ð¾Ð»ÑÑе:
СпеÑиÑикаÑии
| Specification |
|---|
| CSS Transforms Module Level 2> # transform-functions> |
| CSS Transforms Module Level 1> # transform-property> |
| Scalable Vector Graphics (SVG) 2> # TransformProperty> |
| ÐаÑалÑное знаÑение | none |
|---|---|
| ÐÑименÑеÑÑÑ Ðº | ÑÑанÑÑоÑмиÑÑемÑе ÑлеменÑÑ |
| ÐаÑледÑеÑÑÑ | Ð½ÐµÑ |
| ÐÑоÑенÑÑ | ÑÑÑлаеÑÑÑ Ð½Ð° ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ð³ÑаниÑиÑелÑной Ñамки |
| ÐбÑабоÑка знаÑÐµÐ½Ð¸Ñ | как Ñказано, но Ñ Ð¾ÑноÑиÑелÑной длиной, конвеÑÑиÑÑемой в абÑолÑÑнÑе Ð´Ð»Ð¸Ð½Ñ |
| Animation type | ÑÑанÑÑоÑмаÑÐ¸Ñ |
| СоздаÑÑ ÐºÐ¾Ð½ÑекÑÑ Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ | да |