1、让容器居中,同时将body背景变成灰色,可以看得更清楚:
html,body{ height:100%; } body{ display: flex; justify-content: center; align-items: center; background-color: #eee; }2、画一个蓝色渐变圆形,作为外边的蓝色环(现在还是圆,不是环),相对定位,这样里面的所有元素都可以以它为定位点了:
.logo{ width: 300px; height:300px; background: linear-gradient(to right bottom,#66adff,#1a6adb); border-radius: 999px; position: relative; } <div class="logo"></div>效果图:
3、给 logo 的 after 上个灰色,做出镂空效果:
.logo:after{ position: absolute; width: 150px; height: 150px; content:''; background-color: #eee; border-radius: 999px; z-index: 15; left: 50%; top:50%; margin-left: -75px; margin-top:-75px; }效果图:
4、给 logo 的 before 加上渐变背景,渐变色和 logo 一样,只不过颜色反过来,这样有凹陷的感觉,同时将它治愈 after 的下面,比 after 稍微大点:
.logo:before{ position: absolute; width: 166px; height: 166px; content:''; background: linear-gradient(to right bottom,#1a6adb,#66adff); border-radius: 999px; z-index: 9; left: 50%; top:50%; margin-left: -83px; margin-top:-83px; }效果图:
5、由于边框不支持渐变,我们只能接着加div,来画出刚才的 before 的高光:
.before-high-light{ position: absolute; width: 168px; height: 168px; content:''; background: linear-gradient(to right bottom,#96d9ff,#5cafff,#96d9ff); border-radius: 999px; z-index: 8; left: 50%; top:50%; margin-left: -84px; margin-top:-84px; } <div class="logo"> <div class="before-high-light"></div> </div>效果图:
6、画左上角的大片高光,它是被遮挡在中间圆的下面,所以,z-index要更低,同时它的颜色是从半透明的白色到无,大小要比 logo 小个一两像素:
.left-top-high-light{ position: absolute; width: 298px; height: 298px; content:''; background: linear-gradient(to right bottom,rgba(255,255,255,.8),rgba(255,255,255,0) 50%); border-radius: 999px; z-index: 7; left: 50%; top:50%; margin-left: -149px; margin-top:-149px; } <div class="logo"> <div class="before-high-light"></div> <div class="left-top-high-light"></div> </div>效果图:
7、画云,一共三朵,放在右下角,白色背景,利用内阴影,给云上色(放在chrome调整,这块比较麻烦,需要细细调),由于css容器样式的局限性,不能让云成为一个整体,建议这类可以考虑用svg或者canvas实现,我这里还是用div来实现:
.clouds{ position: absolute; width: 90px; height: 90px; background-color: #fff; border-radius: 999px; z-index: 16; bottom: 20px; right:60px; box-shadow: -3px 15px 12px 0 rgba(42,127,236,.3) inset; } .clouds:before{ content:''; position: absolute; width: 100px; height: 70px; background-color: #fff; border-radius: 999px; bottom: -20px; left:-30px; box-shadow: 5px -5px 8px 0 rgba(42,127,236,.3) inset; } .clouds:after{ content:''; position: absolute; width: 123px; height: 60px; background-color: #fff; border-radius: 0 999px 999px 0; bottom: -20px; right:-30px; box-shadow: -16px -9px 11px 0 rgba(42,127,236,.3) inset; } <div class="logo"> <div class="before-high-light"></div> <div class="left-top-high-light"></div> <div class="clouds"></div> </div>效果图:
8、左下角,云之下的高光,这个高光容器,宽高为 logo 的一半,左下角为全圆角,其他三个角可以不设置圆角,z-index 置于前面所有内容的下面,logo 的上面,背景为从左上到右下,从无到有的白色渐变,如果觉得太生硬,可以稍微给点羽化:
.left-bottom-high-light{ position: absolute; width: 150px; height: 150px; content:''; background: linear-gradient(to right bottom,rgba(255,255,255,0) 50%,rgba(255,255,255,1) 70%); border-radius:0 0 0 999px; z-index: 14; left:0; bottom:0; filter: blur(1px); } <div class="logo"> <div class="before-high-light"></div> <div class="left-top-high-light"></div> <div class="clouds"></div> <div class="left-bottom-high-light"></div> </div>效果图:
9、底部阴影 shadow,可以用背景色+羽化来实现,也可以用 box-shadow 来实现,这里我们用第一种方法:
.shadow{ position: absolute; width:200px; height:10px; content:''; background:#666; border-radius:50%; z-index: 1; left: 50%; bottom:-3px; margin-left: -100px; filter: blur(4px); } <div class="logo"> <div class="before-high-light"></div> <div class="left-top-high-light"></div> <div class="clouds"></div> <div class="left-bottom-high-light"></div> <div class="shadow"></div> </div>效果图:
10、顶部高光 high-light,实现方法和上面的阴影一样:
.high-light{ position: absolute; width:100px; height:20px; content:''; background:rgba(255,255,255,.9); border-radius:50%; z-index: 15; left: -8px; top: 33px; filter: blur(4px); transform: rotate(-45deg); } <div class="logo"> <div class="before-high-light"></div> <div class="left-top-high-light"></div> <div class="clouds"></div> <div class="left-bottom-high-light"></div> <div class="shadow"></div> <div class="high-light"></div> </div>最终效果图: