В настоящее время я перехожу к свойству width
элемента. Я хотел бы заменить это на переходы на scaleX
и translateX
для лучшей производительности рендеринга.Замена динамической% ширины с помощью scaleX + translateX
Я изо всех сил пытаюсь придумать правильное преобразование 1: 1 между двумя понятиями.
Ниже находится коробка, которая содержит две линии. Каждая строка имеет внутри нее полосу. Первый бар создается с использованием width
. Второй бар создается с использованием scaleX
и translateX
. Второй бар выходит из коробки. Он должен быть идентичен бару width
для всех возможных значений.
Это подходящий способ решить эту проблему? Если нет, то как мне подойти к нему? Если это так, у меня есть некоторые проблемы:
- Я чувствую, что мне не нужно использовать ширину 1%. Я думал, что могу сказать 1px и масштабировать его, но, возможно, это неправильная идея.
- Непонятно, следует ли использовать ширину 1% и увеличить масштаб, или 100% ширину и уменьшить масштаб. Может быть, они эквивалентны, но ширина полосы контролирует позиционирование
translateX
* {
box-sizing: border-box;
}
.box {
height: 200px;
width: 200px;
border: 1px solid;
}
.line {
background-color: #ccc;
width: 100%;
height: 5px;
margin: 50px 0;
}
.bar {
height: 5px;
background-color: blue;
}
.bar.width {
width: 66.6%;
}
.bar.scale {
width: 1%;
transform: scaleX(66.6) translateX(33%);
}
<div class='box'>
<div class='line'>
<div class='bar width'>
</div>
</div>
<div class='line'>
<div class='bar scale'>
</div>
</div>
</div>
Transform-источник! Конечно. Спасибо. Теперь я чувствую себя глупо. Редактировать: Хотя кажется, что мое использование 1% все еще бросает математику ближе к концу. Настройка его на 100% и scaleX (.666) отлично работает. –
Добро пожаловать. Рад, что смог помочь. Однако я заметил, что это не идеальный перевод старого метода на новый. В моем браузере он имеет небольшое расхождение, вероятно, потому, что он пытается умножить 1% на 66,6, а не на 66,6% от родителя. Вам все равно придется использовать переполнение, как предлагает @drinchev в своем ответе: http://stackoverflow.com/a/30788066/854246. EDIT: oops. Он был удален. но в основном вы можете столкнуться с проблемами переполнения из-за округления. –
Да, похоже, мы обнаружили, что в то же время браузер гораздо более счастлив со 100% + уменьшенным, без округления. –