关于css中transition的问题

发布于 2022-09-13 01:05:49 字数 136 浏览 15 评论 0

固定宽度(200px)->固定宽度(500px)的时候,transition可以出现完美过渡效果,但是如果我的宽度一开始不想定死,想自动被子元素撑开,也就是自适应宽度(auto)->固定宽度(500px)时,过渡效果就会失效,有很好的解决办法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉月流沐 2022-09-20 01:05:49

https://developer.mozilla.org...

auto 值常常较复杂,规范指出不要在它上动画。一些用户代理,比如基于 Gecko 的,遵循这点;一些,比如基于 WebKit的,没有这么严格限制。在 auto 上动画结果可能不可预期,这取决于浏览器及其版本,应当避免使用。

解决方案——改变宽度是有触发条件的吧,比如点击之类的,在更改宽度前先获取元素宽度赋值为该值,再改为500,不过这里有个需要注意的坑——就是两次宽度赋值必须分布在两次宏任务,目的是为了将两次赋值都给到渲染进程,也就是第一次赋值后第二次需要setTimeout,也可以在第二次赋值前获取一下元素宽,因为获取时浏览器会强制渲染。最好的时机是动态内容加载完毕后就赋值宽度。
https://jsbin.com/tujifezahe/...,output

热风软妹 2022-09-20 01:05:49

可以用 max-width 来代替

.item{
  max-width: 100px; /*需要注意的是给一个适当的值,如果你的动态内容比较少就给小一点*/
  transition: max-width .3s;
}
.item.active{
  max-width: 500px;
}

可以参考这篇文章 https://github.com/chokcoco/i...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文