编辑:解决了文本问题,仍需要Firefox过渡的帮助。
向下滚动页面后尝试使用最小菜单。代码工作的意义在于它正在转换,但它并没有像我希望的那样过渡。有两个问题:
在理想情况下,我希望图像像在Chrome中一样动画,但我希望文本像在Firefox中一样滑动到位。
我已经在Stackoverflow和其他地方查找了其他问题,但似乎没有一个解决方案来解决Webkit& MOZ。
jsFiddle问题。
试试这个:
$(document).on("scroll",function(){
if($(document).scrollTop()>100){
$(".logo").removeClass("logo_large").addClass("logo_small");
$("header").removeClass("large").addClass("small");
}
else{
$(".logo").removeClass("logo_small").addClass("logo_large");
$("header").removeClass("small").addClass("large");
}
});
.small li, .large li, .logo_large, .logo_small {
transition: all 1s;
-moz-transition: all 1s; /* Firefox 4 */
-webkit-transition: all 1s; /* Safari and Chrome */
-o-transition: all 1s; /* Opera */
}
nav {
width: 960px;
margin: 0 auto;
}
ul {
display:inline-table;
list-style-type: none;
text-align: center;
}
li {
display:table-cell;
float: left;
text-align: center;
margin-right: 30px;
}
.large li {
height: 120px;
line-height: 120px;
}
.small li {
height: 70px;
line-height: 70px;
}
.logo_large {
height: 130px;
width: 164px;
background:url(https://unsplash.it/200/300) no-repeat;
}
.logo_small {
height: 80px;
width: 50px;
background:url(https://unsplash.it/200/300) no-repeat;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<header class="large">
<nav>
<ul>
<li><a class="active" href="#">Home</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Portfolio</a></li>
<li class="logo logo_large"></li>
<li><a href="#">Blog</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
答案 0 :(得分:3)
从header, a, img, li{...
中移除转场并添加到实际元素:
.large li {
height: 120px;
line-height: 120px;
transition: all 1s;
-moz-transition: all 1s; /* Firefox 4 */
-webkit-transition: all 1s; /* Safari and Chrome */
-o-transition: all 1s; /* Opera */
}
.small li {
height: 70px;
line-height: 70px;
transition: all 1s;
-moz-transition: all 1s; /* Firefox 4 */
-webkit-transition: all 1s; /* Safari and Chrome */
-o-transition: all 1s; /* Opera */
}
.logo_large {
height: 130px;
width: 164px;
background:url(http://samaradionne.com/img/typeBlack.png) no-repeat;
transition: all 1s;
-moz-transition: all 1s; /* Firefox 4 */
-webkit-transition: all 1s; /* Safari and Chrome */
-o-transition: all 1s; /* Opera */
}
.logo_small {
height: 80px;
width: 50px;
background:url(http://samaradionne.com/img/logoBlack.png) no-repeat;
transition: all 1s;
-moz-transition: all 1s; /* Firefox 4 */
-webkit-transition: all 1s; /* Safari and Chrome */
-o-transition: all 1s; /* Opera */
}
答案 1 :(得分:1)
如果这些是你唯一的两种状态,你可以通过创建一个持久类和一个覆盖类来避免这个问题,并将你的风格应用到这些状态,例如:
.logo { }
.logo.minimized { }
只需添加和删除叠加样式。
这应该允许jQuery正确计算转换。