让我们用css去写一个表白信封

简介: 让我们用css去写一个表白信封

效果图


image.png

实现思路


设置一个版心,搞一个大盒子,大盒子是信封的样子,然后通过无序列表实现心和漂浮的心,最后在通过动画的方式,心得跳动

排版样式


<div id="app">
        <!-- 信封盒子 -->
        <div class="envelope">
        </div>
        <!-- 爱心 -->
        <ul class="heart">
            <li></li>
            <!-- 漂浮的爱心 -->
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>

信封


通过给盒子的宽高,用边框描述出来盒子的样子,最后通过伪元素结合定位的方式,实现信封的样式

image.png

.envelope {
            position: relative;
            width: 400px;
            height: 200px;
            border: 10px solid #e76978;
            overflow: hidden;
        }

然后给伪元素宽和高,设置一个直角边框

image.png

在通过旋转属性实现信封的大致样式,信封需要俩个三角形,然后旋转到对应的角度在通过定位实现

image.png

image.png

这里要注意的是,上面直角的伪元素需要设置背景色,如果不设置背景色就会透过去

image.png

/* 边框 */
        .envelope::after,
        .envelope::before {
            content: '';
            width: 280px;
            height: 280px;
            border-top: 10px solid #e76978;
            border-right: 10px solid #e76978;
            position: absolute;
        }
        .envelope::after {
            transform: rotate(135deg);
            top: -148px;
            left: 53px;
            background: #fff;
        }
        .envelope::before {
            transform: rotate(-45deg);
            bottom: -148px;
            left: 53px;
        }

爱心的实现


接下来我们来实现爱心,爱心其实很简单,我们给ul一个宽高,给一个颜色大致样式在结合定位的方式放到信封的正中间

image.png

现在开始画爱心,首先我们通过旋转属性旋转到一个合适的角度,在通过给伪元素给设置一个宽和高,我们这里宽和高是继承父级的,然后在通过定位的方式,定位到俩侧就可以了,最后需要在给个边框阴影显得更像一些

image.png

image.png

image.png

.heart,
        .heart>li {
            position: absolute;
            top: 50%;
            left: 50%;
            width: 50px;
            height: 50px;
            background: #ff1414;
            z-index: 10;
        }
        .heart {
            transform: translate(-50%, -50%) rotate(45deg);
            box-shadow: 0 0 15px #ff1414;
            cursor: pointer;
        }
        /* 左爱心 */
        .heart>li::before,
        .heart:before {
            content: "";
            position: absolute;
            top: 0;
            bottom: 0;
            width: 100%;
            height: 100%;
            background-color: #ff1414;
            transform: translateY(-50%);
            border-radius: 50%;
        }
        /* 右爱心 */
        .heart>li::after,
        .heart:after {
            content: "";
            position: absolute;
            top: 0;
            bottom: 0;
            width: 100%;
            height: 100%;
            background-color: #ff1414;
            transform: translateX(-50%);
            border-radius: 50%;
        }
        /* 爱心 End */

然后我们在通过动画结合css属性的方式实现,心会跳动的样子

@keyframes beatHeart {
            0% {
                transform: translate(-50%, -50%) scale(1);
            }
            30% {
                transform: translate(-50%, -50%) scale(1.2);
            }
            50% {
                transform: translate(-50%, -50%) scale(1.5);
            }
            70% {
                transform: translate(-50%, -50%) scale(1.2);
            }
            100% {
                transform: translate(-50%, -50%) scale(1);
            }
        }

最后实现漂浮的动画,这里漂浮的动画,我们采用了定位的方式进行实现

、 /* 漂浮动画 */
        @keyframes beatHeart1 {
            from {
                top: -20px;
                left: 0;
                transform: scale(0.25) rotate(45deg);
                opacity: 1;
            }
            to {
                top: -200px;
                left: 0;
                transform: scale(1) rotate(50deg);
                opacity: 0;
            }
        }
        @keyframes beatHeart2 {
            from {
                top: -10px;
                left: -10px;
                transform: scale(0.25) rotate(-20deg);
                opacity: 0.2;
            }
            to {
                top: -200px;
                left: 10px;
                transform: scale(1) rotate(45deg);
                opacity: 0;
            }
        }
        @keyframes beatHeart3 {
            from {
                top: -10px;
                left: 10px;
                transform: scale(0.25) rotate(20deg);
                opacity: 0.2;
            }
            to {
                top: -200px;
                left: -100px;
                transform: scale(1) rotate(60deg);
                opacity: 0;
            }
        }
        @keyframes beatHeart4 {
            from {
                top: -20px;
                left: -10px;
                transform: scale(0.25) rotate(45deg);
                opacity: 0.2;
            }
            to {
                top: -200px;
                left: -10px;
                transform: scale(1) rotate(80deg);
                opacity: 0;
            }
        }

image.png


相关文章
|
前端开发 JavaScript
HTML+CSS+JAVASCRIPT实现——情人节表白情书
本文主要介绍如何使用HTML三件套来实现制作一封情人节表白情书,富含情谊与爱,打动女生的心灵
756 2
HTML+CSS+JAVASCRIPT实现——情人节表白情书
|
3月前
|
前端开发
七夕特效惊艳全场!HTML+CSS带你DIY酷炫表白神器
七夕特效惊艳全场!HTML+CSS带你DIY酷炫表白神器
|
3月前
|
前端开发 程序员
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
一年一度的520情人节/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现HTML+CSS+JavaScript制作七夕表白网页(含音乐+自定义文字)。赶紧学会了,来制作属于我们程序员的浪漫吧!
84 0
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
|
4月前
|
前端开发
【CSS】浪漫信封
【CSS】浪漫信封
|
前端开发
前端|CSS信封的制作方法
前端|CSS信封的制作方法
252 0
|
前端开发
css实现的信封
css实现的信封
89 0
|
前端开发
使用CSS来实现爱心信封的效果
使用CSS来实现爱心信封的效果
111 0
|
程序员
七夕来临,程序员该如何花式表白?html+css实现简单七夕表白
文章目录 1 效果展示 2 源码及环境 3 浅谈七夕 3.1 七夕由来 3.2 七夕风俗
七夕来临,程序员该如何花式表白?html+css实现简单七夕表白
|
前端开发 JavaScript 程序员
H5+css+JavaScript满屏彩色泡泡小特效(适合表白哦~做完发给让你每天想念的人吧~)
H5+css+JavaScript满屏彩色泡泡小特效(适合表白哦~做完发给让你每天想念的人吧~)
174 0
H5+css+JavaScript满屏彩色泡泡小特效(适合表白哦~做完发给让你每天想念的人吧~)
|
移动开发 前端开发 JavaScript
Html5+CSS3+JS代码实现圣诞节动态表白特效,祝你成功
临近平安夜、圣诞节的到来,又是一波大好表白时机!身边的同学马上就要动手了,还不快行动起来,程序员也有属于我们的浪漫!这篇文章使用前端三大技术Html5、CSS、Js来实现圣诞动态表白特效。
Html5+CSS3+JS代码实现圣诞节动态表白特效,祝你成功