1,首先是 html 部分,只是用一个div
<div></div>
2,css样式
首先是基础样式,全局取消内外边距以及使用的盒子模型
给body设置flex布局 display: flex; align-items: center; justify-content: center; min-height: 100vh;,使得内容水平垂直居中,这个动画就是旋转,可有可无
然后就是对div盒子写一下基本样式了,宽高背景颜色,因为子绝父相,所以添加了相对定位 position: relative;,border-radius: 110px;处理圆角,🆗,look look
*{ margin: 0; padding: 0; box-sizing: border-box; } body{ display: flex; align-items: center; justify-content: center; min-height: 100vh; animation: d3 15s infinite; perspective: 2000px; } div{ position: relative; width: 300px; height: 300px; background-color: #ff6a00; border-radius: 110px; }
关于这个一个盒子实现logo,就是通过这一个盒子的伪元素来实现,所以主要学习内容就是伪元素的使用,以及阴影的妙用,好,🆗
注意:
html都可以使用伪元素,使用伪元素时必须有content: "";,没有内容就写空,这句必不可少,否则不生效
阴影box-shadow: offset-x offset-y blur spread color position; 当不给blur spread 这两个参数时,就像一个有宽高有背景颜色的盒子一样,利用这点对它进行叠加微调,就能实现啦!🚀
div::before{ content: ""; display: block; position: absolute; width: 88px; height: 110px; top: 84px; left: 45px; border:solid #fff; border-left-width: 30px; border-right-width: 30px; border-top-width: 26px; border-radius: 3px; border-top-right-radius: 42px; border-bottom-width: 0; } div::after{ content: ""; display: block; position: absolute; width: 30px; height: 35px; top: 125px; left: 105px; background-color: #fff; border-radius: 3px; box-shadow: 0 30px #fff, 0 56px #fff, 120px -30px #fff, 120px -43px #fff, 120px 0 #fff, 120px 30px #fff, 120px 56px #fff; } @keyframes d3{ 0%,100%{ transform: rotate3d(0,1,0,0deg); } 50%{ transform: rotate3d(0,1,0,360deg); } }
完整代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>小米 logo</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { display: flex; align-items: center; justify-content: center; min-height: 100vh; animation: d3 15s infinite; perspective: 2000px; } div { position: relative; width: 300px; height: 300px; background-color: #ff6a00; border-radius: 110px; } div::before { content: ""; display: block; position: absolute; width: 88px; height: 110px; top: 84px; left: 45px; border: solid #fff; border-left-width: 30px; border-right-width: 30px; border-top-width: 26px; border-radius: 3px; border-top-right-radius: 42px; border-bottom-width: 0; } div::after { content: ""; display: block; position: absolute; width: 30px; height: 35px; top: 125px; left: 105px; background-color: #fff; border-radius: 3px; box-shadow: 0 30px #fff, 0 56px #fff, 120px -30px #fff, 120px -43px #fff, 120px 0 #fff, 120px 30px #fff, 120px 56px #fff; } @keyframes d3 { 0%, 100% { transform: rotate3d(0, 1, 0, 0deg); } 50% { transform: rotate3d(0, 1, 0, 360deg); } } </style> </head> <body> <div></div> </body> </html>