如何在鼠标滚动时在标题中调整徽标(宽度:100px)?
$('.logo').scroll(function() {
$(this).width(100);
$(this).off(); //removes the handler so that it only resizes once...
})
.header {
background-color: black;
}
.logo {
height:100px;
width: 100%;
background-image: url("http://unika.myarmah.it/skin/frontend/sns_simo/default/images/logo.png");
background-repeat: no-repeat;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="header">
<div class="logo"></div>
</div>
答案 0 :(得分:1)
只需使用javascript :
为什么呢? - 因为它和使用jQuery一样简短。
在看到作者对上一个答案的评论之后,我已经调整了我的示例,以便在页面顶部包含动画和重置。再次 - 只需使用javascript,为了获得更好的性能优势,请使用CSS类,以便所有绘制都在一个周期内完成。
更新#1 jsfiddle - https://jsfiddle.net/113dn29z/16/
var logo = document.querySelector('.logo');
var handleResize = function(e) {
if (document.body.scrollTop === 0) {
logo.classList.remove("resize");
} else {
logo.classList.add("resize");
}
};
document.addEventListener('scroll', handleResize);
<div class="header">
<div class="logo">
</div>
</div>
body {
height: 9999px;
overflow: auto;
}
.header {
background-color: black;
}
.logo {
margin-top: 200px;
height:100px;
width: 100%;
background-color: red;
background-repeat: no-repeat;
transition: width 0.2s ease;
}
.logo.resize {
width: 100px;
}
旧jsFiddle示例 - https://jsfiddle.net/113dn29z/10/
答案 1 :(得分:0)
var logoHasResized = false;
$(document).on('scroll', function (e) {
if (window.scrollY == 0) {
$('.logo').animate({'width': '100%'}, 250);
logoHasResized = false;
} else if (logoHasResized == false) {
$('.logo').animate({'width': 100}, 250);
logoHasResized = true;
}
});
编辑:由于您希望它在滚动到页面顶部时返回,我已添加检查以查看动画是否已发生,因为您不希望它发生不断。