css实现炫酷的圆环相交转动动画

CSS:实现动态旋转效果/椭圆渐变圆环旋转/椭圆轨迹旋转 CSS:实现动态旋转效果 阅读详情

1.实现效果

1.实现原理

CSS perspective 属性:属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。
perspective 属性只影响 3D 转换元素。(请与 perspective-origin 属性一同使用该属性,这样您就能够改变 3D 元素的底部位置。)

perspective: number(元素距离视图的距离,以像素计。)|none(默认值。与 0 相同。不设置透视。)

transform-style:让转换的子元素保留3D转换。指定嵌套元素是怎样在三维空间中呈现,使用此属性必须先使用 transform 属性.。

transform-style: flat(表示所有子元素在2D平面呈现)|preserve-3d(表示所有子元素在3D空间中呈现);

pointer-events :设置元素是否对鼠标事件做出反应。 

pointer-events: auto|none;
/* 属性值 */
pointer-events: auto;//默认值,设置该属性链接可以正常点击访问
pointer-events: none;//元素不能对鼠标事件做出反应
pointer-events: visiblePainted; /* 只适用于 SVG */
pointer-events: visibleFill;    /* 只适用于 SVG */
pointer-events: visibleStroke;  /* 只适用于 SVG */
pointer-events: visible;        /* 只适用于 SVG */
pointer-events: painted;        /* 只适用于 SVG */
pointer-events: fill;           /* 只适用于 SVG */
pointer-events: stroke;         /* 只适用于 SVG */
pointer-events: all;            /* 只适用于 SVG */
/* 全局值 */
pointer-events: inherit;//从父元素继承该属性
pointer-events: initial;//initial 关键字用于设置 CSS 属性为它的默认值
pointer-events: unset;//

animation-delay:定义动画何时开始。
允许负值,-2s 使动画马上开始,但跳过 2 秒进入动画。

animation-delay: -2s /* W3C 和 Opera */
-moz-animation-delay: -2s /* Firefox */
-webkit-animation-delay: -2s /* Safari 和 Chrome */

3.实现步骤

3.1图例demo1

  • 画出三个半圆弧(只设置border-bottom)

 

.loading {
    position: relative;
    width: 8rem;
    height: 8rem;
    -webkit-transform-style: preserve-3d;
    transform-style: preserve-3d;
    -webkit-perspective: 40rem;
    perspective: 40rem;
    pointer-events: none;
    margin-bottom: 40px;
}

.loading .line {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    border-bottom: 0.15rem solid var(--color);
}
<div class="loading">
    <div class="line"></div>
    <div class="line"></div>
    <div class="line"></div>
</div>
  • 为每个圆弧设置transform进行一定角度的旋转
  • 圆弧1:

.loading .line:first-child {
    -webkit-animation: rotate1 1.15s linear infinite;
    animation: rotate1 1.15s linear infinite;
}
.loading .line:first-child {
    -webkit-animation-delay: -.8s;
    animation-delay: -.8s;
}
@keyframes rotate1 {
    0% {
        -webkit-transform: rotateX(35deg) rotateY(-45deg) rotate(0);
        transform: rotateX(35deg) rotateY(-45deg) rotate(0)
    }
    to {
        -webkit-transform: rotateX(35deg) rotateY(-45deg) rotate(1turn);
        transform: rotateX(35deg) rotateY(-45deg) rotate(1turn)
    }
}


圆弧2 

 

.loading .line:nth-child(2) {
    -webkit-animation: rotate2 1.15s linear infinite;
    animation: rotate2 1.15s linear infinite
}
.loading .line:nth-child(2) {
    -webkit-animation-delay: -.4s;
    animation-delay: -.4s
}
@keyframes rotate2 {
    0% {
        -webkit-transform: rotateX(50deg) rotateY(10deg) rotate(0);
        transform: rotateX(50deg) rotateY(10deg) rotate(0)
    }

    to {
        -webkit-transform: rotateX(50deg) rotateY(10deg) rotate(1turn);
        transform: rotateX(50deg) rotateY(10deg) rotate(1turn)
    }
}

圆弧3:

 

.loading .line:nth-child(3) {
    -webkit-animation: rotate3 1.15s linear infinite;
    animation: rotate3 1.15s linear infinite
}
.loading .line:nth-child(3) {
    -webkit-animation-delay: 0s;
    animation-delay: 0s
}
@-webkit-keyframes rotate3 {
    0% {
        -webkit-transform: rotateX(35deg) rotateY(55deg) rotate(0);
        transform: rotateX(35deg) rotateY(55deg) rotate(0)
    }

    to {
        -webkit-transform: rotateX(35deg) rotateY(55deg) rotate(1turn);
        transform: rotateX(35deg) rotateY(55deg) rotate(1turn)
    }
}

3.2图例demo2

  • 画出两个半圆弧(border-bottom+border-top)

 

<div class="loading loading2">
    <div class="line2"></div>
    <div class="line2"></div>
</div>
.loading2 .line2 {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    border-bottom: 0.1rem solid var(--color);
    border-top: 0.1rem solid var(--color);
}
  • 为每个圆弧设置transform进行一定角度的旋转
  • 圆弧1:

.loading2 .line2:nth-child(2) {
    -webkit-animation: rotate5 1.15s linear infinite;
    animation: rotate5 1.15s linear infinite
}
@keyframes rotate4 {
    0% {
        -webkit-transform: rotateX(55deg) rotateY(-30deg) rotate(0);
        transform: rotateX(55deg) rotateY(-30deg) rotate(0)
    }
    
    to {
        -webkit-transform: rotateX(55deg) rotateY(-30deg) rotate(1turn);
        transform: rotateX(55deg) rotateY(-30deg) rotate(1turn)
    }
}

 圆弧2:

.loading2 .line2:nth-child(2) {
    -webkit-animation: rotate5 1.15s linear infinite;
    animation: rotate5 1.15s linear infinite
}
@keyframes rotate5 {
    0% {
        -webkit-transform: rotateX(55deg) rotateY(30deg) rotate(0);
        transform: rotateX(55deg) rotateY(30deg) rotate(0)
    }

    to {
        -webkit-transform: rotateX(55deg) rotateY(30deg) rotate(1turn);
        transform: rotateX(55deg) rotateY(30deg) rotate(1turn)
    }
}

 4.完整代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <link rel="stylesheet" type="text/css" href="../common.css" />
    <style type="text/css">
        body {
            background: #222;
            overflow: hidden;
        }

        :root {
            --color: rgba(255, 165, 0, 1);
        }

        .loading {
            position: relative;
            width: 8rem;
            height: 8rem;
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
            -webkit-perspective: 40rem;
            perspective: 40rem;
            pointer-events: none;
            margin-bottom: 40px;
        }

        .loading .line {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            border-radius: 50%;
            border-bottom: 0.15rem solid var(--color);
        }


        .loading .line:first-child {
            -webkit-animation: rotate1 1.15s linear infinite;
            animation: rotate1 1.15s linear infinite;
        }


        .loading .line:nth-child(2) {
            -webkit-animation: rotate2 1.15s linear infinite;
            animation: rotate2 1.15s linear infinite
        }

        .loading .line:nth-child(3) {
            -webkit-animation: rotate3 1.15s linear infinite;
            animation: rotate3 1.15s linear infinite
        }

        .loading .line:first-child {
            -webkit-animation-delay: -.8s;
            animation-delay: -.8s;
        }


        .loading .line:nth-child(2) {
            -webkit-animation-delay: -.4s;
            animation-delay: -.4s
        }

        .loading .line:nth-child(3) {
            -webkit-animation-delay: 0s;
            animation-delay: 0s
        }


        @keyframes rotate1 {
            0% {
                -webkit-transform: rotateX(35deg) rotateY(-45deg) rotate(0);
                transform: rotateX(35deg) rotateY(-45deg) rotate(0)
            }

            to {
                -webkit-transform: rotateX(35deg) rotateY(-45deg) rotate(1turn);
                transform: rotateX(35deg) rotateY(-45deg) rotate(1turn)
            }
        }

        @keyframes rotate2 {
            0% {
                -webkit-transform: rotateX(50deg) rotateY(10deg) rotate(0);
                transform: rotateX(50deg) rotateY(10deg) rotate(0)
            }

            to {
                -webkit-transform: rotateX(50deg) rotateY(10deg) rotate(1turn);
                transform: rotateX(50deg) rotateY(10deg) rotate(1turn)
            }
        }

        @keyframes rotate3 {
            0% {
                -webkit-transform: rotateX(35deg) rotateY(55deg) rotate(0);
                transform: rotateX(35deg) rotateY(55deg) rotate(0)
            }

            to {
                -webkit-transform: rotateX(35deg) rotateY(55deg) rotate(1turn);
                transform: rotateX(35deg) rotateY(55deg) rotate(1turn)
            }
        }

        /* 第二个 */
        .loading2 .line2 {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            border-radius: 50%;
            border-bottom: 0.1rem solid var(--color);
            border-top: 0.1rem solid var(--color);
        }

        .loading2 .line2:first-child {
            -webkit-animation: rotate4 1.15s linear infinite;
            animation: rotate4 1.15s linear infinite;
        }

        .loading2 .line2:nth-child(2) {
            -webkit-animation: rotate5 1.15s linear infinite;
            animation: rotate5 1.15s linear infinite
        }

        @keyframes rotate4 {
            0% {
                -webkit-transform: rotateX(55deg) rotateY(-30deg) rotate(0);
                transform: rotateX(55deg) rotateY(-30deg) rotate(0)
            }

            to {
                -webkit-transform: rotateX(55deg) rotateY(-30deg) rotate(1turn);
                transform: rotateX(55deg) rotateY(-30deg) rotate(1turn)
            }
        }

        @keyframes rotate5 {
            0% {
                -webkit-transform: rotateX(55deg) rotateY(30deg) rotate(0);
                transform: rotateX(55deg) rotateY(30deg) rotate(0)
            }

            to {
                -webkit-transform: rotateX(55deg) rotateY(30deg) rotate(1turn);
                transform: rotateX(55deg) rotateY(30deg) rotate(1turn)
            }
        }
    </style>
    <body>
        <section>
            <div class="loading">
                <div class="line"></div>
                <div class="line"></div>
                <div class="line"></div>
            </div>
            <div class="loading loading2">
                <div class="line2"></div>
                <div class="line2"></div>
            </div>
        </section>
    </body>
</html>

 

 

 

 

 

 

 

 

 

clip实现圆环环绕效果     最近遇到一个需求,需要实现一个圆形环绕效果,通过查阅相关资料,打算通过clip来实现圆环环绕的效果 1. Cliip 首先查看clip的定义: 通过定义来理解可能还是有点困难,下面通过几个例子可以快速帮你理解Clip的用法。 2.Clip实例     首先通过下列代码创建一个矩形框 <!DOCTYPE html> <html> <head> <meta charset= 阅读详情

相关推荐

【HTML——旋转光圈特效】(效果+代码)

分享一个HTML旋转光圈特效。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 959

css的rotate3d实现炫酷的圆环转动动画

css的rotate3d实现炫酷的圆环转动动画

苏苏就是小苏苏的博客 1万+

动态圆环交叉重叠焦点图特效实现

本文还有配套的精品资源,点击获取 简介:该特效代码通过HTML、CSS和JavaScript技术实现了一个动态的图片展示技术,具有独特的圆环交叉重叠布局和通过左右箭头实现的图片切换效果。提供响应式设计和自定义选项,优化用户体验。 1. 动态圆环交叉重叠布局设计 动态圆环交叉重叠布局是现代网页设计中一种富有吸引力的视觉效果,它不仅增强了用户的视觉体验,还能有效...

weixin_42393362的博客 1237

抽奖动画效果html,利用css实现一个抽奖动画效果

首先我们先来看下最终的运行效果:从效果图我们可以看到,抽奖会自动进行,并显示中奖信息。这个效果基本是用CSS实现的,没有用图片,加一丢丢JS。完全没有考虑兼容性。具体步骤如下:首先画一个转盘幸运大转盘/* 重置默认样式 */* {margin: 0;padding: 0;border: none;outline: none;}.wrapper {position: relative;height:...

weixin_34058060的博客 3115

CSS3环形旋转特效实现教程与代码

本文还有配套的精品资源,点击获取 简介:CSS3的 rotate 属性允许通过旋转操作实现网页元素的动态变形,本教程将深入讲解如何利用此属性结合动画创建超炫的环形旋转效果。通过定义一系列子元素并设置适当的动画,可以构造出引人注目的环形旋转特效。本文提供了一套完整的HTML和CSS代码,以及使用帮助文档,旨在帮助开发者理解和应用这些技术来增强网页设计。 ...

weixin_35649491的博客 1965

html5 canvas酷炫水晶光圈旋转动画特效

html5 canvas酷炫水晶光圈旋转动画特效,多个同心圆水晶光圈组合圆环旋转动画效果。

别用图片了,CSS 遮罩合成实现带圆角的环形 loading 动画

上面的实现虽然很好的满足了需求,但是,还是有些CSS设计问题。比如,我如果需要改变 loading 的颜色,需要改变两个地方。很明显,这样的实现不太符合 DRY(Don't Repeat Yourself)原则。有一个比较简单思路可以用 CSS 变量来传递。loading{这样每次都只需要改变一个变量就行了。除了这种方式以外,其实还有一点需要考虑,为啥背景不能干净一点、纯粹一点呢?换个说法,现在的背景实现对于不了解的同学来讲,可能会很费劲,能否将这些细节隐藏起来,更直观地去自定义颜色呢?

Jack, what else can you do besides holding your little darling? 1247

css3如何绘制一个圆圆的loading转圈动画

如何绘制一个圆圆的loading圈 小程序里需要一个像下面的loading,原生的没有,引入别的组件库又太大,所有决定自己写个。 1.基本原理 动态的实现原理是给8个小圆圈设置透明度由大变小的动画,每个圆圈设置不同的动画启动时间。布局的实现原理是父元素设置为position: relative, 每个圆圈设置样式为position: absolute; left: xx; top: xx; right: xx; bottom: xx。 通过给left/right/top/bottom设置不同的值将其均匀的分布在一个圆圈上。html代码如下: <view class=q-loading-

用html实现抽奖大转盘,【项目实战】用CSS实现一个抽奖转盘(附详细代码+思路)...

原标题:【项目实战】用CSS实现一个抽奖转盘(附详细代码+思路)效果 基本是用CSS实现的,没有用图片,加一丢丢JS。 完全没有考虑兼容性。首先画一个转盘< htmllang= "en">< head>< metacharset= "UTF-8">< title>幸运大转盘 title>< style>/* 重置默认样式 */* ...

weixin_33675283的博客 6774

HTML5 Canvas圆形旋转加载动画特效

一组简单扁平风格的HTML5 Canvas圆形旋转加载动画特效,圆环转动网页加载动画,包含6种样式。

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1042

3 css 奖品出现弹出动画_【项目实战】用CSS实现一个抽奖转盘(附详细代码+思路)...

效果基本是用CSS实现的,没有用图片,加一丢丢JS。完全没有考虑兼容性。首先画一个转盘<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <title>幸运大转盘</title> <style> /* 重置默认样式 */ ...

weixin_34365336的博客 690

AFSim编译一:windows

AFSim在windows上的编译

Meepo的博客 4734

html css年会照片抽奖,利用css实现一个抽奖动画效果

首先我们先来看下最终的运行效果:从效果图我们可以看到,抽奖会自动进行,并显示中奖信息。这个效果基本是用CSS实现的,没有用图片,加一丢丢JS。完全没有考虑兼容性。具体步骤如下:首先画一个转盘幸运大转盘/* 重置默认样式 */* {margin: 0;padding: 0;border: none;outline: none;}.wrapper {position: relative;height:...

weixin_39789690的博客 981

C++游戏开发入门:从环境配置到第一个完整项目

C++ 作为游戏开发领域的关键语言,其学习路径常因语法枯燥而令初学者却步。以项目驱动的方式学编程,能帮助学习者将变量、循环、函数、指针等基础概念融入实际游戏逻辑中,获得即时反馈与完整项目经验。掌握合适的开发环境是高效实践的前提,例如在 Windows 下使用 VS Code 搭配 MinGW-w64 编译器,配合调试器与构建脚本,即可搭建轻量可扩展的 C++ 游戏开发工作流。此类课程通常面向无基础人群,从控制台小游戏逐步过渡到带游戏循环的完整作品,过程中还需关注性能观察、素材授权与版本管理。无论你是刚接触编

weixin_30621959的博客 540

Matlab中eig内置函数转为C语言

本文记录一下如何将MATLAB中的eig函数转为C语言,即通过C语言求解矩阵的特征值与特征向量。[V,D]=eig(Rx)中V为矩阵Rx的特征向量,D为矩阵的特征值。其中Rx维度为12*12的复矩阵。 首先在MATLAB端创建入口函数保存为eigvalue.m: 打开MATLAB Coder,添加入口函数: 3.在定义输入类型窗口中,需要添加输入数据来训练...

u011441044的博客 3515

css幸运大转盘,用CSS实现一个抽奖转盘

基本是用CSS实现的,没有用图片,加一丢丢JS。完全没有考虑兼容性。首先画一个转盘html>幸运大转盘/*重置默认样式*/*{margin:0;padding:0;border:none;outline:none;}.wrapper{position:relative;height:200px;width:200px;padding:20px;margin:20px...

weixin_32407987的博客 2682

基于555定时器的呼吸灯电路

呼吸灯是指LED灯在芯片的控制下完成由亮到暗的逐渐变化,感觉就像人在呼吸,其广泛使用在手机上,起到一个通知提醒的作用。呼吸灯在许多灯光装饰上也有大量使用,如音响、汽车广告牌等,在生活中较为常见。...

qq1074237849的博客 9491

css animation动画完成后隐藏_【项目实战】用CSS实现一个抽奖转盘(附详细代码+思路)...

△是新朋友吗?记得先点web前端学习圈关注我哦~效果基本是用CSS实现的,没有用图片,加一丢丢JS。完全没有考虑兼容性。首先画一个转盘<html lang="en"><head> <meta charset="UTF-8"> <title>幸运大转盘title> <style> /* 重置默认样式 */ ...

weixin_39862985的博客 305

基于matlab的图像HOG特征提取算法仿真

方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 730

LVGL 丝滑菜单3(Silk Menu)

h。

摸鱼专家 88

html css 奥运五环,使用css3怎么实现一个奥运五环

使用css3怎么实现一个奥运五环发布时间:2021-04-06 16:52:39来源:亿速云阅读:93作者:Leah这篇文章将为大家详细讲解有关使用css3怎么实现一个奥运五环,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、z-index调各环的层级关系2、transparent设置透明度具体代码:html>Title*{margin:0...

weixin_34977480的博客 492

在 SAP Gateway 主机上把 SAML 2.0 配置为 Service Provider:从架构到落地的完整实战

本文详细介绍了在SAP Gateway主机上配置SAML 2.0作为Service Provider的全流程。从概念梳理到实际操作,涵盖了关键步骤:启用本地SP服务、通过反向代理导出元数据、在IdP侧完成对接、配置信任关系与Artifact绑定、设置NameID身份联合等核心环节。特别强调了HTTP Artifact绑定的背道通信机制和证书配置要点,并针对常见错误提供了排障指引。文章注重实操性,结合SAP官方文档与社区最佳实践,为运维团队提供了一套完整的SAML SSO实施框架。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 148

3 css 奖品出现弹出动画_纯手工CSS写抽奖转盘

基本是用CSS实现的,没有用图片,加一丢丢JS。完全没有考虑兼容性。首先画一个转盘,<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>幸运大转盘</title> <style> /* 重置默认样式 */ * { ...

weixin_39955825的博客 178

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

css animation动画完成后隐藏_【项目实战】用CSS实现一个抽奖转盘(附详细代码+思路)

效果基本是用CSS实现的,没有用图片,加一丢丢JS。完全没有考虑兼容性。首先画一个转盘<!效果如下,配色什么的不要在意,可能比较丑。。。然后写抽奖指针的小箭头,用CSS画三角形是一个比较常见的问题,通过设置width和height为0,然后用border实现。如图,矩形是由四个三角形边框组成的,只要设置其它边颜色为透明,就可以获得单独的三角形。这里通过伪元素after实现三角形,并通过绝对定...

weixin_39932458的博客 337

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: 【CSS3】CSS3动画——前端的炫酷
下一篇: JS 创建对象(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式,寄生构造函数模式,稳妥构造函数模式)
狗都不敲代码
博客等级 码龄4年 7粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值