Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用“计算”相对于宽度的动画持续时间?_Html_Css_Css Animations - Fatal编程技术网

Html 使用“计算”相对于宽度的动画持续时间?

Html 使用“计算”相对于宽度的动画持续时间?,html,css,css-animations,Html,Css,Css Animations,当动态添加元素且其宽度在页面加载之前未知时,是否可以使用calc根据元素的宽度设置动画持续时间 我有几个“新闻标记器”,文本使用以下关键帧从右到左水平平移: @keyframes ticker { 0% { transform: translateX(1%); visibility: visible; } 100% { transform: translateX(-101%); } } 这个CSS: animation-name: ticker;

当动态添加元素且其宽度在页面加载之前未知时,是否可以使用
calc
根据元素的宽度设置
动画持续时间

我有几个“新闻标记器”,文本使用以下关键帧从右到左水平平移:

@keyframes ticker {
  0% {
    transform: translateX(1%);
    visibility: visible;
  }
  100% {
    transform: translateX(-101%);
  }
}
这个CSS:

  animation-name: ticker;
  animation-duration: 10s;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
translateX中的百分比表示正在翻译的元素。所以101%比元素本身的宽度大1%

因此,元素的宽度会影响平移速度。为了在10秒内执行动画,较宽的元素速度更快,而较短的元素速度较慢

下面是一个工作示例,它考虑了我的工作场景的一些布局需求:

.grid{
显示:网格;
网格模板列:1fr;
溢出y:自动;
溢出x:隐藏;
字号:5em;
宽度:40vw;
填充:0;
保证金:0;
}
.股票代码{
保证金:0;
溢出:隐藏;
显示:内联块;
}
.包装纸{
显示:内联块;
空白:nowrap;
动画名称:ticker;
动画持续时间:10秒;
动画计时功能:线性;
动画迭代次数:无限;
左:100%;
}
.包装纸{
右边距:3em;
}
@关键帧计时器{
0% {
转化:translateX(1%);
能见度:可见;
}
100% {
转化:translateX(-101%);
}
}

我会更改您的结构,以确保所有div的宽度相同。只需保留包装块元素并删除
display:grid
,即可允许内联块行为。也可以用边距替换填充

.grid{
溢出y:自动;
溢出x:隐藏;
字号:5em;
宽度:40vw;
填充:0;
保证金:0;
}
.股票代码{
保证金:0;
显示:内联块;
左边距:100%;
}
.包装纸{
空白:nowrap;
动画名称:ticker;
动画持续时间:10秒;
动画计时功能:线性;
动画迭代次数:无限;
}
.包装纸{
右边距:3em;
}
@关键帧计时器{
0% {
转化:translateX(1%);
能见度:可见;
}
100% {
转化:translateX(-101%);
}
}

能否添加一个完整的工作示例。“也许你解决问题的方法不对,有一种更简单的方法可以做到,”TemaniAfif说