jquery - 在滚动问题上添加类
问题描述
我在滚动上添加了一个添加类功能,我在其他项目中使用过,但这次它不能正常工作,我一生都无法弄清楚原因。我有要添加要设置的类的元素,opacity: 0
并且opacity: 1
一旦用户滚动了多个像素,就添加了一个类
HTML
<nav id="icons">
<ul>
<li><a href="#">learn</a></li>
<li><a href="#">solutions</a></li>
</ul>
</nav>
CSS
#icons {
position: fixed;
left: 32px;
top: 50%;
transform: translateY(-50%);
padding: 0;
margin: 0;
list-style-type: none;
background-color: transparent;
width: 0px;
border-bottom: none;
opacity: 0;
z-index: 20;
}
.show {
opacity: 1;
}
jQuery
$(window).scroll(function(){
var fromTopPx = 700; // distance to trigger
var scrolledFromtop = jQuery(window).scrollTop();
if( scrolledFromtop > fromTopPx ) {
$('#icons').addClass('show');
} else {
$('#icons').removeClass('show');
}
});
解决方案
问题可能与CSS 特异性有关。本质上,.show
属性不会覆盖#icons
属性,因为 ID 比类具有更高的特异性。
我已将 ID 添加到show
选择器中。
$(window).scroll(function() {
var fromTopPx = 700; // distance to trigger
var scrolledFromtop = jQuery(window).scrollTop();
if (scrolledFromtop > fromTopPx) {
$('#icons').addClass('show');
} else {
$('#icons').removeClass('show');
}
});
body {
min-height: calc(100vh + 1000px);
}
#icons {
position: fixed;
left: 32px;
top: 50%;
transform: translateY(-50%);
padding: 0;
margin: 0;
list-style-type: none;
background-color: transparent;
width: 0px;
border-bottom: none;
opacity: 0;
z-index: 20;
}
#icons.show {
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav id="icons">
<ul>
<li><a href="#">learn</a></li>
<li><a href="#">solutions</a></li>
</ul>
</nav>
或者,您可以删除一个类而不是添加一个类,这样您就不需要覆盖任何属性。
$(window).scroll(function() {
var fromTopPx = 700; // distance to trigger
var scrolledFromtop = jQuery(window).scrollTop();
if (scrolledFromtop > fromTopPx) {
$('#icons').removeClass('hide');
} else {
$('#icons').addClass('hide');
}
});
body {
min-height: calc(100vh + 1000px);
}
#icons {
position: fixed;
left: 32px;
top: 50%;
transform: translateY(-50%);
padding: 0;
margin: 0;
list-style-type: none;
background-color: transparent;
width: 0px;
border-bottom: none;
z-index: 20;
}
.hide {
opacity: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav id="icons" class="hide">
<ul>
<li><a href="#">learn</a></li>
<li><a href="#">solutions</a></li>
</ul>
</nav>
推荐阅读
- azure-cosmosdb - Azure Synapse 链接到 Cosmos DB 是否适用于托管标识?
- azure - Databricks 流到批处理过程
- linux - Linux 音频驱动程序和 ALSA(外部)时钟选择
- java - “数据/蓝图”对象的用户特定版本
- powerbi - 有没有办法在PowerBI中仅当名称相同时才从前一行计算行?
- python - 使用正则表达式从 pandas df 中提取字符串
- blazor - 使用 SSL 创建了 Blazor 服务器端项目,如何切换到非 SSL?
- ruby-on-rails - 带有 Nginx 和 Rails 的 Docker:无法访问此站点
- javascript - lodash 与 lodash/fp 的自定义 eslint 无限制导入
- javascript - 问题选择和取消选择复选框范围