在窗口调整大小时删除属性
On window resize removeAttr
我有一个固定的菜单粘在顶部。当我从顶部从 1px 开始向下滚动页面时,我的固定菜单将改变样式。但是当我使网站响应并调整窗口大小时,最近添加的样式不会消失(在第一次向下滚动并返回后)。
希望这有点清楚。
这是我的jQuery:
jQuery(document).ready(function(){
var scroll_pos = 0;
var windowWidth = jQuery(window).width();
if (windowWidth > 768) {
jQuery(document).scroll(function() {
scroll_pos = jQuery(this).scrollTop();
if(scroll_pos > 1) {
jQuery("nav").css('background-color', 'black');
jQuery("nav").css('padding', '10px 0px');
jQuery("nav").css('transition', '0.3s ease-in-out all');
} else {
jQuery("nav").css('background-color', 'rgba(0, 0, 0, 0.4)');
jQuery("nav").css('padding', '20px 0px');
jQuery("nav").css('transition', '0.3s ease-in-out all');
}
});
} else {
jQuery(window).resize(function() {
jQuery("nav").removeAttr("style");
});
}
});
我的HTML的结构是这样的:
<div class="toggle">
<img src="images/menu.png">
</div>
<nav>
<ul>
<li><a href="#">link 1</a></li>
<li><a href="#">link 2</a></li>
</ul>
</nav>
感谢您的帮助
创建一个新的 JavaScript 函数,如下所示:
function resize() {
var scroll_pos = 0;
var windowWidth = jQuery(window).width();
jQuery(document).scroll(function() {
if (windowWidth > 768) {
scroll_pos = jQuery(this).scrollTop();
if(scroll_pos > 1) {
jQuery("nav").css('background-color', 'black');
jQuery("nav").css('padding', '10px 0px');
jQuery("nav").css('transition', '0.3s ease-in-out all');
} else {
jQuery("nav").css('background-color', 'rgba(0, 0, 0, 0.4)');
jQuery("nav").css('padding', '20px 0px');
jQuery("nav").css('transition', '0.3s ease-in-out all');
}
} else {
jQuery("nav").removeAttr("style");
}
});
}
然后,您可以在调整屏幕大小时轻松调用它。
$(document).ready(function(){
resize();
});
$(window).resize(function(){
resize();
});
为什么不直接使用 css?
@media only screen and (min-width: 768px) {
// CSS style for +768 px
}
@media only screen and (max-width: 768px) {
// CSS style for less 768px
}
您可以使用 css 类和媒体查询来执行此操作。而不是使用 jquery 添加每个 css 样式,而是可以更改类。
CSS 样式:
@media (min-width: 768px) {
.top{
background-color: rgba(0, 0, 0, 0.4);
padding: 20px 0px;
transition: 0.3s ease-in-out all;
}
.scrolled{
background-color: black;
padding: 10px 0px;
transition: 0.3s ease-in-out all;
}
}
@media (max-width: 768px) {
//Style when windows is less than 768px
}
JavScript 滚动函数变为:
$(document).scroll(function(){
scroll_pos = jQuery(this).scrollTop();
if(scroll_pos > 1) {
$("nav").removeClass('top');
$("nav").addClass('scrolled');
} else {
$("nav").removeClass('scrolled');
$("nav").addClass('top');
}
}
相关文章:
- 在不知道深度或父属性的情况下从对象中删除属性
- 如何从对象中删除属性
- 使用jQuery添加和删除属性
- 为什么没有从数组中存在的对象中删除属性
- 删除属性后刷新DOM,而不象chrome那样刷新页面
- Jquery 在当前之前从元素中删除属性
- 在窗口调整大小时删除属性
- 如何从使用 jquery 添加的项中删除属性
- 从 JavaScript 中的 XAML 元素中删除属性
- 主干模型.未设置不删除属性
- 无法在单击时添加/删除属性
- 从主干.js模型中删除属性
- 如果选中复选框,请删除属性
- jQuery单击功能可从元素中删除属性并在单独单击时恢复属性
- 如果找到特定类,如何添加和删除属性
- 如何使用 Javascript 从 DOM 元素中删除属性
- 从 Javascript 对象中删除属性
- 量角器未知错误,从 DOM 中删除属性
- 如何使用jquery onchange事件在HTML中添加和删除属性
- 如何从任何级别的嵌套javascript对象中删除属性