美文网首页程序员
CSS聚光灯效果

CSS聚光灯效果

作者: yong_zai | 来源:发表于2020-10-21 18:37 被阅读0次

    效果图如下

    主要思路

    • 使用::after创建与原文本同区域位置的文字
    • clip-path ellipse 裁剪创建元素的可显示区域
    • 动画执行裁剪区域
    • background-clip:text 以区块内的文字作为裁剪区域向
      外裁剪,文字的背景即为区块的背景,文字之外的区
      域都将被裁剪掉,将文字设置为 transparent

    代码如下

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>focus</title>
        <style>
            html {
                font-size: 15px;
            }
            body {
                background-color: #222;
                display: flex;
                justify-content: center;
                align-items: center;
                min-height: 90vh;
            }
            h1 {
                color: #333;
                font-family: Helvetica;
                margin: 0;
                padding: 0;
                font-size: 8rem;
                letter-spacing: -0.3rem;
                position: relative;
            }
    
            h1::after {
                content: attr(data-spotlight);
                color: transparent;
                position: absolute;
                top: 0;
                left: 0;
                -webkit-clip-path: ellipse(100px 100px at 0% 50%);
                clip-path: ellipse(100px 100px at 0% 50%);
                animation: spotlight 5s infinite;
                background-image: url(https://images.unsplash.com/photo-1579547621869-0ddb5f237392?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=60);
                background-size: 150%;
                background-position: center center;
                -webkit-background-clip: text;
                background-clip: text;
            }
    
            @keyframes spotlight {
                0% {
                    -webkit-clip-path: ellipse(100px 100px at 0% 50%);
                    clip-path: ellipse(100px 100px at 0% 50%);
                }
                50% {
                    -webkit-clip-path: ellipse(100px 100px at 100% 50%);
                    clip-path: ellipse(100px 100px at 100% 50%);
                }
                100% {
                    -webkit-clip-path: ellipse(100px 100px at 0% 50%);
                    clip-path: ellipse(100px 100px at 0% 50%);
                }
            }
        </style>
    </head>
    
    <body>
    
        <h1 data-spotlight="codingchangelife">codingchangelife</h1>
    
    </body>
    
    </html>
    

    相关文章

      网友评论

        本文标题:CSS聚光灯效果

        本文链接:https://www.haomeiwen.com/subject/tlmemktx.html