vue1秒刷新一下div怎么写_用纯css3写一个大大的滑稽

前言

  其实这篇文章我很早就写好了,还在知乎的回答上引用过,这次单独发到知乎文章。

正文

  某天突发奇想,真的是一时来灵感,觉得可以用css写一个斜眼笑的表情,也就是已经被用烂了的滑稽,所以自己就试着写了一下,觉得效果还不错。怎么实现的呢?我是这样写的。
首先给这个滑稽写个圆:
html:

<div class="comical"></div> 


css:

.comical{width:200px; height:200px; background:#fd8; border:5px solid #ea5; border-radius:50%;}


为了让它更有立体感,给它加上阴影box-shadow:

 .comical{width:200px; height:200px; background:#fd8; border:5px solid #ea5; border-radius:50%; box-shadow:3px 8px 20px 2px rgba(0,0,0,0.3),0 0 20px 10px rgba(238,170,85,0.7) inset, -10px -20px 20px 20px rgba(244,151,58,0.3) inset;}


这样一个圆圆的金蛋就出来了。

d407a795d60579343e825772363376fd.png

然后加上嘴巴,这种弧形的图形可以通过border来实现,先在div.comical内添加元素:

<div class="comical">
  <div class="mouth"></div>
</div>


因为要用到定位,所以在其父元素div.comical的样式中要加上“position:relative”。


css:

.comical{width:200px; height:200px; background:#fd8; border:5px solid #ea5; border-radius:50%; box-shadow:3px 8px 20px 2px rgba(0,0,0,0.3),0 0 20px 10px rgba(238,170,85,0.7) inset, -10px -20px 20px 20px rgba(244,151,58,0.3) inset; position:relative;}
.mouth{width:160px; height:140px; border-bottom:6px solid #533; border-left:0px solid transparent; border-right:0px solid transparent; border-radius:50%/50%; position:absolute; bottom:25px; left:20px;}


这样就得到了弧形的嘴巴。

727ef55f4642da69b896618ee1b75b2e.png

接下来写眼睛,从图形上来看,这个需要做些复杂的处理。办法就是,可以定义一个使溢出部分隐藏起来的框:


html:

<div class="e2"></div>

css:

.e2{position:absolute; top:0; left:0; width:70px; height:70px; overflow:hidden;}


然后利用它的伪元素,在其中画一个圆角矩形:

.e2::before{content:""; width:300px; height:300px; position:absolute; border:5px solid #fb7; border-radius:120px;}

82d2cb3b40845584ba9b55f4f8170916.png

这样就可以得到一段弧线,然后复制一份,调整下位置,作为眼睛的上眼睑和下眼睑:


html:

<div class="e2"></div>
<div class="e3"></div>


css:

.e2{position:absolute; top:0; left:0; width:70px; height:70px; overflow:hidden;}
.e3{position:absolute; top:14px; left:14px; width:65px; height:65px; overflow:hidden;}
.e2::before, .e3::before{content:""; width:300px; height:300px; position:absolute; border:5px solid #fb7; border-radius:120px;}

d6328e10ef36b197d24cbfde5c4be6ec.png

接着需要两个小半圆来填补左右两边:

html:

<div class="e4"></div>
<div class="e5"></div>

css:

.e4{position:absolute; top:72px; left:9px; width:24px; height:12px; overflow:hidden; transform:rotate(-160deg);}
.e5{position:absolute; top:15px; left:66px; width:24px; height:12px; overflow:hidden; transform:rotate(70deg);}
.e4::before, .e5::before{content:""; position:absolute; width:14px; height:14px; border:5px solid #fb7; border-radius:120px;}

80f4798821cb383c9ddcfc241dc4975a.png

d58642db679021166a6b2d70c73e9540.png


然后用同样的方法画出眼白,再加上黑色的圆形瞳孔:


html:

<div class="e1"></div>
<div class="e6"></div> 


css:

 .e1{position:absolute; top:3px; left:3px; width:76px; height:76px; overflow:hidden;}  .e1::before{content:""; width:300px; height:300px; position:absolute; border:20px solid #fff; border-radius:120px;}
 .e6{position:absolute; top:62px; left:17px; width:15px; height:15px; background:#433; border-radius:10px;}

4a8105dded85f8a4d84fa8c1a0c37231.png

将组成眼睛的这几个元素用一个总元素包起来,再将这个总元素复制一份,分别作为左眼右眼,将其放在div.comical元素之下,并调整旋转角度与定位:

html:

<div class="eye eye_l">
  <div class="e1"></div>
  <div class="e2"></div>
  <div class="e3"></div>
  <div class="e4"></div>
  <div class="e5"></div>
  <div class="e6"></div>
</div>
<div class="eye eye_r">
  <div class="e1"></div>
  <div class="e2"></div>
  <div class="e3"></div>
  <div class="e4"></div>
  <div class="e5"></div>
  <div class="e6"></div>
</div>

css:

.eye{position:absolute; top:-10px; transform:rotate(45deg);}
.eye_l{left:40px;}
.eye_r{left:160px;}

49f258d5073088a058c3ef27f256b5c8.png


这样一张脸就差不多出来了,还需要画上眉毛和红晕,这几个元素也放在div.comical之下:


html:

<div class="eyebrow eyebrow_l"></div>
<div class="eyebrow eyebrow_r"></div>
<div class="flush flush_l"></div>
<div class="flush flush_r"></div>


css:

.eyebrow{width:40px; height:40px; border-top:7px solid #444; border-radius:30px; border-left:0px solid transparent; border-right:0px solid transparent; position:absolute; top:10px;}
.eyebrow_l{left:20px; transform:rotate(20deg);}
.eyebrow_r{left:140px; transform:rotate(-20deg);}
.flush{width:40px; height:20px; border-radius:50%/50%; box-shadow:0 10px 6px 5px rgba(255,80,150,0.3) inset; position:absolute; top:70px;}
.flush_l{left:12px;}
.flush_r{left:148px;}

667d5237459d2875b40e3f81f31c9bfa.png

这样一个完整的滑稽脸就出来了。

为了让它更生动一点,可以通过animation加上动画,这就看各自的喜好了。

这里提供一个参考:

用纯css3写一个大大的滑稽​www.aghikari.com

css的可能性是意想不到的,其实要画个滑稽,还有很多种方法可以实现,这里只是其中一种方法,仅供参考。

原文:

用纯css3写一个大大的滑稽​www.aghikari.com
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值