Я хотел бы перевести одну строку динамического текста заполнителя из начала в конец в текстовом вводе известной ширины (который скрывает переполнение)
Теперь я знаю, что для обычного контейнера div я могу использоватьof transforms для перехода правильной длины ...
, поэтому для контейнера длиной 100px я мог бы перейти в конец текста с помощью: transform: translateX(calc(100px - 100%)
div {
width: 100px;
border: 2px solid green;
margin: 10px;
padding: 5px;
}
div {
white-space: nowrap;
overflow: hidden;
}
span {
display: inline-block;
animation: 4s scrollText forwards;
}
@keyframes scrollText {
to {
transform: translateX(calc(100px - 100%));
}
}
<div><span>some really really really long text here</span></div>
Мне было интересно, смогу ли я достичь вышеуказанного эффекта с помощью заполнителя текста, используя псевдоэлемент заполнителя .
ИтакЯ попробовал следующее:
input {
width: 100px;
border: 2px solid green;
margin: 10px;
padding: 5px;
}
input::placeholder {
color: red;
animation: 4s scrollText;
transform: translateX(0);
}
@keyframes scrollText {
from {
transform: translateX(0);
}
to {
transform: translateX(calc(100px - 100%));
}
}
<input type="text" placeholder="some really really really long text here">
... но приведенный выше фрагмент не работает из-за ограничения свойств, доступных для псевдоэлемента заполнителя
Все свойства, которые применяются к псевдоэлементу :: first-line , также применяются к псевдоэлементу :: placeholder.
К сожалению, transform
1 не появляется в этом списке .
Поэтому мне было интересно, есть ли другой способ достижения этого - возможно, с другими свойствами, которые поддерживаются псевдоэлемент-заполнитель.
- Как ни странно, свойство
transform
, похоже, работало в Chrome при использовании без функции calc и анимации.
input {
width: 100px;
border: 2px solid green;
margin: 10px;
padding: 5px;
}
input::placeholder {
color: red;
transform: translateX(-50%);
}
<input type="text" placeholder="some really really really long text here">