多个 HTML 元素的 CSS 转换不触发

标签 css css-transitions transition

我有一个标题,我在设置的滚动量后固定到页面顶部,并希望在标题固定时对标题内的多个元素执行一组 CSS 转换:

  1. 标题高度从 100px 缩小到 60px
  2. 标题图标从 50x50 缩小到 25x25
  3. 标题字体从 48px 缩小到 36px

#1 按预期工作,但当滚动目标被击中时,#2 和 #3 会立即改变,而不是动画它们的大小。

我正在添加/删除类 .page-header-fixed 来修复/取消修复 header 。

我在所有情况下都应用以下转换:

-webkit-transition: all 1s ease;
-moz-transition: all 1s ease;
-ms-transition: all 1s ease;
-o-transition: all 1s ease;
transition: all 1s ease;

对于 header 本身 (#1),我使用以下选择器来修复 header 并更改高度:

#page-header-wrapper .page-header-fixed {
    position: fixed;
    height: 60px;
    top: 0;
}

而对于其他元素(#2 和#3),我正在使用它

.page-header-fixed .hd-icon {
    width: 25px;
    height: 25px;
}
.page-header-fixed .hd-center {
    font-size: 36px;
}

我希望 .hd-icon 在 50x50->25x25 和 .hd-center 在标题固定时从 48px->36px 动画但两者瞬间改变。尽管标题高度从 100px->60px 动画。

我是否没有正确执行多个并发转换,或者我针对元素的方式?

JSFiddle 演示在这里 http://jsfiddle.net/9n90802j/

最佳答案

这个有效:http://jsfiddle.net/Whre/9Lk5ym52/

我做了以下更改:

JS:

window.setTimeout(function() {
    $("#page-header .hd-icon,#page-header .hd-center").addClass("scrolled");
},10);

分别是removeClass()

CSS:

.hd-icon.scrolled {
    width: 25px;
    height: 25px;
}

.hd-center.scrolled {
    font-size: 36px;
}

其实我也不知道是什么问题。我认为浏览器无法意识到这个子元素需要进行转换。我只知道如果没有 setTimeout(),您的示例将无法运行。如果有人有想法,请告诉我!

关于多个 HTML 元素的 CSS 转换不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25413620/

相关文章:

css - 将一个 div 框居中

javascript - CSS 转换在 ASP.NET Web 窗体中不起作用

google-chrome - 第一个动画的 chrome 19-21 中的 CSS 3 Card-Flip 动画错误

html - 如何显示前三个 Logo 等待几秒钟并无限循环地显示后三个 Logo ?

jquery - jQuery Mobile 中的页面转换后脚本不起作用

css - 如何让div保持悬停状态?

HTML/CSS 固定元素在滚动时不隐藏其他元素

css - 在 CSS3 动画结束时保持最终状态

html - 即时过渡 - 持续时间不起作用?

css - 在 Safari 浏览器中将文本居中的最佳方法是什么