29 旋转工具箱

这篇具有很好参考价值的文章主要介绍了29 旋转工具箱。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果演示

29 旋转工具箱,若冰说CSS,css,css,前端,若冰说CSS

实现了一个菜单按钮的动画效果,当鼠标悬停在菜单按钮上时,菜单按钮会旋转315度,菜单按钮旋转的同时,菜单按钮旋转的8个小圆圈也会依次旋转360度,并且每个小圆圈的旋转方向和菜单按钮的旋转方向相反,当鼠标悬停在某个小圆圈上时,该小圆圈的旋转方向会变为顺时针旋转360度。整个效果看起来像是一只小鸟在飞翔,菜单按钮像是它的翅膀,菜单按钮旋转的同时,小圆圈也在飞翔。此外,这段代码还定义了一些自定义的图标,并使用了阿里巴巴的图标库。

Code

<div class="menu">
    <div class="btn"><i class="iconfont icon-add"></i></div>
    <span style="--i: 0;"><i class="iconfont icon-home"></i></span>
    <span style="--i: 1;"><i class="iconfont icon-more"></i></span>
    <span style="--i: 2;"><i class="iconfont icon-gift"></i></span>
    <span style="--i: 3;"><i class="iconfont icon-setting"></i></span>
    <span style="--i: 4;"><i class="iconfont icon-message"></i></span>
    <span style="--i: 5;"><i class="iconfont icon-cart"></i></span>
    <span style="--i: 6;"><i class="iconfont icon-money"></i></span>
    <span style="--i: 7;"><i class="iconfont icon-star"></i></span>
</div>
* {
    margin: 0;
    padding: 0;
    list-style: none;
}

body {
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #e8e8e8;
}

.menu {
    position: relative;
    width: 200px;
    height: 200px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.btn {
    position: absolute;
    width: 60px;
    height: 60px;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #fff;
    border-radius: 50%;
    z-index: 1000;
    box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15);
    cursor: pointer;
    transition: all 1.25s;
}

.btn i {
    font-size: 32px;
}

.menu span {
    position: absolute;
    left: 0;
    transform-origin: 100px;
    transition: .5s;
    transition-delay: calc(.1s * var(--i));
    transform: rotate(0deg) translateX(80px);
    width: 40px;
    height: 40px;
    background-color: #fff;
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15);
}

.menu:hover .btn {
    transform: rotate(315deg);
}

.menu:hover span {
    transform: rotate(calc(360deg / 8 * var(--i)));
}

.menu span i {
    transform: rotate(calc(360deg / -8 * var(--i)));
}

.menu span:hover i {
    color: #f51760;
}

@font-face {
    font-family: "iconfont";
    /* Project id 4090357 */
    src: url('//at.alicdn.com/t/c/font_4090357_z2qpnic06um.woff2?t=1685189584312') format('woff2'),
        url('//at.alicdn.com/t/c/font_4090357_z2qpnic06um.woff?t=1685189584312') format('woff'),
        url('//at.alicdn.com/t/c/font_4090357_z2qpnic06um.ttf?t=1685189584312') format('truetype');
}

.iconfont {
    font-family: "iconfont" !important;
    font-size: 16px;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.icon-add:before {
    content: "\e60c";
}

.icon-home:before {
    content: "\e604";
}

.icon-more:before {
    content: "\e606";
}

.icon-gift:before {
    content: "\e611";
}

.icon-setting:before {
    content: "\e612";
}

.icon-message:before {
    content: "\e613";
}

.icon-star:before {
    content: "\e618";
}

.icon-cart:before {
    content: "\e61d";
}

.icon-money:before {
    content: "\e61e";
}

实现思路拆分

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

这段代码是设置全局样式,将所有元素的外边距、内边距和列表样式都设置为0,并将列表样式设置为none。

body {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #e8e8e8;
}

这段代码是设置页面的基本样式,将页面的高度设置为100vh,并将页面的内容居中对齐。同时,将页面的背景颜色设置为#e8e8e8。

.menu {
  position: relative;
  width: 200px;
  height: 200px;
  display: flex;
  justify-content: center;
  align-items: center;
}

这段代码是设置菜单按钮的样式,将菜单按钮的位置设置为相对定位,宽度和高度都设置为200px,并将菜单按钮的内容居中对齐。

.btn {
  position: absolute;
  width: 60px;
  height: 60px;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #fff;
  border-radius: 50%;
  z-index: 1000;
  box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15);
  cursor: pointer;
  transition: all 1.25s;
}

这段代码是设置菜单按钮的样式,将菜单按钮的位置设置为绝对定位,宽度和高度都设置为60px,并将菜单按钮的内容居中对齐。同时,将菜单按钮的背景颜色设置为白色,边框半径设置为50%,并添加了一个box-shadow属性来设置阴影效果。当鼠标悬停在菜单按钮上时,菜单按钮的样式会发生变化。

.btn i {
  font-size: 32px;
}

这段代码是设置菜单按钮的图标样式,将菜单按钮的字体大小设置为32px。

.menu span {
  position: absolute;
  left: 0;
  transform-origin: 100px;
  transition:.5s;
  transition-delay: calc(.1s * var(--i));
  transform: rotate(0deg) translateX(80px);
  width: 40px;
  height: 40px;
  background-color: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 50%;
  cursor: pointer;
  box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15);
}

这段代码是设置菜单按钮旋转的小圆圈的样式,将小圆圈的位置设置为绝对定位,左边距设置为0,将小圆圈的旋转中心设置为100px,并添加了一个transition属性来设置过渡效果。当鼠标悬停在菜单按钮上时,小圆圈的位置会发生变化。

.menu:hover.btn {
  transform: rotate(315deg);
}

这段代码是设置鼠标悬停在菜单按钮上时的样式,将菜单按钮旋转315度。

.menu:hover span {
  transform: rotate(calc(360deg / 8 * var(--i)));
}

这段代码是设置鼠标悬停在菜单按钮上时,小圆圈的旋转效果。

.menu span i {
  transform: rotate(calc(360deg / -8 * var(--i)));
}

这段代码是设置小圆圈的旋转效果,将小圆圈的旋转方向设置为与菜单按钮的旋转方向相反。

.menu span:hover i {
  color: #f51760;
}

这段代码是设置鼠标悬停在小圆圈上时的样式,将小圆圈的颜色设置为#f51760。

@font-face {
  font-family: "iconfont";
  /* Project id 4090357 */
  src: url('//at.alicdn.com/t/c/font_4090357_z2qpnic06um.woff2?t=1685189584312') format('woff2'),
    url('//at.alicdn.com/t/c/font_4090357_z2qpnic06um.woff?t=1685189584312') format('woff'),
    url('//at.alicdn.com/t/c/font_4090357_z2qpnic06um.ttf?t=1685189584312') format('truetype');
}

这段代码是定义一个字体,将字体的名称设置为"iconfont",字体的来源设置为三个不同的格式,分别为woff2、woff和ttf。

.iconfont {
  font-family: "iconfont"!important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

这段代码是设置字体的样式,将字体的名称设置为"iconfont",字体的大小设置为16px,字体的样式设置为普通字体,并添加了一些属性来优化字体的显示效果。

.icon-add:before {
  content: "\e60c";
}

这段代码是定义一个图标,将图标的名称设置为"icon-add",将图标的Unicode编码设置为"\e60c",这个编码是阿里巴巴的图标库中的一个图标的编码。

.icon-home:before {
  content: "\e604";
}

这段代码是定义一个图标,将图标的名称设置为"icon-home",将图标的Unicode编码设置为"\e604",这个编码是阿里巴巴的图标库中的一个图标的编码。

.icon-more:before {
  content: "\e606";
}

这段代码是定义一个图标,将图标的名称设置为"icon-more",将图标的Unicode编码设置为"\e606",这个编码是阿里巴巴的图标库中的一个图标的编码。

.icon-gift:before {
  content: "\e611";
}

这段代码是定义一个图标,将图标的名称设置为"icon-gift",将图标的Unicode编码设置为"\e611",这个编码是阿里巴巴的图标库中的一个图标的编码。

.icon-setting:before {
  content: "\e612";
}

这段代码是定义一个图标,将图标的名称设置为"icon-setting",将图标的Unicode编码设置为"\e612",这个编码是阿里巴巴的图标库中的一个图标的编码。

.icon-message:before {
  content: "\e613";
}

这段代码是定义一个图标,将图标的名称设置为"icon-message",将图标的Unicode编码设置为"\e613",这个编码是阿里巴巴的图标库中的一个图标的编码。

.icon-star:before {
  content: "\e618";
}

这段代码是定义一个图标,将图标的名称设置为"icon-star",将图标的Unicode编码设置为"\e618",这个编码是阿里巴巴的图标库中的一个图标的编码。

.icon-cart:before {
    content: "\e61d";
}

这段代码是定义一个图标,将图标的名称设置为"icon-cart",将图标的Unicode编码设置为"\e61d",这个编码是阿里巴巴的图标库中的一个图标的编码。

.icon-money:before {
    content: "\e61e";
}

这段代码是定义一个图标,将图标的名称设置为"icon-money",将图标的Unicode编码设置为"\e61e",这个编码是阿里巴巴的图标库中的一个图标的编码。文章来源地址https://www.toymoban.com/news/detail-799985.html

到了这里,关于29 旋转工具箱的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • PDF 工具箱

    PDF 工具箱

    PDF 工具箱 V9.0.0.1 程序:VB.net  运行库: NET Framework 4.5 下载:https://download.csdn.net/download/polloo2012/88399029 功能简介: 1、PDF文件多文件合并,可调整顺序。 2、PDF文件拆分,将每页拆分成独立的PDF文件。 3、PDF文件添加水印,文字或图片水印,图片水印可选择位置。 4、word/exce

    2024年02月09日
    浏览(10)
  • 密码算法工具箱

    密码算法工具箱

    这是一个密码算法工具箱软件,包含大多数密码键盘的算法,您可以利用他做加解密、校验或者其他功能。 ①本工具包含对称密钥算法、MAC算法、PINBLOCK算法、Hash算法、非对称密钥算法的常用功能。 ②支持国际(RSA、DES、3DES)和国密(SM2、SM3、SM4)算法。 ③支持windows和l

    2024年01月19日
    浏览(10)
  • Matlab 优化工具箱

    Matlab 优化工具箱

    语法:[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,options) f、x、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩阵。 示例1-1 : 语法:[x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,x0,options) f、x、intcon、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩阵。 语法:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub

    2024年02月02日
    浏览(30)
  • Python工具箱系列(三十)

    Python工具箱系列(三十)

    MySQL的口号是“世界上最流行的开源关系型数据库”,而PostgreSQL的Slogan则是“世界上最先进的开源关系型数据库(PostgreSQL: The World\\\'s Most Advanced Open Source Relational Database)”,一看这就是一对老冤家了。这两个口号很好的反映出了两者的形象特质:PostgreSQL是功能丰富,高大上的严

    2024年02月03日
    浏览(14)
  • 前端 CSS 3D 照片墙自动旋转案例(详细步骤)

    前端 CSS 3D 照片墙自动旋转案例(详细步骤)

    案例动画 Gif 动画地址,图片太大传不上来! 案例 DEMO 源码地址 ,仅供参考。

    2024年01月18日
    浏览(10)
  • Python工具箱系列(四十一)

    Python工具箱系列(四十一)

           前文的代码示例了使用gzip对单个文件进行压缩。本文示例使用更通用的zipfile来批量压缩文件。zipfile也是python内置的库,使用起来非常方便。废话不说,直接上代码示例。        上述示例代码中,再次引入一个python内置的轻量级数据库dbm。与shelve类似,也是key-val

    2024年02月11日
    浏览(7)
  • Python工具箱系列(三十一)

    Python工具箱系列(三十一)

    Neo4j是一个高性能的开源的,使用Java语言实现的NoSQL图数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个

    2024年02月03日
    浏览(8)
  • Python工具箱系列(三十七)

    Python工具箱系列(三十七)

    二进制文件操作(上) python比较擅长与文本相关的操作。但现实世界中,对于非文本消息的处理也很普遍。例如: ◆通过有线、无线传递传感器获得的测量数据。 ◆卫星通过电磁波发送测量数据。 ◆数据中心的数万台服务器发送当前CPU的占用率信息、内存占用量等众多指标

    2024年02月11日
    浏览(8)
  • Java各种工具箱的使用

    就是给定一些字符串,如果一旦有空的就返回true,常用于判断好多字段是否有空的(例如web表单数据)。 这两个方法的区别是hasEmpty只判断是否为null或者空字符串(“”),hasBlank则会把不可见字符也算做空,isEmpty和isBlank同理。 避免subString方法越界问题,index的位置还支持

    2024年02月07日
    浏览(10)
  • Python工具箱系列(三十二)

    Elasticsearch是一个基于Lucene的搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful 的API接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是非常流行的企业级搜索引擎。官方支持的客户端语言包括Java、.NET(C#)、PHP、Python、Apa

    2024年02月05日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包