【问题标题】:Is it possible to apply CSS transitions inline?是否可以内联应用 CSS 过渡?
【发布时间】:2016-11-24 11:13:15
【问题描述】:

是否可以内联(在 DOM 中)应用 CSS 过渡,而不使用伪选择器或使用 JS 在 dom 上添加和更改属性 class? .

#target{
  width: 100px;
  height:100px;
  background-color:red;
}
<div id="target" style="transition: opacity 1s linear;"></div>

【问题讨论】:

  • 是的,我们可以。然而,仅仅因为你可以并不意味着你应该;-)
  • @JohnSlegers 为什么不呢?

标签: html css


【解决方案1】:

过渡需要一个不断变化的值才能产生任何效果。正如您所提到的,这通常是通过切换类或使用伪选择器来实现的。

如果您希望在不改变任何值的情况下发生“过渡”,则需要使用动画:

#target{
  width: 100px;
  height:100px;
  background-color:red;
}

@keyframes fadeMe {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
<div id="target" style="animation: fadeMe 2s;"></div>

我不确定你为什么需要内联执行此操作。

【讨论】:

  • 这样做的一个重要原因是剪切和粘贴 HTML(例如,提供内嵌广告)。
  • 需要内联执行此操作的原因是因为您使用不允许任何其他方法的 wiki 编写此内容。
  • 另一个原因是在处理来自 javascript 的动态值时,例如宽度。
【解决方案2】:

结合内联javascript你可以实现,试试这个:

#target{
  width: 100px;
  height:100px;
  background-color:red;  
}
<div id="target" style="transition: all 4s linear;" onclick="this.style.opacity = '.3'">click me</div>

【讨论】:

  • 它似乎适用于几乎任何类型的 DOM 更新,不仅限于内联 javascript。我刚刚验证了在 Chrome 中使用 ReactJS 来更新 render() 方法中的内联样式的转换。不知道有没有限制。
猜你喜欢
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 2011-06-13
  • 1970-01-01
  • 2019-05-27
  • 2014-01-13
相关资源
最近更新 更多