【问题标题】:Fade in up animation on scroll (but only once) considering seo考虑到 seo 在滚动上淡入动画(但只有一次)
【发布时间】:2017-06-14 12:27:39
【问题描述】:

我需要实现这种动画效果,例如在this页面中使用。 我已经尝试了很多次我在互联网上找到的所有东西,但没有一个解决方案像这样工作,我无法修复它。我想任何了解 Javascript 的人都应该很容易(但我不是其中的一员,这是我第一次需要这样的东西,我的研究持续了几个小时,所以我很抱歉,但我试过了询问更多有 JS 经验的人)。

在理想情况下,它不应该通过隐藏的东西来解决,因为我害怕对 SEO 产生不良影响。

$(document).ready(function() {
    
    /* Every time the window is scrolled ... */
    $(window).scroll( function(){
    
        /* Check the location of each desired element */
        $('.hideme').each( function(i){
            
            var bottom_of_object = $(this).offset().top + $(this).outerHeight();
            var bottom_of_window = $(window).scrollTop() + $(window).height();
            
            /* If the object is completely visible in the window, fade it it */
            if( bottom_of_window+500 > bottom_of_object ){
                
                $(this).addClass("slideUp");
                $(this).animate({'opacity':'1'});
                    
            }
            
        }); 
    
    });
    
});
.slideUp{
	animation-name: slideUp;
	-webkit-animation-name: slideUp;	

	animation-duration: 0.5s;	
	-webkit-animation-duration: 0.5s;

	animation-timing-function: ease-in-out;	
	-webkit-animation-timing-function: ease-in-out;		
	
}

@keyframes slideUp {
	0% {
		transform: translateY(5%);
        display: none;
        opacity: 0;
	}
    100% {
		transform: translateY(0%);
        display: block;
        opacity: 1;
	}
	
}

@-webkit-keyframes slideUp {
	0% {
		-webkit-transform: translateY(5%);
        -webkit-display: none;
        -webkit-opacity: 0;
	}
	100%{
		-webkit-transform: translateY(0%);
        -webkit-display: block;
        -webkit-opacity: 1;
	}			
}

.red-bg {background-color: red; color: white; padding: 50px; margin-top: 25px;}
.blue-bg {background-color: blue; color: white; padding: 50px; margin-top: 25px;}

.hideme
{
    opacity:0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="hideme red-bg">
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
</div>
<div class="hideme blue-bg">
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
</div>
<div class="hideme red-bg">
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
<p>
Lorem ipsum dolor sit amet sit veroeros sed et blandit consequat sed veroeros lorem et blandit adipiscing feugiat phasellus tempus hendrerit, tortor vitae mattis tempor, sapien sem feugiat sapien, id suscipit magna felis nec elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos lorem ipsum dolor sit amet.
</p>
</div>

谢谢大家的帮助。

【问题讨论】:

  • 您可以将您拥有的代码添加到问题中吗?查看How to Askminimal reproducible example
  • @TimHutchison 我得到的最接近的是:jsfiddle.net/g2wLgz7c(在我询问后我取得了一点进展,但我仍然认为我的代码有点乱,我担心不透明度:0;因为的搜索引擎优化)。因此,如果有人可以用纯代码发布一个简单的解决方案,而不是乱七八糟的东西,那就太好了:)
  • 我将您的代码添加到问题本身中(您可能必须等到编辑经过同行评审才能显示出来)。请在将来像这样向您的问题添加代码。 jsfiddle很好,但是如果链接消失了,那么您的问题的价值就会大大降低,因为我们没有代码
  • @mdblzk 您的代码似乎与预期的效果非常相似。还缺少什么?

标签: javascript jquery html css seo


【解决方案1】:

是的,所以如果我理解正确,您需要仅在当前不在屏幕上时才将其淡化。这是您需要的 javascript:

$(document).ready(function() {

function fading() {

    $('.hideme').each( function(i){

        var bottom_of_object = $(this).offset().top + $(this).outerHeight();
        var bottom_of_window = $(window).scrollTop() + $(window).height();

        /* If the object is completely visible in the window, fade it it */
        if( bottom_of_window > bottom_of_object ){

            $(this).animate({'opacity':'1'},1000);

        }

    });

}

fading();

$(window).scroll( function(){
    fading();
});

});

我在这里附上了小提琴: https://jsfiddle.net/e5qaD/7105/

此外,如果您担心的是opacity: 0;,您可以忽略以上所有内容,只需在页面底部添加一个带有高z-index 的白色渐变。如果您的页面上有按钮,这可能会导致一些问题,因此如果您沿着这条路线走,请给它一个小的高度。

【讨论】:

  • 感谢您的提琴,但正如我所提到的,我害怕“不透明度:0”(因为 SEO)。是否有任何其他解决方案,然后设置 0 不透明度?我需要动画淡出一点点。向上移动很容易 ---- @keyframes slideUp { 0% { transform: translateY(5%);显示:无;不透明度:0; } 100% { 变换:translateY(0%);显示:块;不透明度:1; } } ---- 但是 opacity 0 在这里不起作用......正如我所说,没有它可以完成吗?
  • 如果你真的很担心,你总是可以在页面底部添加一个褪色的 div,并固定在 z-index 最高的页面底部。这也会产生褪色效果,并且不需要 javascript
  • 我想谷歌不会对这个解决方案感到高兴。但是谢谢你的另一个观点。我想没有任何“更清洁”的解决方案,然后是 0 到 1 的不透明度或“淡入”动画的褪色 div?
  • 我能想到的唯一另一件事是在要淡入淡出的上面添加一个绝对 div,并将其背景不透明度从白色设置为 0。有几种查看方式我想,我认为没有什么是“干净”的:D
猜你喜欢
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 2018-11-06
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
相关资源
最近更新 更多