• 技术文章 >web前端 >css教程

    视频演示:如何用CSS 创作一颗逼真的土星 ?(附代码)

    php是最好的语言php是最好的语言2018-07-30 14:22:05原创982
    1.png

    效果预览

    按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

    https://codepen.io/comehope/pen/EpbaQX

    可交互视频

    此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

    请用 chrome, safari, edge 打开观看。

    https://scrimba.com/p/pEgDAM/cBdyeTw

    代码解读

    定义 dom,容器本身表示土星星球,其中的 ring 元素表示土星环:

    <p class="saturn">
            <span class="rings"></span>
        </p>

    居中显示:

    body {
        margin: 0;
        height: 100vh;
        display: flex;
        align-items: center;
        justify-content: center;
        background-color: black;
    }

    定义容器尺寸:

    .saturn {
        width: 20em;
        height: 20em;
        font-size: 20px;
    }

    画出土星星球(此为草稿,后面还会细化):

    .saturn {
        position: relative;
    }
    
    .saturn::before,
    .saturn::after {
        content: '';
        position: absolute;
        width: 9em;
        height: 9em;
        background: linear-gradient(
            palegoldenrod 0%,
            tan 10%,
            burlywood 30%,
            palegoldenrod 60%,
            darkgray 100%
        );
        border-radius: 50%;
        left: calc((20em - 9em) / 2);
        top: calc((20em - 9em) / 2);
    }

    画出土星环(此为草稿,后面还会细化):

    .rings {
        position: absolute;
        width: inherit;
        height: inherit;
        background: radial-gradient(
            transparent 35%,
            dimgray 40%,
            slategray 50%,
            transparent 60%,
            dimgray 60%,
            slategray 70%,
            transparent 70%
        );
    }

    改变观察土星环的视角:

    .rings {
        transform: rotateX(75deg);
    }

    为了使土星呈现被土星环环绕的效果,把土星分为上下两半,使它们和土星环的图层顺序从底到顶依次为:星球的下半部、土星环、星球的上半部:

    .saturn::before {
        clip-path: inset(50% 0 0 0);
    }
    
    .saturn::after {
        clip-path: inset(0 0 50% 0);
    }

    至此,画出了土星的整体结构,接下来完善细节。
    为土星环涂上丰富的渐变色:

    .rings {
        background: radial-gradient(
            rgba(24,19,25,0) 0%,
            rgba(53,52,51,0) 34%,
            rgba(55,54,52,1) 36%,
            rgba(56,55,53,1) 37%,
            rgba(68,67,66,1) 38%,
            rgba(56,55,53,1) 39%,
            rgba(68,67,66,1) 40%,
            rgba(56,55,53,1) 41%,
            rgba(87,77,76,1) 42%,
            rgba(87,77,76,1) 44%,
            rgba(113,110,103,1) 46%,
            rgba(113,110,103,1) 48%,
            rgba(113,98,93,1) 49%,
            rgba(113,98,93,1) 51%,
            rgba(122,115,105,1) 52%,
            rgba(113,98,93,1) 53%,
            rgba(113,98,93,1) 54%,
            rgba(122,115,105,1) 55%,
            rgba(106,99,89,1) 56%,
            rgba(106,99,89,1) 58%,
            rgba(79,76,76,0) 60%,
            rgba(65,64,70,1) 61%,
            rgba(65,64,70,1) 62%,
            rgba(90,85,89,1) 63%,
            rgba(78,74,73,1) 65%,
            rgba(78,73,74,1) 67%,
            rgba(78,73,74,0) 68%,
            rgba(78,73,75,1) 69%,
            rgba(78,73,75,1) 70%,
            rgba(78,73,76,0) 71%,
            rgba(77,72,76,0) 72%,
            rgba(24,19,25,0) 100%
        );
    }

    为星球涂上丰富的渐变色:

    .saturn::before,
    .saturn::after {
        background:
            linear-gradient(
                rgba(212,203,174,1) 0%,
                rgba(212,203,174,1) 10%,
                rgba(221,203,157,1) 15%,
                rgba(221,203,157,1) 17%,
                rgba(213,181,143,1) 22%,
                rgba(213,181,143,1) 26%,
                rgba(208,180,158,1) 32%,
                rgba(208,180,158,1) 36%,
                rgba(218,188,162,1) 37%,
                rgba(218,188,162,1) 39%,
                rgba(211,184,157,1) 41%,
                rgba(211,184,157,1) 49%,
                rgba(205,186,156,1) 51%,
                rgba(205,186,156,1) 52%,
                rgba(202,176,153,1) 53%,
                rgba(202,176,153,1) 65%,
                rgba(190,177,145,1) 68%,
                rgba(190,177,145,1) 80%,
                rgba(150,144,130,1) 91%,
                rgba(150,144,130,1) 95%,
                rgba(131,129,117,1) 97%,
                rgba(131,129,117,1) 100%
            );
    }

    再为星球增加光照效果:

    .saturn::before,
    .saturn::after {
        background:
            radial-gradient(
                circle at top, 
                transparent 40%,
                black
            ),
            radial-gradient(
                transparent 62%,
                black
            ),
            linear-gradient(
                rgba(212,203,174,1) 0%,
                rgba(212,203,174,1) 10%,
                rgba(221,203,157,1) 15%,
                rgba(221,203,157,1) 17%,
                rgba(213,181,143,1) 22%,
                rgba(213,181,143,1) 26%,
                rgba(208,180,158,1) 32%,
                rgba(208,180,158,1) 36%,
                rgba(218,188,162,1) 37%,
                rgba(218,188,162,1) 39%,
                rgba(211,184,157,1) 41%,
                rgba(211,184,157,1) 49%,
                rgba(205,186,156,1) 51%,
                rgba(205,186,156,1) 52%,
                rgba(202,176,153,1) 53%,
                rgba(202,176,153,1) 65%,
                rgba(190,177,145,1) 68%,
                rgba(190,177,145,1) 80%,
                rgba(150,144,130,1) 91%,
                rgba(150,144,130,1) 95%,
                rgba(131,129,117,1) 97%,
                rgba(131,129,117,1) 100%
            );
    }

    最后,把画面旋转一点角度:

    .saturn {
        transform: rotate(-15deg);
    }

    大功告成!

    相关文章:

    CSS秘密花园: 逼真的文本效果

    用css制作星级评分_经验交流

    相关视频:

    CSS 导航栏制作教程

    以上就是视频演示:如何用CSS 创作一颗逼真的土星 ?(附代码)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:特效 css3 css html5 前端
    上一篇:css-border属性的用法:利用css border属性制作一个三角形 下一篇:什么是CSS变量?CSS变量的学习:CSS变量的继承&作用域
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• css3怎样实现不是直角的菱形效果• css样式中有文字描边吗• 12个值得收藏的 CSS 技巧!!• css中圆角属性值能用百分比吗• css3怎样实现翻转2次效果
    1/1

    PHP中文网