zoukankan      html  css  js  c++  java
  • CSS filter 模拟黑洞照片效果

    今天被世界上第一张黑洞照片刷屏。

    一整天,哪里都是这张照片。看的多了。我就想用css做一个吧。

    建议在chrome上查看。

    访问地址:http://suohb.com/work/blankHole.html

    点击访问

    老规矩,先看效果:

    完成这种效果,就需要对图像进行虚化、模糊。

    刚好CSS有这个能力。那就是filter。

    基本上,filter这个样式有很多选项。这里。我们使用blur就足以满足此次效果。

    首先说一下思路。

    其实这个做起来相对简单,代码工作只是最少的一部分,想象力到了,代码很快就会实现。

    这个效果,按层次来分。一共四层

    1、黑洞主体红色主体部分

    2、黑洞背景红色虚化部分

    3、能量的高亮部分

    4、黑洞核心黑色部分。

    依次画出几个形状。然后blur就可以了。

    下边开始代码实现:

    一、先画出主体大致轮廓,我这里上下左右用了4个大小不一圆形 :

    然后filter:blur(20px),得到:

    这个主体内容就达成了。

    二、虚化的红色背景部分。

    主体周围杂乱放置一些透明底比较低的红色椭圆。

    然后blur(20px)

    三、黄色高光样式

    使用两个黄色椭圆。里边放两个白色的椭圆。

    filter:blur(12px)

    四、黑色中心部分,一个黑色的椭圆。blur(13px),效果完成。

    整体实现比较简单的。不过,你们想不想看看黑洞的不模糊的真实样子呢?

    铛铛铛铛,是不是很可爱。。

    更多特效,请关注我们公众号

    最后部分,是源代码:

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
      6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
      7     <title>黑洞</title>
      8     <style type="text/css">
      9         #box{
     10             position: relative;
     11             width: 200px;
     12             height: 200px;
     13             margin: 100px auto;
     14         }
     15         .red-box{
     16             position: absolute;
     17             left: 50px;
     18             top: 50px;
     19             width: 100px;
     20             height: 100px;
     21             filter: blur(20px);
     22             opacity: .7;
     23         }
     24         .red{
     25             position: absolute;
     26             width: 100%;
     27             height: 100%;
     28             border-radius: 50%;
     29             background: #f00;
     30         }
     31         .yellow-box{
     32             position: absolute;
     33             left: 50px;
     34             top: 50px;
     35             width: 80px;
     36             height: 80px;
     37             filter: blur(12px) brightness(1.1);
     38             animation: move 2s linear infinite;
     39         }
     40         .yellow{
     41             position: absolute;
     42             width: 100%;
     43             height: 100%;
     44             border-radius: 50%;
     45             background: yellow;
     46         }
     47         .white{
     48             position: absolute;
     49             left: 15px;
     50             top: 15px;
     51             width: 46px;
     52             height: 46px;
     53             border-radius: 50%;
     54             background: #FFF;
     55         }
     56         .blank-box{
     57             position: absolute;
     58             left: 70px;
     59             top: 60px;
     60             width: 60px;
     61             height: 60px;
     62             filter: blur(13px);
     63         }
     64         .blank{
     65             position: absolute;
     66             width: 100%;
     67             height: 100%;
     68             border-radius: 50%;
     69             background: #000;
     70         }
     71         @keyframes move{
     72             0%{
     73                 transform: translateX(0)
     74             }
     75             50%{
     76                 transform: translateX(3px)
     77             }
     78             100%{
     79                 transform: translateX(0)
     80             }
     81         }
     82     </style>
     83 </head>
     84 <body bgcolor="#000000">
     85     <div id="box">
     86         <div class="red-box" style="opacity: .2;">
     87             <div class="red" style="transform: rotate(-45deg) translateY(-150px) scaleX(.5);"></div>
     88             <div class="red" style="transform: rotate(-80deg) translateY(-120px) scaleX(.7);opacity: .6;"></div>
     89             <div class="red" style="transform: rotate(-130deg) translateY(-100px) scaleX(1);opacity: .6;"></div>
     90             <div class="red" style="transform: rotate(-180deg) translateY(-110px) scaleX(1);opacity: .6;"></div>
     91             <div class="red" style="transform: rotate(-230deg) translateY(-120px) scaleX(.8);opacity: .6;"></div>
     92             <div class="red" style="transform: rotate(-280deg) translateY(-130px) scaleX(.4);opacity: .6;"></div>
     93             <div class="red" style="transform: rotate(-340deg) translateY(-110px) scaleX(2);opacity: .8;"></div>
     94         </div>
     95         <div class="red-box" >
     96             <div class="red" style="transform:translateY(-25px) scale(1.25);"></div>
     97             <div class="red" style="transform:translateX(-40px) scale(1.1);"></div>
     98             <div class="red" style="transform:translateY(30px) scale(1.0);"></div>
     99             <div class="red" style="transform:translateX(50px) scale(1.0);"></div>
    100             <div class="red" style="transform: rotate(-45deg) translateY(-120px) scaleX(.4);opacity: .6;"></div>
    101         </div>
    102         <div class="yellow-box">
    103             <div class="yellow" style="transform:  rotate(-45deg) scaleX(.5);left:-30px;top:30px;">
    104                 <div class="white"></div>
    105             </div>
    106             <div class="yellow" style="transform:  rotate(45deg) scaleX(.6) scaleY(1.2);left:40px;top:25px;">
    107                 <div class="white"></div>
    108             </div>
    109         </div>
    110         <div class="blank-box">
    111             <div class="blank" style="transform:  rotate(14deg) scaleY(1.3) scaleX(1);"></div>
    112         </div>
    113     </div>
    114 
    115 </div>
    116 </body>
    117 </html>
  • 相关阅读:
    JSP学习笔记(一)
    【转】Key Presses
    【转】Event Driven Programming
    【转】Getting an Image on the Screen
    【转】Setting up SDL 2 on Visual Studio 2019 Community
    Windows定时任务copy到nfs目录
    DLL转存为IL文件及修改后重新生成DLL文件
    【转】Setting up SDL 2 on MinGW
    【转】Setting up SDL 2 on Code::Blocks 12.11
    【转】Setting up SDL on Windows
  • 原文地址:https://www.cnblogs.com/shb190802/p/10692939.html
Copyright © 2011-2022 走看看