Все,
Я хотел бы использовать translateX
для анимации дочернего элемента на 100% пути через него родительского (то есть от левого края до правого края).
Задача состоит в том, что проценты в translateX
относятся к самому элементу, а не к родительскому.
Итак, например, если мой html выглядит так:
<div id="parent">
<div id="child">
</div>
И мой CSS вроде этого (префикс поставщика не указан):
#parent {
position: relative;
width: 300px;
height: 100px;
background-color: black;
}
#child {
position: absolute;
width: 20px;
height: 100px;
background-color:red;
transform: translateX(100%);
}
Это не сработает - ребенок перемещает только 20px (100% от себя), а не полностью через родителя. (Вы можете видеть это на jsfiddle):
Я могу это сделать:
#child {
position: absolute;
width: 20px;
height: 100px;
background-color:red;
-webkit-transform: translateX(300px) translateX(-100%);
transform: translateX(300px) translateX(-100%);
}
Это работает (см. здесь снова на jsfiddle), поскольку он сначала перемещает дочернего 300px (полная ширина родительский), минус 20px (ширина ребенка). Однако это зависит от того, какой родитель имеет фиксированный известный размер пикселя.
Однако в моем отзывчивом дизайне я не знаю ширины родителя, и он изменится.
Я знаю, что я могу использовать left:0
и right:0
, но производительность анимации влево/вправо намного хуже, чем translateX (Спасибо Пол Ирланд!).
Есть ли способ сделать это?
Спасибо заранее.