css实现灯塔效果

代码语言:html

所属分类:布局界面

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title> CSS Lighthouse Scene</title>
    <style>
        html,
        body {
            height: 100%;
            width: 100%;
            padding: 0;
            margin: 0;
            overflow: hidden;
        }

        html {
            box-sizing: border-box;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        * {
            position: absolute;
        }

        *:before,
        *:after {
            content: "";
            position: absolute;
        }

        .scene {
            width: 100vw;
            height: 100vh;
        }

        .background {
            width: 100%;
            height: 100%;
            overflow: hidden;
            z-index: 1;
            background-color: #29284c;
            background-image: linear-gradient(#29284c 0%, #4c4b82 10%, #717ae1 60%, #75e2fa 90%);
        }

        .mountains {
            width: 100%;
            height: 250px;
            bottom: 65px;
            z-index: 3;
        }
        .mountains .mountain {
            width: 250px;
            height: 250px;
            right: 50px;
            bottom: -40px;
            background-color: #717ae1;
            -webkit-transform: rotate(45deg);
            transform: rotate(45deg);
            border-radius: 3px;
        }
        .mountains .mountain:after {
            width: 100%;
            height: 100%;
            opacity: 0.7;
            background-image: linear-gradient(135deg, #4c4b82 0%, #717ae1 20%, #75e2fa 40%);
        }
        .mountains .mountain:nth-child(2) {
            width: 240px;
            height: 240px;
            right: 220px;
            z-index: 2;
        }
        .mountains .mountain:nth-child(3) {
            width: 260px;
            height: 260px;
            right: 350px;
        }
        .mountains .mountain:nth-child(4) {
            width: 200px;
            height: 200px;
            right: 130px;
            bottom: -70px;
            z-index: 3;
        }
        .mountains .mountain:nth-child(4):after {
            background-image: linear-gradient(135deg, #4c4b82 0%, #717ae1 6%, #75e2fa 20%);
        }

        .sea {
            width: 100%;
            height: 170px;
            bottom: 0;
            left: 0;
            background: #29284c;
            background-image: linear-gradient(totop, #29284c 0%, #4c4b82 30%, #717ae1 60%, #75e2fa 90%);
            z-index: 4;
        }
        .sea .wave {
            height: 3px;
            background-color: #d6d9f6;
            border-radius: 100%;
            opacity: 0.2;
            -webkit-animation: wave5s linear infinite;
            animation: wave5s linear infinite;
        }
        .sea .wave:nth-of-type(1) {
            width: 82px;
            bottom: 80px;
            left: 8vw;
            opacity: 0.4;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .sea .wave:nth-of-type(2) {
            width: 139px;
            bottom: 98px;
            left: 55vw;
            opacity: 0.1;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .sea .wave:nth-of-type(3) {
            width: 63px;
            bottom: 139px;
            left: 84vw;
            opacity: 0.2;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .sea .wave:nth-of-type(4) {
            width: 82px;
            bottom: 49px;
            left: 86vw;
            opacity: 0.5;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .sea .wave:nth-of-type(5) {
            width: 132px;
            bottom: 1px;
            left: 58vw;
            opacity: 0.2;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .sea .wave:nth-of-type(6) {
            width: 81px;
            bottom: 18px;
            left: 24vw;
            opacity: 0.2;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .sea .wave:nth-of-type(7) {
            width: 113px;
            bottom: 161px;
            left: 41vw;
            opacity: 0.1;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .sea .wave:nth-of-type(8) {
            width: 104px;
            bottom: 93px;
            left: 100vw;
            opacity: 0.1;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .sea .wave:nth-of-type(9) {
            width: 100px;
            bottom: 63px;
            left: 85vw;
            opacity: 0.4;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .sea .wave:nth-of-type(10) {
            width: 98px;
            bottom: 58px;
            left: 99vw;
            opacity: 0.1;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .sea .wave:nth-of-type(11) {
            width: 102px;
            bottom: 17px;
            left: 39vw;
            opacity: 0.3;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .sea .wave:nth-of-type(12) {
            width: 119px;
            bottom: 15px;
            left: 64vw;
            opacity: 0.2;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .sea .wave:nth-of-type(13) {
            width: 116px;
            bottom: 91px;
            left: 88vw;
            opacity: 0.2;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .sea .wave:nth-of-type(14) {
            width: 96px;
            bottom: 140px;
            left: 52vw;
            opacity: 0.2;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .sea .wave:nth-of-type(15) {
            width: 134px;
            bottom: 102px;
            left: 44vw;
            opacity: 0.1;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .sea .wave:nth-of-type(16) {
            width: 132px;
            bottom: 72px;
            left: 92vw;
            opacity: 0.2;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .sea .wave:nth-of-type(17) {
            width: 117px;
            bottom: 163px;
            left: 31vw;
            opacity: 0.4;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .sea .wave:nth-of-type(18) {
            width: 116px;
            bottom: 99px;
            left: 42vw;
            opacity: 0.5;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .sea .wave:nth-of-type(19) {
            width: 136px;
            bottom: 41px;
            left: 11vw;
            opacity: 0.3;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .sea .wave:nth-of-type(20) {
            width: 119px;
            bottom: 161px;
            left: 21vw;
            opacity: 0.5;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .sea .wave:nth-of-type(21) {
            width: 125px;
            bottom: 89px;
            left: 19vw;
            opacity: 0.3;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .sea .wave:nth-of-type(22) {
            width: 124px;
            bottom: 109px;
            left: 80vw;
            opacity: 0.4;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .sea .wave:nth-of-type(23) {
            width: 93px;
            bottom: 35px;
            left: 45vw;
            opacity: 0.4;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .sea .wave:nth-of-type(24) {
            width: 146px;
            bottom: 6px;
            left: 86vw;
            opacity: 0.5;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .sea .wave:nth-of-type(25) {
            width: 124px;
            bottom: 67px;
            left: 47vw;
            opacity: 0.2;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .sea .wave:nth-of-type(26) {
            width: 150px;
            bottom: 101px;
            left: 95vw;
            opacity: 0.3;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .sea .wave:nth-of-type(27) {
            width: 149px;
            bottom: 6px;
            left: 37vw;
            opacity: 0.5;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .sea .wave:nth-of-type(28) {
            width: 54px;
            bottom: 25px;
            left: 13vw;
            opacity: 0.2;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .sea .wave:nth-of-type(29) {
            width: 66px;
            bottom: 139px;
            left: 91vw;
            opacity: 0.2;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .sea .wave:nth-of-type(30) {
            width: 149px;
            bottom: 29px;
            left: 92vw;
            opacity: 0.2;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }

        .boat {
            width: 90px;
            height: 90px;
            bottom: 90px;
            -webkit-animation: boat100s linear infinite;
            animation: boat100s linear infinite;
        }
        .boat:after {
            background-image: linear-gradient(90deg, rgba(214, 217, 246, 0.7) 30%, rgba(255, 255, 255, 0) 100%);
            width: 200px;
            height: 8px;
            top: 105px;
            left: 20px;
            border-radius: 40%;
            z-index: -1;
        }
        .boat:before {
            width: 92px;
            height: 50px;
            left: 25px;
            bottom: -70px;
            background-image: linear-gradient(tobottom, rgba(41, 40, 76, 0.8) 30%, rgba(41, 40, 76, 0) 100%);
            z-index: -1;
            -webkit-animation: boatShadow100s linear infinite;
            animation: boatShadow100s linear infinite;
        }
        .boat .base {
            width: 110px;
            height: 25px;
            bottom: -20px;
            -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 20% 100%);
            clip-path: polygon(0 0, 100% 0, 100% 100%, 20% 100%);
            background-color: #4c4b82;
        }
        .boat .sail:nth-child(1) {
            width: 90px;
            height: 80px;
            left: 5px;
            -webkit-clip-path: polygon(50% 0%, 0% 100%, 50% 100%);
            clip-path: polygon(50% 0%, 0% 100%, 50% 100%);
            background: linear-gradient(#b9befa 0%, #4c4b82 60%);
        }
        .boat .sail:nth-child(2) {
            width: 80px;
            height: 70px;
            left: 15px;
            bottom: 10px;
            -webkit-transform: scaleX(-1);
            transform: scaleX(-1);
            -webkit-clip-path: polygon(50% 0%, 0% 100%, 50% 100%);
            clip-path: polygon(50% 0%, 0% 100%, 50% 100%);
            background: linear-gradient(#b9befa 0%, #4c4b82 60%);
        }

        .moon {
            width: 80px;
            height: 80px;
            top: 25%;
            right: 10%;
            border-radius: 50%;
            z-index: 2;
            background-color: #d6d9f6;
            box-shadow: 0 0 10px #d6d9f6, 0 0 20px #d6d9f6, 0 0 30px #d6d9f6, 0 0 40px #d6d9f6, 0 0 50px #75e2fa, 0 0 100px #d6d9f6;
        }

        .stars {
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            z-index: 1;
        }
        .stars .star {
            border-radius: 50%;
            background-color: #b9befa;
            -webkit-animation: twinkle5s linear infinite;
            animation: twinkle5s linear infinite;
        }
        .stars .star:nth-of-type(1) {
            width: 2px;
            height: 2px;
            top: 89vh;
            left: 30vw;
            -webkit-animation-delay: 4s;
            animation-delay: 4s;
        }
        .stars .star:nth-of-type(2) {
            width: 2px;
            height: 2px;
            top: 94vh;
            left: 94vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(3) {
            width: 3px;
            height: 3px;
            top: 20vh;
            left: 70vw;
            -webkit-animation-delay: 5s;
            animation-delay: 5s;
        }
        .stars .star:nth-of-type(4) {
            width: 3px;
            height: 3px;
            top: 51vh;
            left: 88vw;
            -webkit-animation-delay: 4s;
            animation-delay: 4s;
        }
        .stars .star:nth-of-type(5) {
            width: 1px;
            height: 1px;
            top: 73vh;
            left: 89vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(6) {
            width: 3px;
            height: 3px;
            top: 54vh;
            left: 2vw;
            -webkit-animation-delay: 5s;
            animation-delay: 5s;
        }
        .stars .star:nth-of-type(7) {
            width: 3px;
            height: 3px;
            top: 49vh;
            left: 60vw;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .stars .star:nth-of-type(8) {
            width: 4px;
            height: 4px;
            top: 18vh;
            left: 20vw;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .stars .star:nth-of-type(9) {
            width: 3px;
            height: 3px;
            top: 34vh;
            left: 53vw;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .stars .star:nth-of-type(10) {
            width: 4px;
            height: 4px;
            top: 31vh;
            left: 24vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(11) {
            width: 3px;
            height: 3px;
            top: 45vh;
            left: 38vw;
            -webkit-animation-delay: 4s;
            animation-delay: 4s;
        }
        .stars .star:nth-of-type(12) {
            width: 2px;
            height: 2px;
            top: 92vh;
            left: 99vw;
            -webkit-animation-delay: 4s;
            animation-delay: 4s;
        }
        .stars .star:nth-of-type(13) {
            width: 2px;
            height: 2px;
            top: 8vh;
            left: 77vw;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .stars .star:nth-of-type(14) {
            width: 4px;
            height: 4px;
            top: 13vh;
            left: 45vw;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .stars .star:nth-of-type(15) {
            width: 3px;
            height: 3px;
            top: 37vh;
            left: 77vw;
            -webkit-animation-delay: 4s;
            animation-delay: 4s;
        }
        .stars .star:nth-of-type(16) {
            width: 2px;
            height: 2px;
            top: 31vh;
            left: 88vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(17) {
            width: 1px;
            height: 1px;
            top: 73vh;
            left: 3vw;
            -webkit-animation-delay: 4s;
            animation-delay: 4s;
        }
        .stars .star:nth-of-type(18) {
            width: 4px;
            height: 4px;
            top: 10vh;
            left: 41vw;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .stars .star:nth-of-type(19) {
            width: 2px;
            height: 2px;
            top: 98vh;
            left: 37vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(20) {
            width: 3px;
            height: 3px;
            top: 100vh;
            left: 78vw;
            -webkit-animation-delay: 4s;
            animation-delay: 4s;
        }
        .stars .star:nth-of-type(21) {
            width: 4px;
            height: 4px;
            top: 41vh;
            left: 35vw;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .stars .star:nth-of-type(22) {
            width: 4px;
            height: 4px;
            top: 32vh;
            left: 48vw;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .stars .star:nth-of-type(23) {
            width: 2px;
            height: 2px;
            top: 55vh;
            left: 85vw;
            -webkit-animation-delay: 4s;
            animation-delay: 4s;
        }
        .stars .star:nth-of-type(24) {
            width: 1px;
            height: 1px;
            top: 65vh;
            left: 17vw;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .stars .star:nth-of-type(25) {
            width: 4px;
            height: 4px;
            top: 58vh;
            left: 6vw;
            -webkit-animation-delay: 5s;
            animation-delay: 5s;
        }
        .stars .star:nth-of-type(26) {
            width: 3px;
            height: 3px;
            top: 32vh;
            left: 77vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(27) {
            width: 1px;
            height: 1px;
            top: 74vh;
            left: 37vw;
            -webkit-animation-delay: 4s;
            animation-delay: 4s;
        }
        .stars .star:nth-of-type(28) {
            width: 4px;
            height: 4px;
            top: 58vh;
            left: 91vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(29) {
            width: 1px;
            height: 1px;
            top: 3vh;
            left: 30vw;
            -webkit-animation-delay: 5s;
            animation-delay: 5s;
        }
        .stars .star:nth-of-type(30) {
            width: 4px;
            height: 4px;
            top: 93vh;
            left: 8vw;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .stars .star:nth-of-type(31) {
            width: 4px;
            height: 4px;
            top: 91vh;
            left: 41vw;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .stars .star:nth-of-type(32) {
            width: 2px;
            height: 2px;
            top: 97vh;
            left: 2vw;
            -webkit-animation-delay: 5s;
            animation-delay: 5s;
        }
        .stars .star:nth-of-type(33) {
            width: 4px;
            height: 4px;
            top: 42vh;
            left: 75vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(34) {
            width: 2px;
            height: 2px;
            top: 72vh;
            left: 70vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(35) {
            width: 4px;
            height: 4px;
            top: 92vh;
            left: 88vw;
            -webkit-animation-delay: 2s;
            animation-delay: 2s;
        }
        .stars .star:nth-of-type(36) {
            width: 2px;
            height: 2px;
            top: 74vh;
            left: 100vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(37) {
            width: 1px;
            height: 1px;
            top: 94vh;
            left: 56vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(38) {
            width: 2px;
            height: 2px;
            top: 16vh;
            left: 75vw;
            -webkit-animation-delay: 5s;
            animation-delay: 5s;
        }
        .stars .star:nth-of-type(39) {
            width: 4px;
            height: 4px;
            top: 6vh;
            left: 12vw;
            -webkit-animation-delay: 4s;
            animation-delay: 4s;
        }
        .stars .star:nth-of-type(40) {
            width: 1px;
            height: 1px;
            top: 5vh;
            left: 13vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(41) {
            width: 4px;
            height: 4px;
            top: 55vh;
            left: 33vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(42) {
            width: 2px;
            height: 2px;
            top: 26vh;
            left: 22vw;
            -webkit-animation-delay: 1s;
            animation-delay: 1s;
        }
        .stars .star:nth-of-type(43) {
            width: 2px;
            height: 2px;
            top: 89vh;
            left: 29vw;
            -webkit-animation-delay: 3s;
            animation-delay: 3s;
        }
        .stars .star:nth-of-type(44) {
            width: 1px;
            height: 1px;
            top: 41vh;
            left: 41vw;
            -webkit-animation-delay: 5s;
            animation-delay: 5s;
        }
        .stars .star:nth-of-type(45) {
            width: 4px;
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0