【发布时间】:2019-04-29 19:31:53
【问题描述】:
我想在已知宽度(隐藏溢出)的文本输入中从头到尾转换一行动态占位符文本
现在我知道对于常规容器 div,我可以利用转换来转换正确的长度...
所以对于长度为 100 像素的容器,我可以使用以下命令过渡到文本末尾: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>
我想知道是否可以使用placeholder pseudo element 使用占位符文本来实现上述效果。
所以我尝试了以下方法:
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">
...但是由于占位符伪元素上可用属性的限制,上述 sn-p 不起作用
也适用于::first-line pseudo-element 的所有属性 适用于 ::placeholder 伪元素。
很遗憾,transform1 没有出现在 that list 中。
所以我想知道是否有另一种方法可以实现这一点 - 可能使用占位符伪元素支持的其他属性。
- 奇怪的是,在没有 calc 函数和动画的情况下,
transform属性似乎(在某种程度上)在 Chrome 上有效。
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">
【问题讨论】:
-
一个需要“滚动”的长度的占位符是一个 UX 无法以恕我直言开始......
-
@04FS 我同意,但我还是想知道这是否可能
标签: css placeholder