僅僅使用div做爲身體的佈局,用css3的各類transform和圓角屬性來繪製各部位的形狀,固然也不會使用任何圖片哦。那就沒意思了。
有的同窗說,用canvas不是能畫得更逼真並且更簡單嗎?這點我也很是贊同,但個人理由仍是,那就沒意思了。css
此次寫的詳細一點,把各個部位都拆出來分析。css3
GitHub傳送門:https://github.com/lancer07/css3Ultramangit
<header></header>
.ultraman header { border: 7px solid #000; border-top: 15px solid #000; width: 200px; height: 200px; border-radius: 50% 50% 60% 60%; position: absolute; background: #fff; }
<header> <div class="hair"></div> </header>
.ultraman header .hair { position: absolute; top: -40px; left: 80px; width: 0; height: 0; border-left: 20px solid transparent; border-right: 20px solid transparent; border-top: 140px solid #000; border-radius: 30% 30% 50% 50%; }
<header> <div class="hair"></div> <div class="left_eye"></div> <div class="right_eye"></div> </header>
由於我是用less寫的嘛,因此先定義了一個眼睛的類,而後再生成2個眼睛github
.eye(@l,@r,@deg){ border:5px solid #000; width:70px; height:70px; background:#ffc30a; border-radius:@l @r; transform:rotate(@deg); position:absolute; top:60px; } .left_eye{ .eye(50%,80%,-15deg); left:10px; } .right_eye{ .eye(80%,50%,15deg); right:10px; }
<header> <div class="hair"></div> <div class="left_eye"></div> <div class="right_eye"></div> <div class="left_ear"></div> <div class="right_ear"></div> </header>
.ear(@deg){ width:20px; height:50px; border:5px solid #000; position:absolute; top:70px; z-index:-1; transform:rotate(@deg); background:#fff; } .left_ear{ .ear(-7deg); left:-20px } .right_ear{ .ear(7deg); right:-20px }
<div class="body"> <div class="light"><span></span></div> </div>
身上有個燈,時間到了,會嘀嘟嘀嘟叫的,因此加一個動畫效果canvas
@keyframes jump{ 0%{ background:#48e1e7; } 50%{ background:#961e1e; } 100%{ background:#48e1e7; } } .body{ width:100px; height:80px; background:#fff; border:7px solid #000; position:absolute; top:180px; left:50px; border-radius:0 0 20% 20%; z-index:-1; .light{ width:40px; height:40px; border:3px solid #000; position:relative; top:20px; left:30px; background:red; transform:rotate(-45deg); span{ width:8px; height:8px; border:2px solid #000; background:#48e1e7; display:block; position:absolute; left:3px; top:26px; border-radius:50%; z-index:2; animation:jump 0.5s infinite; } } }
<div class="left_hand"></div> <div class="right_hand"></div>
手只要旋轉一下就行了,比出一個十字less
.hand{ width:30px; height:100px; border-radius:60% 60% 50% 50%; border:7px solid #000; position:absolute; background:#fff; } .left_hand{ .hand; top:160px; left:30px; } .right_hand{ .hand; top:160px; left:90px; transform:rotate(-90deg); }
<div class="trousers"></div>
.trousers{ border:7px solid #000; position:absolute; background:red; width:100px; height:45px; top:240px; left:50px; z-index:-2; border-radius:0 0 15% 15%; }
<div class="left_footer"></div> <div class="right_footer"></div> <div class="egg"></div>
至於egg是什麼, 我就不贅述了。佈局
.footer{ width:34px; height:80px; border-radius:50% 50% 60% 60%; border:7px solid #000; position:absolute; background:#fff; z-index:-3; } .left_footer{ .footer; left:46px; top:260px; transform:rotate(20deg); } .right_footer{ .footer; right:20px; top:270px; transform:rotate(-50deg); } .egg{ background:#75d8f9; width: 18px; height: 30px; top: 286px; left: 97px; position: absolute; border-radius: 50%; border-top:7px solid #000; }
歡迎你們吐槽動畫