#css #transform #skew
#css #преобразование #искажение
Вопрос:
Возможно ли абсолютное позиционирование искаженного элемента, чтобы его левый нижний угол оставался близко (0 пикселей) к границе контейнера?
#one{
position:absolute;
background-color:darkkhaki;
width:800px;
height:200px;
left:50%;
transform: translateX(-50%)
}
#rect{
position:absolute;
background-color: salmon;
width:400px;
height:200px;
left:50%;
transform: translateX(-50%) skew(-25deg);
}
#marker{
position:absolute;
background-color:red;
width:5px;
height:200px;
left: 200px;
}
<div id="one">
<div id="rect"></div>
<div id="marker"></div>
<div>
Я отметил красной линией положение стороны прямоугольника перед его искажением. Я ищу способ расположить прямоугольник так, чтобы его левый нижний угол касался красной линии и JS не допускался.
Я не могу просто использовать ‘left: Ypx’, потому что все это будет анимированными ключевыми кадрами (изменение наклона, поворот постоянная перспектива внешнего элемента).
В противном случае, может быть, вы можете предложить другой способ создания анимации: картинки, которые медленно «поднимаются» из положения «лежать на столе»?
редактировать: CODEPEN
Комментарии:
1. Если у кого-то была подобная проблема, нашел простое решение: «преобразовать-начало координат: внизу слева». для элемента, который подвергается преобразованию (#rect в моем примере).
Ответ №1:
Вы можете использовать свойство transform-origin. Для вашего случая я помещаю <div id="marker">
внутрь <div id="rect">
и меняю transform-origin на 0% 100%
.
Посмотрите на мой пример:
#one{
position:absolute;
background-color:darkkhaki;
width:800px;
height:200px;
left:50%;
transform: translateX(-50%)
}
#rect{
position:absolute;
background-color: salmon;
width:400px;
height:200px;
left:50%;
transform: translateX(-50%) skew(-25deg);
}
#marker{
position:absolute;
background-color:red;
width:5px;
height:200px;
top: 0px;
left: 0px;
transform: skew(25deg);
-webkit-transform-origin: 0% 100%;
transform-origin: 0% 100%;
}
<div id="one">
<div id="rect">
<div id="marker"></div>
</div>
<div>
И эта рабочая скрипка
Комментарии:
1. Обнаружил это за 3 месяца до того, как вы опубликовали свой ответ (видео: комментарий выше). Тем не менее, это простое решение, и я предлагаю вам одно. 🙂