画虚线圆角边框_如何用CSS画一只皮卡丘

332503b431293e389233ea7d8a7974ab.gif

引言

不知道大家有没有去看大侦探皮卡丘呀,有没有被银幕上毛茸茸的电老鼠萌到呢?现在我就来教大家用CSS画一只简易版的皮卡丘吧,小白可学。(希望不会收到东半球最强法务部的律师函)

ps:以下部分代码隐去具体的宽高和位置,具体代码在阅读原文可看。

废话不多说,让我们打开编辑器

   

html对应结构如下:

86e145e0dcf281c07cbd6806951679e7.png

我们分开来看,首先是最简单的眼睛和腮红(电极),只有两个圆,只要让border-radius属性和width、height相同就可以画出两个圆,再用定位属性去寻找位置。

/*画出圆*/

.eye{

    background: #4E4700;

    width: 23px;

    height: 23px;

    border-radius: 23px;

}

/*寻找位置*/

.eye.left{

    position: absolute;

    left:38px;

    top:44px;

}

因为CSS的border-radius属性设置元素的外边框圆角,使用一个直径来确定一个圆形。当元素四个边角都是四分之一圆弧,那就可以拼成一个圆。

8f711bc06b743954cc76a8583f0e251b.png

然后就是下半截的各类半圆形的球,扣子。半圆怎么画呢,上面的圆通过四个四分之一圆弧来画,半圆岂不只要两个?

没错,当border-radius属性有四个值的时候,就会按左上、右上、右下、左下的顺时针方向去指定四个角。我们让上面的两个都是0,下面的都是圆的直径,再让高度等于半径,就可以画出一个半圆啦。

.ball{

    border-radius:0 0 200px 200px;

    width:200px;

    height:100px;

    background:#FF0000;

}

4b13744008653d01edb1ce2fd82203d4.png

其他的以此类推,把精灵球的扣子也做出来,再用z-index来让他们按层次出现就好啦,代码如下:

.belt{

    /*画黑带*/

    background:#322221;

    border-radius:0 0 2px 2px/0 0 15px 15px;

    display: flex;

    justify-content: center;

}

.lock{

    /*画半圆*/

    border-radius: 0 0 80px 80px;

}

.lock::after{

    /*使用伪元素可以在css里添加代码而不影响HTML结构的可读性*/

    content: "";

    display:block;

    border-radius: 0 0 60px 60px;

    background:#FDFDFD;

    transform: translateX(10px); -webkit-transform: translateX(10px); -moz-transform: translateX(10px); -o-transform: translateX(10px);

}

/*剩下的两个半圆方法差不多就不赘述了*/

c96ad3e01136ec944307bb6d22ff4908.png

剩下的部分就有点棘手了,因为耳朵和嘴巴弧线部分比较多,不过我们把弧线看作椭圆的边的话,也是可以利用border-radius属性来解决。当我们使用两组值的时候就可以设置边框的弧度。形如

border-radius: 20px 20px 20px 20px /
                       70px 70px 20px 20px;

斜杠前面的四个值,分别是左上起顺时针一圈的x,后面的四个值就是对应的y,这样就可以调整元素画出大概的弧度。

b0391d67e74e07e3061e31a7fd7d69f4.png

.ear.left{

    background: #ffe000;

    width:40px;

    height:90px;

  border-radius: 20px 20px 20px 20px/70px 70px 20px 20px;

    /*隐藏耳朵尖溢出部分*/

    overflow: hidden;

}

画出的效果是这样的

d4664f8172f1ff89c63a57af15774a4d.png

然后给他加个after伪元素来画耳朵尖

.ear.left::after{

    content: "";

    display: block;

    width:30px;

    height:20px;

    background: #4E4700;

}

就变成这样

fa095dc1435d1bdb42c1c58468a981a3.png

然后使用transform来给原来的 .ear.left 旋转一个角度就完成了,rotate是旋转,deg指角度的单位,负号代表逆时针选择。

rotate(-30deg); -webkit-transform: >rotate(-30deg); -moz-transform: >rotate(-30deg); -o-transform: >rotate(-30deg);

042e2c88714781b2b628a3998425b31b.png

然后嘴巴也是大同小异,左半唇和右半唇分别是一个只有左下和右下角的元素,旋转之后使用绝对定位拼在一起就可以啦。

812f930ef22ec2c45bdc1fe4d53d19a8.png

高光部分画个白色椭圆,方法就是把上面涉及的综合一下。

.light{

    background:#FFD7C9;

    width: 20px;

    height: 27px;

    border-radius: 10px 10px 10px 10px/15px 15px 10px 10px;

    transform: rotate(45deg); -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -o-transform: rotate(45deg);

}

接下来就大功告成。

d51fb3c44db6184b9660af1fb164d5d4.png

点击 阅读原文 会跳转到我的github的源码里,有兴趣大家可以下载下来参考一下,顺手点个star就再好不过了。

a354b56bcb70adc62b7f7afff172aa72.png

参考文章

https://developer.mozilla.org/zh-CN/docs/Web/CSS/border-radius

https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate 

END

ab2becab432a97895e8b0a5e4531f73f.png
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值