当动态添加元素并且在页面加载之前不知道其宽度时,是否可以animation-duration使用 相对于元素的宽度进行设置?calc
我有几个“新闻行情”,其中的文本使用此关键帧从右到左无限水平翻译:
@keyframes ticker {
0% {
transform: translateX(1%);
visibility: visible;
}
100% {
transform: translateX(-101%);
}
}
Run Code Online (Sandbox Code Playgroud)
还有这个CSS:
animation-name: ticker;
animation-duration: 10s;
animation-timing-function: linear;
animation-iteration-count: infinite;
Run Code Online (Sandbox Code Playgroud)
translateX 中的百分比指的是正在翻译的元素。所以 101% 比元素本身的宽度多 1%。
因此,元素的宽度会影响平移速度。较宽的元素运行速度较快,以便在 10 秒内执行动画,而较短的元素运行速度较慢。
这是一个工作示例,它满足我的工作场景的一些布局需求:
@keyframes ticker {
0% {
transform: translateX(1%);
visibility: visible;
}
100% {
transform: translateX(-101%);
}
}
Run Code Online (Sandbox Code Playgroud)
animation-name: ticker;
animation-duration: 10s;
animation-timing-function: linear;
animation-iteration-count: infinite;
Run Code Online (Sandbox Code Playgroud)
我想为动画持续时间提供一个与元素宽度相关的值,这样我就可以使所有滚动条以相同的速度移动,而不管宽度如何。
我想也许我可以用calc()10 乘以或除以元素宽度的值。不幸的是,这里元素的宽度是动态的,因为它是由元素内的字符串定义的,并且该字符串在页面加载之前是未知的。
谢谢
我在使用 Symfony 5、encore、stimulus 等加载 Bootstrap 的 js 时遇到困难...
jquery、popper、corejs 等都已安装,并且至少 jquery 正在工作......
app.scss 和 app.js 似乎可以使用 sass、postcss 和 babel(包括 Bootstrap 的 CSS)很好地编译。只是 Bootstrap 的 JS 不存在,所以没有下拉菜单等。
资产/app.js
// any CSS you import will output into a single css file (app.css in this case)
import './styles/app.scss';
// start the Stimulus application
import './bootstrap';
Run Code Online (Sandbox Code Playgroud)
资产/引导程序,js
import { startStimulusApp } from '@symfony/stimulus-bridge';
// Registers Stimulus controllers from controllers.json and in the controllers/ directory
export const app = startStimulusApp(require.context(
'@symfony/stimulus-bridge/lazy-controller-loader!./controllers',
true,
/\.(j|t)sx?$/
));
// …Run Code Online (Sandbox Code Playgroud)