当前位置: 首页 > 面试题库 >

Bootstrap中CSS过渡中的“强制回流”

弘浩瀚
2023-03-14
问题内容

从Twitter的bootstrap修改bootstrap-modal jquery插件,我看到他们使用CSS过渡来实现渐变效果。

这行令我着迷的是这一行:

that.$element[0].offsetWidth // force reflow

如果该行被注释,过渡将不起作用。我发现有关其含义的所有参考文献都是“强制回流”注释。

读取该属性如何影响CSS过渡?这是为了解决浏览器中的错误吗?


问题答案:

回复有点晚,但是我正在解决CSS转换的一些问题,我认为这与您发现的这段代码有关,希望可以帮助您理解它!

基本上,我从Javascript /
jQuery切换一个类,该类将CSS过渡添加到dom元素。然后,此元素的CSS会更新,从而导致发生过渡。下面是该代码的简化版本:

var myelement = $("myselector");

// Set z-indexes before the transition
myelement.css("z-index", 1);

var reflow = root.offset().left; // Re-flow the page

// Set the transition class on the element which will animate
myelement.addClass("trans");
myelement.css("width", 0 + "px"); // Animate to nothing

因此,如果我取消对重排线的注释,则会发生过渡,但是有时(在野生动物园中更常见),myelement的z-index不会被更新。

在我看来,在某些情况下,写入dom的样式将被缓冲在某个位置而不被刷新。

这就是调用左偏移量的地方。这是据说导致页面重排的属性之一。显然,这通常是对性能不利的事情,但似乎有必要防止css过渡选择错误的值。

有一个有趣的Mozilla错误,讨论了同一主题。可能会引起一些兴趣。他们建议添加API以正确地从代码开始过渡。

希望这可以帮助!:)



 类似资料:
  • 问题内容: CSS转换完成后能否获得通知(如回调)? 问题答案: 我知道Safari实现了一个webkitTransitionEnd回调,您可以将其直接附加到带有过渡的元素上。 他们的示例(重新格式化为多行):

  • 主要内容:使用案例过渡效果(Transition)插件提供了简单的过渡效果。 如果您想要单独引用该插件的功能,那么除了其他的 JS 文件,您还需要引用 transition.js。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用 bootstrap.js 或压缩版的 bootstrap.min.js。 Transition.js 是 transitionEnd 事件和 CSS 过渡效果模拟器的基本

  • 问题内容: 试图使用CSS从“ 400”平稳过渡到“ 600”,但在Chrome中似乎无法正常工作。这是一个已知的错误,还是我做错了什么? 问题答案: 根据大量测试,Chrome和IE-10当前不支持字体粗细动画。将来可能会改变。

  • 主要内容:1. transition-property,2. transition-duration,3. transition-timing-function,4. transition-delay,5. transition通常当 CSS 的属性值更改后,浏览器会立即更新相应的样式,例如当鼠标悬停在元素上时,通过 :hover 选择器定义的样式会立即应用在元素上。在 CSS3 中加入了一项过渡功能,通过该功能您可以将元素从一种样式在指定时间内平滑的过渡到另一种样式,类似于简单的动画,但无需借

  • 本文向大家介绍CSS过渡速记,包括了CSS过渡速记的使用技巧和注意事项,需要的朋友参考一下 示例 的CSS 的HTML 此示例将在div悬停时更改背景颜色,背景颜色更改将持续1秒钟。

  • 本文向大家介绍CSS 过渡(纵向),包括了CSS 过渡(纵向)的使用技巧和注意事项,需要的朋友参考一下 示例 的CSS 的HTML transition-property:指定过渡效果所针对的CSS属性。在这种情况下,当鼠标悬停时,div会在水平和垂直方向上扩展。 transition-duration:指定过渡完成所需的时间。在上面的示例中,高度和宽度过渡将分别花费1秒和500毫秒。 trans