Я создал фиксированный <div>
, задав для него следующие стили:
#mydiv {
position: fixed;
left: -150px;
width: 150px;
top: 0;
bottom: 0;
border: 1px solid #f00;
}
Это создает <div>
который находится вне экрана, и, предположительно, такую же высоту, как и окно.
Затем я применяю следующие стили к <body>
:
body {
-webkit-transform: translate(150px, 0);
}
Насколько мне известно, это должно двигаться тело 150px
вправо, тем самым перемещая #mydiv
в поле зрения. Это работает, но теперь #mydiv
- это высота тела, а не высота окна.
Это ошибка Webkit? Или это то, что я делаю неправильно?
EDIT:
Это похоже на Firefox.
Решение этой проблемы, возможно, не сразу интуитивно, довольно просто.
html, body {
height: 100%;
}
Обычно position: fixed
элементы выравниваются относительно window
(родительский элемент html
). Однако, когда применяются преобразования css, position: fixed
элементы выравниваются относительно ближайшего родителя с примененным преобразованием css.
Возможно, альтернативный подход Webkit и другие браузеры могли бы по-прежнему выровнять position: fixed
элементы в window
. Но проблема с этим была бы position: fixed
div вообще не двигался бы, когда тело было преобразовано, и поэтому div все равно будет располагаться вне экрана.
transform
.