rotateX() в CSS — поворот навколо осі X у transform


Опис

автор: Bond

Загальний опис

автор: NagarD

Порада

Функцію rotateX() можна комбінувати з іншими CSS-функціями, такими як translate(), scale() або rotateY(), для створення складних ефектів обертання та трансформації.

автор: Bond
Порада

Враховуйте, що обертання за допомогою функції rotateX() впливає на видимість та розташування елементів, зокрема на їхню ширину та висоту.

автор: Bond
Порада

Використовуйте режим прозорості (opacity) або перекриття (z-index) для управління видимістю та позиціонуванням обернених елементів.

автор: Bond
Порада

Функція rotateX() дозволяє створювати ефектні переходи, рухаючи елементи вперед та назад у тривимірному просторі. Завдяки цій функції ваші сторінки стануть більш динамічними та захоплюючими для користувачів.

автор: Bond

Синтаксис

transform: rotateX(<value>);

Функція rotateX може отримувати 3 значень:

<deg>

Значення кута може бути вказане в градусах (deg)

автор: Bond

<rad>

Значення кута можуть бути вказані в радіанах (rad)

автор: Bond

<turn>

Значення кута можуть бути вказані в повних обертах (turn)

автор: Bond

Значення без задання: 0deg

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
12 10 4 15 12 10
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
3 18 10 3.2

Приклади

+ запропонувати свій приклад у пісочниці

При наведенні курсору на блок, він повертається на 180 градусів навколо горизонтальної осі X.

HTML

<div id="description">
  <p>При наведенні курсору на блок, він повертається на 180 градусів навколо горизонтальної осі X за допомогою функції rotateX().</p>
</div>

<div class="container">
  <div class="block"></div>
</div>

CSS

#description {
  font-style: italic;
  text-align: center;
  line-height: 1.5;
  margin-bottom: 50px;
  padding: 12px 16px;
  background-color: #f7f7f7;
  border: 1px solid #ccc;
}

.container {
  height: 200px;
  background-color: #F2F2F2;
  position: relative;
}

.block {
  width: 100px;
  height: 100px;
  background-color: #FFC107;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: rotateX(0deg);
  transition: transform 0.3s ease;
}

.container:hover .block {
  transform: rotateX(180deg);
}
автор: Bond

Блок повертається на 45 градусів навколо горизонтальної осі X.

HTML

<div id="description">
  <p>Блок повертається на 45 градусів навколо горизонтальної осі X за допомогою функції rotateX(). Обидва блоки використовують однакові розміри та колір для порівняння.</p>
</div>

<div class="container">
  <div class="block"></div>
  <div class="comparison-block"></div>
</div>

CSS

#description {
  font-style: italic;
  text-align: center;
  line-height: 1.5;
  margin-bottom: 50px;
  padding: 12px 16px;
  background-color: #f7f7f7;
  border: 1px solid #ccc;
}

.container {
  height: 200px;
  background-color: #F2F2F2;
  display: flex;
  justify-content: space-around;
  align-items: center;
}

.block {
  width: 80px;
  height: 80px;
  background-color: #FFC107;
  transform: rotateX(45deg);
}

.comparison-block {
  width: 80px;
  height: 80px;
  background-color: #FF0000;
}
автор: Bond

Верхній ряд — та сама коробка під різними кутами БЕЗ перспективи: видно, що це чистий стиск по висоті. Другий ряд — ті самі кути в сцені з perspective: 500px: з'являється об'єм, а на 90 градусах елемент зникає, бо ми дивимось на ребро. Далі — двобічна картка з backface-visibility: hidden (наведіть, щоб перегорнути) і невалідний rotateX(45) без одиниці, який гасить увесь список перетворень.

HTML

<p class="head">Без перспективи rotateX — це просто стиск по висоті:</p>
<div class="row">
    <div class="pad"><div class="card f0">0°</div></div>
    <div class="pad"><div class="card f1">45°</div></div>
    <div class="pad"><div class="card f2">60°</div></div>
    <div class="pad"><div class="card f3">80°</div></div>
</div>

<p class="head">У сцені з perspective: 500px з'являється об'єм:</p>
<div class="row">
    <div class="scene"><div class="card f0">0°</div></div>
    <div class="scene"><div class="card f1">45°</div></div>
    <div class="scene"><div class="card f2">60°</div></div>
    <div class="scene"><div class="card f4">90° — ребро</div></div>
    <div class="scene"><div class="card f5">135°</div></div>
    <div class="scene"><div class="card f6">180° — зворотний бік</div></div>
</div>

<p class="head">Двобічна картка: наведіть, щоб перегорнути</p>
<div class="row">
    <div class="scene flip">
        <div class="deck">
            <div class="face front">лицьовий бік</div>
            <div class="face back">зворотний бік</div>
        </div>
    </div>
</div>

<p class="head">Без одиниці — увесь список перетворень відкинуто,
    зникає й translateX(40px) поруч:</p>
<div class="row">
    <div class="pad"><div class="card bad">rotateX(45) translateX(40px)</div></div>
    <div class="pad"><div class="card ok">rotateX(45deg) translateX(40px)</div></div>
</div>

CSS

.head {
    margin: 20px 0 8px;
    max-width: 560px;
    color: #5a6472;
    font-size: .9em;
}

.row {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.pad,
.scene {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 175px;
    height: 130px;
    background: #f6f9ff;
    border: 1px solid #b9c6d8;
}

.scene {
    perspective: 500px;
}

.card {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 130px;
    height: 66px;
    padding: 2px;
    background: linear-gradient(#2f6fd0, #1b4f9c);
    color: #fff;
    font: 700 12px/1.2 ui-monospace, monospace;
    text-align: center;
}

.f0 { transform: rotateX(0); }
.f1 { transform: rotateX(45deg); }
.f2 { transform: rotateX(60deg); }
.f3 { transform: rotateX(80deg); }
.f4 { transform: rotateX(90deg); }
.f5 { transform: rotateX(135deg); }
.f6 { transform: rotateX(180deg); }

.deck {
    position: relative;
    width: 130px;
    height: 66px;
    transform-style: preserve-3d;
    transition: transform .6s ease;
}

.flip:hover .deck {
    transform: rotateX(180deg);
}

.face {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    backface-visibility: hidden;
    color: #fff;
    font: 700 12px/1 ui-monospace, monospace;
}

.front {
    background: #2f6fd0;
}

.back {
    background: #3a9a4f;
    transform: rotateX(180deg);
}

.bad {
    transform: rotateX(45) translateX(40px);
    outline: 2px dashed #d64545;
}

.ok {
    transform: rotateX(45deg) translateX(40px);
    outline: 2px dashed #3a9a4f;
}
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід