from{ transform: translateX(0); } to{ transform: translateX(-6000px); } 帮忙改成向左移动的距离是内容的长度,内容长度不是固定的值,谢谢
时间: 2024-03-28 09:42:34 浏览: 158
要让元素向左移动的距离等于内容的长度,可以使用 `translateX(-100%)`,这样元素就会向左移动自身宽度的距离。但是,在使用 `translateX(-100%)` 时,需要将元素设置为 `position: absolute` 或 `position: fixed`,并且父元素也需要设置 `position: relative`,这样元素的水平方向位置才会相对于父元素进行定位。如果你希望元素向左移动的距离比内容长度略大一些,可以使用 `translateX(-110%)` 或者其他百分比数值。
如果你不知道内容长度的具体值,可以使用 JavaScript 动态计算内容长度,并将计算结果赋值给样式表。例如,使用以下代码可以将元素的 `transform` 属性设置为向左移动内容长度的距离:
```javascript
// 获取元素的内容宽度
const contentWidth = document.querySelector('.element').scrollWidth;
// 设置样式表
const style = document.createElement('style');
style.innerHTML = `
.element {
position: absolute;
left: 0;
top: 0;
animation: slide-left ${contentWidth / 1000}s linear infinite;
}
@keyframes slide-left {
from {
transform: translateX(0);
}
to {
transform: translateX(-${contentWidth}px);
}
}
`;
document.head.appendChild(style);
```
上述代码中,`contentWidth` 变量保存了元素的内容宽度,单位为像素。在样式表中,使用 `contentWidth / 1000` 计算出动画的持续时间,单位为秒。`@keyframes` 规则中,使用 `transform: translateX(-${contentWidth}px)` 将元素向左移动内容长度的距离。注意,在使用 `translateX(-${contentWidth}px)` 时,需要将像素值转化为字符串类型,并添加单位 `px`。
阅读全文