fadeTo与Jquery无法在Retina Macbook Pro的Chrome中工作

fadeTo with Jquery not working in Chrome on Retina Macbook Pro

本文关键字:Pro Chrome 工作 Macbook Retina Jquery fadeTo      更新时间:2023-09-26

我试图使用jQuery在滚动div(而不是主窗口)中淡出元素,因为它们滚动出视图。我正在使用fadeTo函数,并在用户滚动时检查元素的位置。

看看这个stackoverflow线程,了解我的代码基于什么。

在我的非视网膜显示器(使用Chrome)上,一切似乎都很好。顶部元素在滚动div的顶部逐渐消失,就像它应该出现的那样

然而,当我使用带视网膜的macbook pro显示器执行相同的操作时,我会出现奇怪的行为。对于滚动div中的一些元素(不是全部),fadeTo动画只淡入div的一部分(底部)。上半部分(有时甚至更多)没有变化。

编辑:能够制作演示(试着在监视器和视网膜屏幕上观看演示)。

知道为什么会发生这种事吗?为什么这在我的视网膜屏幕上的表现与在我的显示器上不同(两者都使用相同版本的Chrome)?

我还应该提到,所有这些html都被注入到现有的网页中,因此滚动div位于页面的右上角(固定位置)。我正在建造一个镀铬扩展。。。我的代码:

$('#volleyThreadDiv' + objectId).scroll(function() {
    console.log('userDidscroll...');
    $('.volleyComment').each(function () {
        var height = $(this).css('height');
        var heightNumeric = height.substring(0, height.length - 2);
        heightNumeric = Number(heightNumeric);
        if ($(this).position().top + heightNumeric < 130) {
            $(this).stop().fadeTo(0, 0.2);
        } else {
            $(this).stop().fadeTo(0, 100);
        }
    });
    $('.volleyReply').each(function () {
        var height = $(this).css('height');
        var heightNumeric = height.substring(0, height.length - 2);
        heightNumeric = Number(heightNumeric);
        if ($(this).position().top + heightNumeric < 130) {
            $(this).stop().fadeTo(0, 0.2);
        } else {
            $(this).stop().fadeTo(0, 100);
        }
    });
});
#volleyDiv {
	position:fixed;
	top: 20px;
	right: 30px;
	padding: 10px;
	z-index: 999999999999999999999999999;
	box-sizing: initial;
	background: none;
	border: none;
}
.volleyThreadDiv, #volleyActivityDiv {
	position: static;
	display: none;
	max-height: 300px;
	overflow-y: scroll;
	background: none;
	border: none;
}
.volleyThreadDiv::-webkit-scrollbar, #volleyActivityDiv::-webkit-scrollbar {  
    background-color: transparent;
}
.volleyComment, .volleyReply {
	margin: 5px 5px 5px 5px;
	padding: 5px;
	border: 2px solid #63c5e2; /* blue border */
	border-radius: 8px;
	width: 155px;
	background: white;
	box-shadow: 0px 2px 1px #888888, -2px 2px 1px #888888;
	box-sizing: initial;
}
.volleyCommentStatus, .volleyReplyStatus {
	padding: 0px 5px 0px 5px;
	margin: 0px 0px 0px 0px;
	font-family: 'Avenir Next', Helvetica, sans-serif;
	font-size: 12px;
	font-weight: normal;
	color: #262626;
	line-height: 1.5;
	word-wrap: break-word;
}
.volleyCommentStatus, .volleyReplyStatus {
	text-align: left;
}
.volleyCommentStatus > a:link, .volleyReplyStatus > a:link, .volleyCommentStatus > a:visited, .volleyReplyStatus > a:visited {
	font-family: 'Avenir Next', Helvetica, sans-serif;
	font-weight: normal;
	color: #63c5e2 !important;
	text-decoration: none !important;
	border: none;
	padding: none;
	margin: none;
	background-color: white !important;
}
.volleyCommentStatus > a:hover, .volleyReplyStatus > a:hover {
	font-family: 'Avenir Next', Helvetica, sans-serif;
	font-weight: normal;
	color: gray !important;
	text-decoration: none !important;
	border: none;
	padding: none;
	margin: none;
	background-color: white !important;
}
.volleyCommentAuthor, .volleyReplyAuthor, .volleyCommentDate, .volleyReplyDate {
	font-family: 'Avenir Next', Helvetica, sans-serif;
	font-style: italic;
	font-size: 10px;
	font-weight: normal;
	color: gray;
	margin: 0px 5px 0px 0px;
	line-height: 1.5;
}
.volleyReplyAuthor {
	clear: both;
	text-align: left;
	padding: 0px 5px 0px 5px;
}
.volleyCommentAuthor {
	clear: both;
	text-align: left;
	padding: 0px 5px 0px 5px;
}
.volleyCommentDate, .volleyReplyDate {
	float: right;
	margin: 0px 5px 0px 7px;
}
.volleyCommentReply {
	float: right;
	border: 2px solid #63c5e2; /* blue border */
	border-radius: 8px;
	background: #63c5e2;
	padding: 2px 10px 2px 10px;
	margin: 0px 0px 100px 0px;
	font-family: 'Avenir Next', Helvetica, sans-serif;
	font-size: 10px;
	font-weight: normal;
	color: white;
	box-shadow: 0px 2px 1px #888888, -2px 2px 1px #888888;
	box-sizing: initial;
}
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
<div id="volleyDiv" style="display: block;">
  <div class="volleyThreadDiv" id="volleyThreadDivUAuCOyQuav" style="display: block;">
    <div class="volleyComment" id="volleyCommentUAuCOyQuav">
      <p class="volleyCommentDate">Feb 28th</p>
      <p class="volleyCommentStatus">First comment!</p>
      <p class="volleyCommentAuthor">John Wexler</p>
    </div>
    <div class="volleyReply" id="volleyReply0wblbTaP1R">
      <p class="volleyReplyDate">Feb 28th</p>
      <p class="volleyReplyStatus">First comment!</p>
      <p class="volleyReplyAuthor">John Wexler</p>
    </div>
    <div class="volleyReply" id="volleyReplywBS0WFoUDH">
      <p class="volleyReplyDate">Feb 28th</p>
      <p class="volleyReplyStatus">Testing two comments on a a page.</p>
      <p class="volleyReplyAuthor">John Wexler</p>
    </div>
    <div class="volleyReply" id="volleyReply5zw2ww9GBo">
      <p class="volleyReplyDate">Feb 28th</p>
      <p class="volleyReplyStatus">Will it blend?</p>
      <p class="volleyReplyAuthor">John Wexler</p>
    </div>
    <div class="volleyReply" id="volleyReplythWrBLrkjy">
      <p class="volleyReplyDate">Feb 28th</p>
      <p class="volleyReplyStatus">Stay with me.</p>
      <p class="volleyReplyAuthor">John Wexler</p>
    </div>
    <div class="volleyCommentReply" id="volleyCommentReplyUAuCOyQuav">Reply</div>
  </div>
</div>
</body>
</html>

我找到的解决方案是在.css中为.voleyCommentStatus、.voleyReplyStatus.添加位置:relative

它似乎继承了位置:静态,我认为这是导致视网膜屏幕问题的原因。