fadeTo 与 Jquery 在 Retina Macbook Pro 上的 Chrome 中不起作用

Posted

技术标签:

【中文标题】fadeTo 与 Jquery 在 Retina Macbook Pro 上的 Chrome 中不起作用【英文标题】:fadeTo with Jquery not working in Chrome on Retina Macbook Pro 【发布时间】:2015-05-20 18:53:51 【问题描述】:

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

See this *** thread for what I'm basing my code on.

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

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

编辑:WAS ABLE TO MAKE A DEMO(尝试在显示器与视网膜屏幕上查看演示)。

知道为什么会发生这种情况吗?为什么这在我的 Retina 屏幕上的行为与在我的显示器上的行为不同(都使用相同版本的 Chrome)?

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

$('#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>

【问题讨论】:

可以在 stacksn-ps 中包含html 吗? 刚刚添加了 HTML 和 CSS。 尝试使用.stop(false, true) jsfiddle.net/JdbhV/1179 api.jquery.com/stop/#stop-clearQueue-jumpToEnd 我仍然在我的视网膜屏幕上看到同样的奇怪行为。 【参考方案1】:

我找到的解决方案是在 .volleyCommentStatus、.volleyReplyStatus 的 css 中添加 position: relative

它似乎继承了 position: static 我认为这是导致视网膜屏幕问题的原因。

【讨论】:

以上是关于fadeTo 与 Jquery 在 Retina Macbook Pro 上的 Chrome 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery效果-----fadeIn()fadeOut()fadeToggle()fadeTo()

210 jQuery淡入淡出:fadeIn() fadeOut() fadeToggle() fadeTo()

jQueryjQuery 效果toggle()fadeToggle()fadeTo() slideToggle() animate()驼峰表示动画队列链(Chaining)

jquery的一些笔记

jquery总结06-动画事件03-淡入淡出效果

javascript Retina Images @ 2x - Jquery Ajax自动图像交换