您的位置: 首页 >日志>前端技术>详细内容

前端技术

纯css制作的满天繁星

来源:本站原创 发布时间:2023-01-03 15:31:36 浏览次数: 【字体:

 最近看到一个纯css制作的满天繁星的demo效果,非常震撼,下载源码,学习了下,重新认识了css一些元素的属性的使用;效果如下:

53f92154eac14190b7e801edd12f81e8.gif

我们先来看下它的html结构:

整体html结构比较简单,.dwo是最外层容器,这里蓝色天空的渐变背景就是在最外层定义的;

.shooting-stars 是定义流星的结构,包含5个子级div;

.pyramids是三座山的结构;

.sky是星星的结构,由3个div组成,分别定义3种尺寸的星星;

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>CSS制作满天繁星效果演示</title>
    <link rel="stylesheet" href="style.css" />
</head>
<body>
    <div class="dwo">
       <div class="shooting-stars">
            <div class="shooting-star shooting-star-1"></div>
            <div class="shooting-star shooting-star-2"></div>
            <div class="shooting-star shooting-star-3"></div>
            <div class="shooting-star shooting-star-4"></div>
            <div class="shooting-star shooting-star-5"></div>
        </div>
      <div class="pyramids">
            <div class="pyramid pyramid-giza"></div>
            <div class="pyramid pyramid-Khafre"></div>
            <div class="pyramid pyramid-menkaure"></div>
        </div>
        <div class="sky">
            <div class="stars-small"></div>
            <div class="stars-medium"></div>
            <div class="stars-large"></div>
        </div>
    </div>
</body>
</html>

css样式比较复杂,这里就不一一列出来,我把重要的几点列出来,一起学习下;

知识点1、天空蓝色渐变背景的定义(椭圆形渐变)

    background-image: radial-gradient(ellipse at bottom, #1f7fc7, #041953);

知识点2、山的形状的定义(渐变背景和裁剪clip-path

background: linear-gradient(225deg, #0b385f, #000c16); clip-path: polygon(50% 0%, 10% 100%, 100% 100%);

知识点3、小星星的定义,星星有3种大小的,1px,2px,3px,这里以1px为例,通过box-shadow 属性,定义若干个阴影列表来实现多个星星;

.stars-small { 
    width: 1px;
    height: 1px;
    background: transparent;
    box-shadow: 397px 260px #fff, 704px 747px #fff, 600px 451px #fff, 561px 593px #fff,
        126px 41px #fff, 399px 955px #fff, 466px 843px #fff, 28px 493px #fff, 319px 147px #fff,
        7px 14px #fff, 201px 616px #fff, 581px 917px #fff, 691px 663px #fff, 197px 920px #fff,
        969px 486px #fff, 270px 522px #fff, 85px 695px #fff, 892px 248px #fff, 830px 330px #fff,
        20px 183px #fff, 388px 466px #fff, 977px 782px #fff, 682px 564px #fff, 122px 46px #fff,
        151px 885px #fff, 548px 482px #fff, 431px 677px #fff, 699px 421px #fff, 321px 155px #fff,
        562px 328px #fff, 487px 74px #fff, 36px 68px #fff, 344px 640px #fff, 317px 285px #fff,
        385px 917px #fff, 666px 409px #fff, 940px 875px #fff, 170px 528px #fff, 69px 463px #fff,
        760px 862px #fff, 659px 271px #fff, 775px 346px #fff, 741px 664px #fff, 425px 689px #fff,
        854px 301px #fff, 646px 210px #fff, 865px 958px #fff, 963px 301px #fff, 568px 635px #fff,
        771px 256px #fff, 166px 532px #fff, 850px 174px #fff, 273px 643px #fff, 267px 570px #fff,
        408px 270px #fff, 671px 159px #fff, 146px 148px #fff, 158px 45px #fff, 402px 188px #fff,
        878px 884px #fff, 660px 152px #fff, 365px 807px #fff, 671px 506px #fff, 303px 950px #fff,
        319px 791px #fff, 674px 583px #fff, 838px 266px #fff, 473px 199px #fff, 209px 162px #fff,
        176px 273px #fff, 767px 600px #fff, 724px 154px #fff, 12px 175px #fff, 136px 5px #fff,
226px 328px #fff, 710px 429px #fff, 722px 246px #fff, 791px 15px #fff, 388px 118px #fff;
}

知识点4,、小星星的动画效果

@keyframes sky-timelapse {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

知识点5、流星的定义

.shooting-star {
    position: relative;
    top: 100px;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background-color: #ffffff;
    transform: translate(150px, -150px);
    animation: shooting 1s ease-out forwards;
}
.shooting-star::after {
    content: '';
    position: absolute;
    top: 0;
    left: 2px;
    border: 2px solid #f00;
    border-width: 2px 150px 2px 150px;
    border-color: transparent transparent transparent #ffffff;
    transform: rotate(-45deg);
    transform-origin: 0% 100%;
}
.shooting-star-1 {
    left: 200px;
    animation-delay: 4s;
}
.shooting-star-2 {
    left: 480px;
    animation-delay: 6s;
}
.shooting-star-3 {
    left: 400px;
    animation-delay: 0s;
}
.shooting-star-4 {
    left: 200px;
    animation-delay: 10s;
}
.shooting-star-5 {
    left: 480px;
    animation-delay: 14s;
}
@keyframes shooting {
    0% {
        opacity: 0;
        transform: scale(0) translate(0, 0);
    }
    50% {
        opacity: 1;
        transform: scale(1) translate(-250px, 250px);
    }
    100% {
        opacity: 0;
        transform: scale(1) translate(-300px, 300px);
    }
}

学习参照网站 CSS制作满天繁星效果_dowebok

×

用户登录