当前位置: 首页 > 科技观察

聊一聊苹果官网滚动文字特效实现

时间:2023-03-18 22:28:21 科技观察

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

Clip
效果如下:CodePenDemo[2]。使用background-clip:text我们稍微修改上面的代码,添加background-clip:text:div{font-size:180px;字体粗细:粗体;颜色:深粉色;background:url($img)no-repeatcenter中心;背景尺寸:封面;background-clip:text;}效果如下:看到这里,可能有人会疑惑,这是什么东西,这不就是设置文字的颜色属性吗。将文字设置为透明color:transparent别担心!当然,还有更有趣的。因为上面设置了文字的颜色,遮挡了div块的背景。如果文本设置为透明怎么办?文字是color:transparent,可以设置为透明。div{颜色:透明;background-clip:text;}效果如下:CodePenDemo-background-clip:text[3]。通过设置文字透明,会出现原来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|背景剪辑:文本[4]。使用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|混合混合模式[5]。结合滚动实现动画当然,原来动画的实现是通过结合页面的滚动来实现的。之前介绍过最新的CSS特性@scroll-timeline,比如这两篇文章:革命性的创新,动画杀手@scroll-timeline[6]。超酷的转场动画?CSS轻松搞定![7].@scroll-timeline可以设置动画的开始和结束由滚动容器内的滚动进度决定,而不是由时间决定。也就是说,我们可以定义一个动画效果,它的开始和结束可以通过滚动容器来控制。但!可悲的是,这么好的特性最近被规范抛弃了,不再推荐:在这里,我们使用传统的方法,所以必须使用JavaScript。JavaScript结合滚动的部分不是本文的重点。对于带有动画时间轴的页面滚动,我们通常使用GSAP。结合上面的混合模式方法,很容易得到结合页面滚动的完整代码:智能iPhone新玩法来了。旨在挽救生命的主要新安全功能。创新的48兆像素主摄像头让每个细节都脱颖而出。iPhone芯片中还有速度之王,为一切提供强大的驱动力。.g-wrap{位置:固定;顶部:0;左:0;显示:弹性;宽度:100vw;高度:100vh;背景:#000;.text{位置:相对;宽度:800px;颜色:#fff;背景:#000;溢出:隐藏;;顶部: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--iPhone14Pro文字动画|GSAP[8]。最后,本文到此结束,希望这篇文章对你有所帮助:)参考文献[1]iPhone14Pro:https://www.apple.com.cn/iphone-14-pro/。[2]CodePen演示:https://codepen.io/Chokcoco/pen/WjOBzB。[3]CodePen演示-背景剪辑:文本:https://codepen.io/Chokcoco/pen/oWwRmE。[4]CodePenDemo--iPhone14Pro文字动画|背景剪辑:文本:https://codepen.io/Chokcoco/pen/NWMoQXx。[5]CodePenDemo--iPhone14Pro文字动画|混合混合模式:https://codepen.io/Chokcoco/pen/jOxJLpM。[6]革命性创新,动画杀手@scroll-timeline:https://github.com/chokcoco/iCSS/issues/166。[7]超酷的转场动画?CSS轻松搞定!:https://github.com/chokcoco/iCSS/issues/191。[8]CodePenDemo--iPhone14Pro文字动画|GSAP:https://codepen.io/Chokcoco/pen/GRdzVXK。[9]Github——iCSS:https://github.com/chokcoco/iCSS。