让我们用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


相关文章
|
11月前
|
前端开发
前端|CSS信封的制作方法
前端|CSS信封的制作方法
167 0
|
9月前
|
前端开发
css实现的信封
css实现的信封
64 0
|
11月前
|
前端开发
使用CSS来实现爱心信封的效果
使用CSS来实现爱心信封的效果
79 0
|
4天前
|
移动开发 HTML5
HTML5/CSS3粒子效果进度条代码
HTML5/CSS3进度条应用。这款进度条插件在播放进度过程中出现粒子效果,就像一些小颗粒从进度条上散落下来
19 0
HTML5/CSS3粒子效果进度条代码
|
4天前
|
移动开发 前端开发 JavaScript
:掌握移动端开发:HTML5 与 CSS3 的高效实践
:掌握移动端开发:HTML5 与 CSS3 的高效实践 “【5月更文挑战第6天】”
27 1
|
4天前
|
缓存 移动开发 前端开发
【专栏:HTML与CSS前端技术趋势篇】HTML与CSS在PWA(Progressive Web Apps)中的应用
【4月更文挑战第30天】PWA(Progressive Web Apps)结合现代Web技术,提供接近原生应用的体验。HTML在PWA中构建页面结构和内容,响应式设计、语义化标签、Manifest文件和离线页面的创建都离不开HTML。CSS则用于定制主题样式、实现动画效果、响应式布局和管理字体图标。两者协同工作,保证PWA在不同设备和网络环境下的快速、可靠和一致性体验。随着前端技术进步,HTML与CSS在PWA中的应用将更广泛。
|
4天前
|
前端开发 JavaScript 开发者
【专栏:HTML与CSS前端技术趋势篇】前端框架(React/Vue/Angular)与HTML/CSS的结合使用
【4月更文挑战第30天】前端框架React、Vue和Angular助力UI开发,通过组件化、状态管理和虚拟DOM提升效率。这些框架与HTML/CSS结合,使用模板语法、样式管理及组件化思想。未来趋势包括框架简化、Web组件标准采用和CSS在框架中角色的演变。开发者需紧跟技术发展,掌握新工具,提升开发效能。
|
4天前
|
前端开发 JavaScript UED
【专栏:HTML 与 CSS 前端技术趋势篇】Web 性能优化:CSS 与 HTML 的未来趋势
【4月更文挑战第30天】本文探讨了CSS和HTML在Web性能优化中的关键作用,包括样式表压缩、选择器优化、DOM操作减少等策略。随着未来趋势发展,CSS模块系统、自定义属性和响应式设计将得到强化,HTML新特性也将支持复杂组件构建。同时,应对浏览器兼容性、代码复杂度和性能功能平衡的挑战是优化过程中的重要任务。通过案例分析和持续创新,我们可以提升Web应用性能,创造更好的用户体验。
|
4天前
|
移动开发 前端开发 UED
【专栏:HTML与CSS前端技术趋势篇】渐进式增强与优雅降级在前端开发中的实践
【4月更文挑战第30天】前端开发中的渐进式增强和优雅降级是确保跨浏览器、跨设备良好用户体验的关键策略。渐进式增强是从基础功能开始,逐步增加高级特性,保证所有用户能访问基本内容;而优雅降级则是从完整版本出发,向下兼容,确保低版本浏览器仍能使用基本功能。实践中,遵循HTML5/CSS3规范,使用流式布局和响应式设计,检测浏览器特性,并提供备选方案,都是实现这两种策略的有效方法。选择合适策略优化网站,提升用户体验。
|
4天前
|
前端开发 开发者 UED
【专栏:HTML与CSS前端技术趋势篇】网页设计中的CSS Grid与Flexbox之争
【4月更文挑战第30天】本文对比了CSS Grid和Flexbox两种布局工具。Flexbox擅长一维布局,简单易用,适合导航栏和列表;CSS Grid则适用于二维布局,能创建复杂结构,适用于整个页面布局。两者各有优势,在响应式设计中都占有一席之地。随着Web标准发展,它们的结合使用将成为趋势,开发者需掌握两者以应对多样化需求。