当前位置: 首页 > news >正文

web前端之实现一只可爱的小杰尼乌龟、伪元素、动画

MENU

  • 前言
  • 效果图
  • html
  • style


前言

代码段使用HTML和CSS创建一个“杰尼龟”的动画。


效果图

1


2


html

<div class="squirtle"><div class="tail"></div><div class="body"><div class="stomach"></div><div class="shell"></div></div><div class="head"><div class="eye"></div><div class="eye"></div><div class="mouth"></div></div><div class="leg back"></div><div class="leg"></div><div class="arm back"></div><div class="arm"></div>
</div>

HTML定义“杰尼龟”的结构,包括尾巴、身体、头部、眼睛、嘴巴、四肢等。


style

html {box-sizing: border-box;
}*,
*::before,
*::after {box-sizing: inherit;
}body {width: 100vw;height: 100vh;margin: 0;padding: 0;box-sizing: border-box;font-size: 100%;.squirtle {position: absolute;width: 20em;height: 20em;top: 50%;left: 50%;margin: -10em;animation: bounce 250ms infinite linear alternate;.tail {position: absolute;width: 4.5em;height: 5.5em;top: 50%;left: 50%;margin: 0.25em 0 0 -0.5em;transform-origin: 2.5em 100%;background-color: #66bbcc;border: 0.325em solid #555555;border-radius: 50%;animation: bounce2 250ms infinite linear alternate;}.tail::before,.tail::after {content: "";position: absolute;width: 5em;height: 5.5em;top: -2em;left: 2.25em;background-color: inherit;border: 0.325em solid #555555;border-left-color: transparent;border-radius: 50%;}.tail::after {width: 2.5em;height: 2.75em;top: 0.375em;left: 2.625em;transform: translateX(1%);background-color: transparent;border: 0.325em solid #555555;border-right-color: transparent;border-bottom-color: transparent;}.body {position: absolute;width: 6em;height: 6em;top: 50%;left: 50%;margin: 4em 0 0 -1em;transform: translate(-50%, -50%);overflow: hidden;background-color: #ffee99;border: 0.375em solid #555555;border-radius: 10% 10% 50% 50% / 50%;.stomach {position: absolute;width: 115%;height: 100%;bottom: 3.25em;left: -1.125em;border: 0.25em solid transparent;border-bottom-color: #555;border-radius: 50%;box-shadow: 0 1.25em #ffee99, 0 1.5em #555555;}.stomach::before {content: "";position: absolute;width: 40%;height: 100%;bottom: -4.125em;left: 2.25em;transform: rotate(-10deg);border: 0.25em solid transparent;border-left-color: #555555;border-radius: 50%;}.shell {position: absolute;width: 100%;height: 115%;top: 0;left: 0.25em;z-index: 1;border-radius: 10% 10% 50% 50% / 50%;box-shadow: inset -0.5em 0 #995533, inset -1em 0 #aa6633, inset -1.25em 0 #555555,inset -1.75em 0 #ffffff, inset -2em 0 #555555;}}.body::before,.body::after {content: "";position: absolute;background-color: #ffee99;border: 0.25em solid #555555;border-radius: 10%;}.body::before {width: 1.25em;height: 1.5em;top: 2.25em;left: -1em;z-index: 1;transform: rotate(55deg);}.body::after {height: 1.25em;top: 4.825em;left: 1.375em;z-index: 0;transform: skewX(10deg) rotate(40deg);box-shadow: 0.375em -3.375em #ffee99, 0.125em -3.0625em #555555;}.head {position: absolute;width: 10em;height: 10em;top: 50%;left: 50%;z-index: 1;margin: -8.25em 0 0 -5.5em;background-color: #77ccdd;border: 0.325em solid #555555;border-radius: 50%;animation: bounce2 250ms infinite linear alternate;.eye {position: absolute;width: 2em;height: 2.825em;top: 5em;left: 4em;z-index: 1;overflow: hidden;background-color: #555555;border: 0.1875em solid #555555;border-radius: 50% / 60% 60% 40% 40%;box-shadow: inset 0 -0.375em #aa6633;}.eye::before {content: "";position: absolute;width: 30%;height: 30%;top: 0.375em;right: 0.25em;background-color: #ffffff;border-radius: 50%;}.eye:first-child {width: 1.5em;height: 2.25em;top: 4em;left: 0.5em;border: 0.125em solid #555555;box-shadow: inset 0 -0.25em #aa6633;}.mouth {position: absolute;width: 1.125em;height: 1.75em;z-index: 1;bottom: 0.75em;left: 2em;background-color: #ffcccc;border: 0.125em solid #555555;border-radius: 50%;box-shadow: inset 0 1.125em 0 -0.0625em #ff5555, inset 0 1.1875em #555555;}.mouth::before {content: "";position: absolute;width: 3em;height: 1em;top: -0.25em;right: -0.825em;transform: rotate(20deg);background-color: #77ccdd;border: 0.125em solid transparent;border-bottom-color: #555555;border-radius: 50%;}.mouth::after {content: "";position: absolute;width: 2em;height: 2em;top: -6.5em;right: -0.825em;transform: rotate(-20deg) scaleY(0.75);background-color: rgba(255, 255, 255, 0.25);border-radius: 50%;box-shadow: -1.5em 0.5em 0 -0.625em rgba(255, 255, 255, 0.25),-4.125em 4.5em 0 -0.625em rgba(255, 200, 200, 0.8),0.75em 10em 0 -0.5em rgba(255, 200, 200, 0.8);}}.head::before {content: "";position: absolute;width: 8.25em;height: 5em;right: 1.625em;bottom: -0.0625em;transform: rotate(10deg);background-color: inherit;border-radius: 50%;box-shadow: 0 0 0 0.325em #555555;}.head::after {content: "";position: absolute;width: 100%;height: 100%;background-color: inherit;border-radius: 50%;box-shadow: inset -0.5em 0.25em #66bbcc;}.leg {position: absolute;width: 2.5em;height: 3em;top: 50%;left: 50%;z-index: 0;margin: 5.25em 0 0 -1em;transform-origin: 50% 1em;background-color: #77ccdd;border: 0.325em solid #555555;border-radius: 50% / 50% 50% 50% 30%;animation: swing 500ms infinite linear alternate;}.leg::before {content: "";position: absolute;width: 2.25em;height: 1.5em;right: 0.325em;bottom: -0.325em;transform: rotate(15deg);background-color: inherit;border: 0.325em solid #555555;border-radius: 50% 50% 50% 50% / 80% 50% 50% 30%;}.leg::after {content: "";position: absolute;width: 100%;height: 100%;background-color: inherit;border-radius: 50% / 50% 50% 50% 30%;box-shadow: inset -0.375em 0.25em #66bbcc;}.leg.back {width: 2.25em;height: 2.75em;z-index: -1;margin: 5em 0 0 -3.75em;background-color: #66bbcc;animation-delay: -500ms;}.arm {position: absolute;width: 2em;height: 3em;top: 50%;left: 50%;z-index: 0;margin: 2.125em 0 0 -0.25em;transform-origin: 50% 1em;background-color: #77ccdd;border: 0.325em solid #555555;border-radius: 80% 80% 80% 60% / 60% 60% 60% 80%;box-shadow: inset -0.375em 0.25em #66bbcc;animation: swing 500ms -500ms infinite linear alternate;}.arm.back {z-index: -1;margin: 1.75em 0 0 -4em;background-color: #66bbcc;animation-name: swing2;animation-delay: -1000ms;}}.squirtle::after {content: "";position: absolute;width: 60%;height: 20%;bottom: 0;left: 50%;z-index: -10;margin-left: -30%;background-color: rgba(0, 0, 0, 0.05);border-radius: 50%;animation: bounce 250ms infinite linear alternate-reverse;}
}@keyframes swing {0% {transform: rotate(-60deg);}100% {transform: rotate(10deg);}
}@keyframes swing2 {0% {transform: rotate(-10deg);}100% {transform: rotate(60deg);}
}@keyframes bounce {0% {transform: translateY(0);}100% {transform: translateY(-0.25em);}
}@keyframes bounce2 {0% {transform: rotate(0);}100% {transform: rotate(2deg);}
}

初始化

html {box-sizing: border-box;
}*,
*::before,
*::after {box-sizing: inherit;
}body {width: 100vw;height: 100vh;margin: 0;padding: 0;box-sizing: border-box;font-size: 100%;
}

代码段设定全局样式,包括边框的计算方式(box-sizing),以及body的宽度、高度和其他基础样式。


.squirtle定义杰尼龟样式
1、.squirtle是杰尼龟的容器,设置了大小、位置及“弹跳”的动画效果。


.tail尾巴
1、定义尾巴的形状、颜色及动画效果,尾巴的两个伪元素(::before和::after)用于创建螺旋形状。


.body身体
1、定义杰尼龟的身体,包括身体的基本颜色和外形。


.stomach胃部和.shell壳
1、stomach(胃部)和shell(壳)部分用来进一步修饰杰尼龟的外观,使用伪元素增加视觉细节。


.head头部
1、定义头部的形状、颜色及动画效果。


.eye眼睛和.mouth嘴巴
1、眼睛和嘴巴部分通过伪元素进行额外修饰,eye和mouth分别定义杰尼龟的眼睛和嘴巴的样式。


.leg, .arm四肢
1、定义四肢的样式,包括前后肢的位置、大小和动画效果。


.bounce弹跳动画
1、控制整体弹跳的动画,bounce2用于头部和尾巴的微动效果。


.swing摆动动画
1、四肢的摆动动画,使得杰尼龟看起来像在行走或游泳。


总结
代码段通过HTML和CSS构建一个卡通风格的“杰尼龟”图形,并且添加一些基础的动画效果,让“杰尼龟”看起来活灵活现。这些动画通过CSS的@keyframes规则来定义,使得角色的各个部分都能够运动起来。

相关文章:

web前端之实现一只可爱的小杰尼乌龟、伪元素、动画

MENU 前言效果图htmlstyle 前言 代码段使用HTML和CSS创建一个“杰尼龟”的动画。 效果图 html <div class"squirtle"><div class"tail"></div><div class"body"><div class"stomach"></div><d…...

银河麒麟服务器版在rc.local使用ifcong 配置IP和nmcli的区别

1、使用ifconfig配置IP ‌ifconfig是一个传统的网络配置工具&#xff0c;‌它直接操作网络接口&#xff0c;‌允许用户手动设置IP地址、‌子网掩码等网络参数。‌这种方式比较直接&#xff0c;‌但需要用户对网络接口和配置有较深入的了解。‌使用ifconfig配置的IP地址在系统重…...

【运维】深入理解 Linux 中的 `mv` 命令,使用 `mv` 移动所有文件但排除特定文件或文件夹

文章目录 一、基本语法二、基本用法三、使用 `mv` 移动所有文件但排除特定文件或文件夹**命令解释:**四、其他常用选项五、总结深入理解 Linux 中的 mv 命令:移动文件和文件夹的艺术 在日常使用 Linux 的过程中,mv(move)命令是我们经常会用到的一个命令,它不仅可以用来移…...

Xilinx课程,就这么水灵灵地上线了~

如果你想了解&#xff1a; 如何利用精通流水线&#xff08;Pipeline&#xff09;技术&#xff0c;让电路设计效率倍增&#xff1f; 如何掌握利用性能基线指导设计流程的方法&#xff1f; 如何理解集成电路设计中的UltraFast Design Methodology Implementation设计方法学中的…...

【axios get请求 中文乱码】

问题复现 前端请求&#xff1a; company/queryFenByOrgNo?orgNo5&qcNam%D2%BB%C6%DA qcNam 一期 后端接收&#xff1a; CompanyManagementController - 入参 orgNo“5”,qcNamһ&#xfffd;&#xfffd; 问题解决方案 let httpUrl this.httpcompany/queryFenByOrgNo…...

智能分析/视频汇聚EasyCVR安防视频融合管理云平台技术优势分析

安防行业的发展历程主要围绕视频监控技术的不断改革升级&#xff0c;从最初的模拟监控到数字监控&#xff0c;再到高清化、网络化监控&#xff0c;直至现在的智能化监控&#xff0c;每一次变革都推动了行业的快速发展。特别是近年来&#xff0c;随着AI、大数据、物联网等技术的…...

arcgis-坡度坡向分析

坡向的描述有定性和定量两种方式&#xff0c;定量是以东为0&#xff0c;顺时针递增&#xff0c;南为90&#xff0c;西为180&#xff0c;北为270等&#xff0c;范围在0&#xff5e;35959′59″之间。 定性描述有8方向法和4方向法. 8 方向为东、东南、南、西南、西、西北、北、东…...

【银河麒麟高级服务器操作系统】实际案例分析,xfsaild占用过高

了解银河麒麟操作系统更多全新产品&#xff0c;请点击访问麒麟软件产品专区&#xff1a;https://product.kylinos.cn 服务器环境及配置 物理机/虚拟机 物理机 处理器&#xff1a; Intel(R) Xeon(R) Silver 4110 CPU 2.10GHz 内存&#xff1a; 65536 MiB (64 GiB) 主板…...

JS中【setTimeout】使用注意事项总结

在JavaScript中&#xff0c;setTimeout是一个用于延迟执行某个函数的非常常见和有用的函数。使用setTimeout时&#xff0c;有几个重要的方面需要注意&#xff1a; 1. 基本用法 setTimeout的基本语法如下&#xff1a; setTimeout(function, delay);function&#xff1a;这是你…...

已解决ArkTS开发webview,html页面中的input和按钮等操作均无响应

在使用 ArkTS 开发 HarmonyOS 应用时&#xff0c;如果遇到 WebView 中的 HTML 页面元素&#xff08;如 input 输入框和 button 按钮&#xff09;无法响应操作的情况&#xff0c;通常与 WebView 的配置或权限设置有关。以下是常见的原因和解决方法。 1. 启用交互权限 确保你的…...

ChatGPT无法登录,提示我们检测到可疑的登录行为,将阻止进一步的尝试。请与管理员联系

1. 问题描述 之前本来已经连续稳定使用ChatGPT好几个月了&#xff0c;但是今天尝试登录ChatGPT的时候&#xff0c;却提示&#xff1a;我们检测到可疑的登录行为&#xff0c;将阻止进一步的尝试。请与管理员联系。 此外&#xff0c;我还在网上看到了一些相关的消息&#xff0c;…...

【数据结构篇】~复杂度

标题【数据结构篇】~复杂度 前言 C语言已经学完了&#xff0c;不知道大家的基础都打得怎么样了&#xff1f; 无论怎么说大家还是要保持持续学习的状态&#xff0c;来迎接接下来的挑战&#xff01; 现在进入数据结构的学习了&#xff0c;希望大家还是和之前一样积极学习新知识…...

深入理解Python中的JSON模块:解析与生成JSON数据的实用指南

深入理解Python中的JSON模块:解析与生成JSON数据的实用指南 在现代应用程序开发中,JSON(JavaScript Object Notation)已成为数据交换的标准格式。Python的json模块提供了简单而强大的工具来解析和生成JSON数据。本文将详细介绍如何使用json模块,包括基本概念、解析JSON数…...

机器学习三要素:模型、策略和算法

引言 随着人工智能技术的发展&#xff0c;机器学习已成为数据科学领域的核心组成部分。数据在机器学习方法框架中的流动&#xff0c;会按顺序经历三个过程&#xff0c;分别对应机器学习的三大要素&#xff1a;1. 模型&#xff1b;2. 策略&#xff1b;3. 算法。本文将深入探讨这…...

利用红黑树封装map和set

前言&#xff1a; 我们已经学过了如何去实现一棵完整的红黑树&#xff0c;而我们所知道的map和set容器的底层都是由红黑树实现的&#xff0c;因此我们今天来学习如何用红黑树来实现封装map和set。 本来我们需要两个红黑树去分别封装map和set&#xff0c;但是代码会有重复、冗…...

python pyqt5暂停和恢复功能

在PyQt5中&#xff0c;你可以通过结合按钮和事件处理来实现暂停和恢复功能。以下是一个简单的示例代码&#xff0c;演示了如何在PyQt5应用程序中实现暂停和恢复功能。 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget,…...

CAN总线详解-理论知识部分

目录 CAN总线简介 CAN总线硬件电路 CAN电平标准 CAN收发器 ​编辑 CAN物理层特性 CAN总线帧格式 数据帧 数据帧格式 数据帧发展历史 遥控帧 错误帧 过载帧 帧间隔 位填充 波形实例 CAN总线接收方数据采样 接收方数据采样遇到的问题 位时序 硬同步 再同步 波…...

【Java数据结构】---List(LinkedList)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励下吧~ 文章目录 前言链表&#xff08;MyS…...

开发军用LabVIEW程序注意事项

在开发军用LabVIEW程序时&#xff0c;开发者需要从多个角度仔细考虑&#xff0c;以满足军方对安全性、可靠性、法规遵从性等方面的严格要求。由于军事系统通常涉及高度敏感的信息和严苛的环境条件&#xff0c;程序的设计必须保证数据的保密性、系统的稳定性以及与各种军事标准的…...

A3VLM: Actionable Articulation-Aware Vision Language Model

发表时间&#xff1a;13 Jun 2024 作者单位&#xff1a;SJTU Motivation&#xff1a;以往的机器人VLM如RT-1[4]、RT-2[3]和ManipLLM[21]都专注于直接学习以机器人为中心的动作。这种方法需要收集大量的机器人交互数据&#xff0c;这在现实世界中非常昂贵。 解决方法&#xf…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...