CSS教你画一个可爱蛋

简介: CSS教你画一个可爱蛋

生活中,我们早上通常都会吃一个茶叶蛋来补充一天的营养,今天我们就来用CSS来实现一个可爱蛋吧

效果图


image.png

实现思路


我们利用container类名盒子作为可爱蛋的载体并通过flex布局的方式使得可爱蛋能够在元素中居中,给上地位便于以后进行定位操作,在通过外边距使得载体距离上面有一定的距离,我们来用ellipse盒子用于定位蛋身里面的内容以及实现单身下边部分的黄壳,egg类名盒子作为蛋身,通过边框圆角的属性实现椭圆蛋身,在通过eye类名元素通过定位结合伪元素的方式实现眼睛的布局,在通过mouth类名元素实现嘴巴的效果,在通过无序列表的方式实现一个蛋齿纹,最后通过动画属性实现可爱蛋的摇摆,下面我们来实现一下吧

主体结构


<div class="container">
        <!-- 蛋 -->
        <div class="ellipse">
            <!-- 内容 -->
            <div class="egg">
                <!-- 蛋眼睛 -->
                <div class="eye"></div>
                <div class="eye"></div>
                <!-- 蛋嘴巴 -->
                <div class="mouth"></div>
                <!-- 蛋齿纹 -->
                <ul>
                    <li></li>
                    <li></li>
                    <li></li>
                    <li></li>
                    <li></li>
                </ul>
            </div>
        </div>
    </div>

初始样式


* {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            list-style: none;
        }

可爱蛋的载体,在通过圆边框属性实现单身的椭圆形状

.container {
            width: 500px;
            height: 500px;
            margin: 50px auto;
            display: flex;
            justify-content: center;
            align-items: center;
            position: relative;
        }
  .ellipse {
            position: relative;
        }
     .egg {
            width: 290px;
            height: 340px;
            border: 18px solid black;
            border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
            position: relative;
            z-index: 5;
        }

image.png

眼睛


我们在给可爱蛋做出眼睛,这里通过俩个盒子进行实现,一个左眼睛一个右眼睛,在通过伪元素的方式实现目光,在通过定位的方式定位到对应的位置

.eye {
            position: absolute;
            width: 30px;
            height: 30px;
            border-radius: 50%;
            background-color: #000;
            top: 18%
        }
        .eye:nth-child(1) {
            left: 23%;
        }
        .eye:nth-child(2) {
            right: 23%;
        }
        .eye::after {
            content: "";
            width: 13px;
            height: 13px;
            background-color: #fff;
            border-radius: 50%;
            position: absolute;
            left: 2px;
            top: 3px;
        }

image.png

嘴巴


嘴巴这里我们通过css的定位方式以及旋转属性实现一个菱形的效果定位到合适的位置

.mouth {
            width: 28px;
            height: 28px;
            background-color: #000;
            border-radius: 12% / 4%;
            transform: rotate(45deg) translateX(-50%);
            transform-origin: left;
            position: absolute;
            top: 35%;
            left: 50%;
        }

image.png

齿纹

我们通过无序列表的方式结合定位以及旋转属性实现蛋壳齿纹,因为每个元素旋转的度数不一样,所以需要每一个都单独设置旋转角度

.egg ul li {
            position: absolute;
            height: 51px;
            transform: rotate(220deg);
            border-left: 18px solid black;
            border-top: 18px solid black;
        }
        .egg ul li:nth-child(1) {
            top: 53%;
            height: 40px;
            width: 45px;
            left: -4px;
        }
        .egg ul li:nth-child(2) {
            top: 49.5%;
            width: 58px;
            left: 16%;
        }
        .egg ul li:nth-child(3) {
            top: 49.5%;
            width: 58px;
            left: 36.5%;
        }
        .egg ul li:nth-child(4) {
            top: 49.5%;
            width: 58px;
            left: 57%;
        }
        .egg ul li:nth-child(5) {
            top: 49.5%;
            width: 62px;
            left: 77.5%;
        }

image.png

下半身


这样基本上做好了,不过下面的蛋壳齿纹下面不太好看,我们通过伪元素来做一个下半身蛋壳

.ellipse::after {
            content: "";
            position: absolute;
            width: calc(100% - 25px);
            height: 39%;
            background-color: rgba(244, 247, 97, 0.753);
            bottom: 0;
            left: 10px;
            border-radius: 0 0 50% 50% / 0 0 100% 100%;
            z-index: 0;
        }

image.png

动画


最后我们通过css的动画属性设置动画在0%/50%/100%的时候角度全部归为0也就是原本样式,在25%和75%的时候分别向右偏移10deg和向左偏移10deg,在给ellipse类名盒子设置好摇摆角度和对应的运行速度进行无限次运行

.ellipse {
            animation: swing 3s linear infinite;
            transform-origin: center bottom;
        }
        @keyframes swing {
            0% {
                transform: rotate(0deg);
            }
            25% {
                transform: rotate(10deg);
            }
            50% {
                transform: rotate(0deg);
            }
            75% {
                transform: rotate(-10deg);
            }
            100% {
                transform: rotate(0deg);
            }
        }

代码我已经放到码上掘金上了,快开看看吧!

image.png

我正在参加「创意开发 投稿大赛」详情请看:掘金创意开发大赛来了!


相关文章
|
7月前
|
前端开发 JavaScript Python
分享76个文字特效,总有一款适合您
分享76个文字特效,总有一款适合您
75 5
|
7月前
|
移动开发 前端开发 JavaScript
分享88个文字特效,总有一款适合您
分享88个文字特效,总有一款适合您
79 1
CSS3 小火箭上天效果
CSS3 小火箭上天效果
66 0
|
5月前
|
存储 数据采集 移动开发
|
前端开发
我用 CSS 告诉你,我每天是怎么度过的~
我用 CSS 告诉你,我每天是怎么度过的~
|
前端开发
【前端切图】用css画一个卡通形象-小猪佩奇
【前端切图】用css画一个卡通形象-小猪佩奇
58 0
|
前端开发 计算机视觉
用 css 画一个太极图,才几行代码就开始喊难了?
据说太极图里面的文化博大精深,有着一生二,二生三,三生万物的道理,虽然我不怎么懂,要让它转起来就会发现非常神奇,那今天我们就来用 css 画一个太极图吧。
289 0
用 css 画一个太极图,才几行代码就开始喊难了?
|
前端开发
那些炫酷的CSS文字效果之诗词《兔》
那些炫酷的CSS文字效果之诗词《兔》
118 0
|
前端开发
纯CSS实现“流星赶月”,祝大家中秋节快乐
纯CSS实现“流星赶月”,祝大家中秋节快乐
213 0