当前位置: 首页 > Web前端 > HTML5

苹果官网超强滚动文字效果实现

时间:2023-04-05 23:16:29 HTML5

苹果每年新品发布,官网都会更新相应的单页滚动产品介绍页面。动画效果非常有趣,今年的iPhone14Pro介绍页也不例外。最近刚好有朋友问,对官网的一段文字特效特别感兴趣。申请很容易,但他不知道从哪里开始。我们看一下:整个动画大概是,随着页面的向下滚动,整个文字从不出现。直到出现,然后经历一轮渐变色变,最后逐渐消失。在这篇文章中,我将介绍2种使用CSS来实现这种效果的方法。使用背景剪辑第一种方法是使用背景剪辑。background-clip:background-clip设置元素的背景(背景图像或颜色)是否延伸到边框、内边距框和内容框下方。而background-clip:text可以实现将背景裁剪成文字的前景色。使用该属性意味着块中的文本作为裁剪区域向外裁剪,文本的背景为块的背景,文本之外的区域将被裁剪。看最简单的Demo,不使用background-clip:text:

Clip
效果如下:CodePenDemo使用background-clip:text我们稍微修改一下上面的代码,添加background-clip:text:div{font-size:180px;字体粗细:粗体;颜色:深粉色;background:url($img)no-repeatcenter中心;背景尺寸:封面;background-clip:text;}效果如下:看到这里,可能有人会疑惑,,搞什么鬼,这不就是设置文字的color属性吗。将文字设置为透明color:transparent别担心!当然,还有更有趣的。因为上面设置了文字的颜色,遮挡了div块的背景。如果文本设置为透明怎么办?文字为color:transparent可设置为透明。div{颜色:透明;background-clip:text;}效果如下:CodePenDemo-background-clip:text通过设置文本透明,会出现原来div的背景,裁剪除文本以外的区域。这就是background-clip:text所做的。所以,对于上面的效果,我们只需要实现一个从透明到渐变色到透明的渐变背景,随着鼠标的滚动移动背景的background-position即可!有了上面的铺垫,我们就可以轻松实现苹果官网的上述文字效果了。(如果先不考虑滚动的话)看代码:

新的智能iPhone玩法来了。旨在挽救生命的主要新安全功能。创新的48兆像素主摄像头让每个细节都脱颖而出。iPhone芯片中还有速度之王,为一切提供强大的驱动力。

.g-wrap{背景:#000;p{宽度:800px;颜色:透明;背景:线性渐变(-4deg,透明,透明25%,#ffb6ff,#b344ff,透明75%,透明);背景剪辑:文本;背景大小:100%400%;背景位置:中心0;动画:textScroll6s无限线性交替;}}@keyframestextScroll{100%{背景位置:中心100%;}}我们这里的核心是使用linear-gradient(-4deg,transparent,transparent25%,#ffb6ff,#b344ff,transparent75%,transparent)的渐变背景实??现一个从透明到透明到透明的渐变背景用背景剪辑:文本。然后用动画控制背景的background-position,这样就实现了一个文字淡入淡出的文字动画:CodePenDemo--iPhone14ProTextAnimation|background-clip:text使用mix-blend-mode实现上面的这个方法很不错,这里再介绍一种使用mix-blend-mode实现的方法。假设,我们首先实现这样一个黑白文本的结构:AsmartnewwaytoplaytheiPhoneiscoming。旨在挽救生命的主要新安全功能。创新的48兆像素主摄像头让每个细节都脱颖而出。iPhone芯片中还有速度之王,为一切提供强大的驱动力。
.text{颜色:#fff;background:#000;}然后实现这样一个渐变背景,从黑色到渐变色(#ffb6ffto#b344ff)再到黑色渐变色:A智能的新玩iPhone方式来了。旨在挽救生命的主要新安全功能。创新的48兆像素主摄像头让每个细节都脱颖而出。iPhone芯片中还有速度之王,为一切提供强大的驱动力。
.text{位置:相对;颜色:#fff;背景:#000;}.bg{位置:绝对;顶部:0;左:0;右:0;宽度:100%;高度:400%;背景:线性渐变(-3deg,#000,#00025%,#ffb6ff30%,#ffb6ff,#b344ff,#b344ff70%,#00075%,#000);}.bg看起来像这样。与.text相比,它的高度是它的4倍:这两个图形叠加起来会怎样?应该没有太大的化学反应:我们给.bg加一个上下移动的动画,看看效果:好像什么都没有?文本也被阻止。但!如果我们这里使用上混合模式,效果会完全不同。在这里,我们将使用mix-blend-mode:darken。.bg{//...mix-blend-mode:darken}再看看效果:哇,借助不同的混合模式,我们可以实现不同的颜色叠加效果。这里mix-blend-mode:darken的作用是只有白色文字部分会显示上层.bg的颜色,而黑色背景部分和上层背景叠加的颜色还是黑色,类似到背景剪辑:文本。简单的用overflow:hidden把.text元素外面的背景运动剪掉,整个动画就实现了。完整代码如下:一种智能的iPhone新玩法来了。旨在挽救生命的主要新安全功能。创新的48兆像素主摄像头让每个细节都脱颖而出。iPhone芯片中还有速度之王,为一切提供强大的驱动力。.g-wrap{宽度:100vw;高度:100vh;背景:#000;.text{位置:相对;颜色:透明;颜色:#fff;背景:#000;溢出:隐藏;}.bg{位置:绝对;顶部:0;左:0;右:0;宽度:100%;高度:400%;背景:线性渐变(-3deg,#000,#00025%,#ffb6ff30%,#ffb6ff,#b344ff,#b344ff70%,#00075%,#000);混合混合模式:变暗;动画:textScroll6s无限线性交替;}}@keyframestextScroll{100%{transform:translate(0,-75%);}}这样,借助混合模式,我们也实现了标题的文字效果:CodePenDemo--iPhone14ProTextAnimation|mix-Blend-mode结合滚动来实现动画当然,原来动画的实现是通过结合页面的滚动来实现的。之前介绍过最新的CSS特性@scroll-timeline,比如这两篇文章:革命性的创新,动画杀手@scroll-timeline超酷的过渡动画?CSS轻松搞定!@scroll-timeline可以设置动画的开始和结束由滚动容器内的滚动进度决定,而不是时间。也就是说,我们可以定义一个动画效果,它的开始和结束可以通过滚动容器来控制。但!可悲的是,这么好的特性最近被规范抛弃了,不再推荐:在这里,我们使用传统的方法,所以必须使用JavaScript。JavaScript结合滚动的部分不是本文的重点。对于带有动画时间轴的页面滚动,我们通常使用GSAP。结合上面的混合模式方法,很容易得到结合页面滚动的完整代码:智能iPhone新玩法来了。旨在挽救生命的主要新安全功能。创新的48兆像素主摄像头让每个细节都脱颖而出。iPhone芯片中还有速度之王,为一切提供强大的驱动力。.g-wrap{位置:固定;顶部:0;左:0;显示:弹性;宽度:100vw;高度:100vh;背景:#000;.text{位置:相对;宽度:800px;颜色:#fff;背景:#000;溢出:隐藏;}.bg{位置:绝对;顶部:0;左:0;右:0;宽度:100%;高度:400%;背景:线性渐变(-3deg,#000,#00025%,#ffb6ff,#b344ff,#00075%,#000);混合混合模式:变暗;}}.g-scroll{位置:相对;宽度:100vw;height:400vw;}gsap.timeline({scrollTrigger:{trigger:".g-scroll",开始:"toptop",end:"bottombottom",scrub:1}}).fromTo(".bg",{y:0},{y:"-75%"},0);可以看到,唯一不同的是gsap.timeline结合滚动容器触发动画效果如下:CodePenDemo--iPhone14ProTextAnimation|GSAP最后,本文到此结束,希望本文对大家有所帮助有帮助:)更多精彩的CSS技术文章汇总在我的Github——iCSS,持续更新中。欢迎点个星订阅收藏。有什么问题或者建议可以多交流。原创文章文笔有限,知识匮乏。如果文章中有任何不准确的地方,请告诉我。