广告位联系
返回顶部
分享到

纯CSS实现loading加载中效果(多种展现形式)

css 来源:互联网 作者:佚名 发布时间:2023-02-12 20:45:14 人浏览
摘要

前言 现如今网页越来越趋近于动画,相信大家平时浏览网页或多或少都能看到一些动画效果,今天我们来做一个有意思的动画效果,纯css实现loading加载中(多种展现形式),下面一起

前言

现如今网页越来越趋近于动画,相信大家平时浏览网页或多或少都能看到一些动画效果,今天我们来做一个有意思的动画效果,纯 css 实现 loading 加载中(多种展现形式),下面一起看看吧。

1. 常规 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

<template>

  <div class="parentBox">

    <div class="loadBox">

      <div class="loaderContantBox"></div>

    </div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .loadBox .loaderContantBox {

    color: white;

    font-size: 40px;

    overflow: hidden;

    width: 40px;

    height: 40px;

    border-radius: 50%;

    transform: translateZ(0);

    /* animation:规定完成动画所花费的时间,该属性必须规定,否则动画时长为0,无法播放 */

    animation: loadBox 1.7s infinite ease, round 1.7s infinite ease;

  }

 

  @keyframes loadBox {

    0% {

      box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em,

        0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;

    }

 

    5%,

    95% {

      box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em,

        0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;

    }

 

    10%,

    59% {

      box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em,

        -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em,

        -0.297em -0.775em 0 -0.477em;

    }

 

    20% {

      box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em,

        -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em,

        -0.749em -0.34em 0 -0.477em;

    }

 

    38% {

      box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em,

        -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em,

        -0.82em -0.09em 0 -0.477em;

    }

 

    100% {

      box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em,

        0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;

    }

  }

 

  @keyframes round {

    0% {

      transform: rotate(0deg); /* 开始旋转 div 元素 */

    }

 

    100% {

      transform: rotate(360deg); /* 结束旋转 div 元素 */

    }

  }

}

</style>

2. 抛出线条式 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

<template>

  <div class="parentBox">

    <svg class="scalableBox" viewBox="0 0 128 256" width="128px" height="256px" xmlns="http://www.w3.org/2000/svg">

      <defs>

        <linearGradient id="ap-grad1" x1="0" y1="0" x2="0" y2="1">

          <stop offset="0%" stop-color="hsl(223,90%,55%)" />

          <stop offset="100%" stop-color="hsl(253,90%,55%)" />

        </linearGradient>

        <linearGradient id="ap-grad2" x1="0" y1="0" x2="0" y2="1">

          <stop offset="0%" stop-color="hsl(193,90%,55%)" />

          <stop offset="50%" stop-color="hsl(223,90%,55%)" />

          <stop offset="100%" stop-color="hsl(253,90%,55%)" />

        </linearGradient>

      </defs>

      <circle class="apringBox" r="56" cx="64" cy="192" fill="none" stroke="#ddd" stroke-width="16" stroke-linecap="round" />

      <circle class="apwormOneBox" r="56" cx="64" cy="192" fill="none" stroke="url(#ap-grad1)" stroke-width="16" stroke-linecap="round"

        stroke-dasharray="87.96 263.89" />

      <path class="apwormTwoBox" d="M120,192A56,56,0,0,1,8,192C8,161.07,16,8,64,8S120,161.07,120,192Z" fill="none" stroke="url(#ap-grad2)"

        stroke-width="16" stroke-linecap="round" stroke-dasharray="87.96 494" />

    </svg>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .scalableBox {

    width: 40px;

    height: 70px;

  }

  .apringBox {

    transition: stroke 0.3s;

  }

 

  .apwormOneBox,

  .apwormTwoBox {

    animation-duration: 3s;

    animation-iteration-count: infinite;

  }

  .apwormTwoBox {

    animation-name: worm2;

    visibility: hidden;

  }

  .apwormOneBox {

    animation-name: worm1;

  }

}

 

@media (prefers-color-scheme: dark) {

  :root {

    --bg: hsl(var(--hue), 10%, 10%);

    --fg: hsl(var(--hue), 10%, 90%);

  }

 

  .apringBox {

    stroke: hsla(var(--hue), 10%, 90%, 0.9);

  }

}

 

@keyframes worm1 {

  from {

    animation-timing-function: ease-in-out;

    stroke-dashoffset: -87.96;

  }

 

  20% {

    animation-timing-function: ease-in;

    stroke-dashoffset: 0;

  }

 

  60% {

    stroke-dashoffset: -791.68;

    visibility: visible;

  }

 

  60.1%,

  to {

    stroke-dashoffset: -791.68;

    visibility: hidden;

  }

}

 

@keyframes worm2 {

  from,

  60% {

    stroke-dashoffset: -87.96;

    visibility: hidden;

  }

 

  60.1% {

    animation-timing-function: cubic-bezier(0, 0, 0.5, 0.75);

    stroke-dashoffset: -87.96;

    visibility: visible;

  }

 

  77% {

    animation-timing-function: cubic-bezier(0.5, 0.25, 0.5, 0.88);

    stroke-dashoffset: -340;

    visibility: visible;

  }

 

  to {

    stroke-dashoffset: -669.92;

    visibility: visible;

  }

}

</style>

3. 进度条颜色覆盖式 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    width: 120px;

    height: 20px;

    background: linear-gradient(rgb(12, 132, 223) 0 0) 0/0% no-repeat #ddd;

    animation: cartoon 2s infinite linear;

  }

 

  @keyframes cartoon {

    100% {

      background-size: 100%;

    }

  }

}

</style>

4. 椭圆式进度条 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    width: 120px;

    height: 22px;

    border-radius: 20px;

    color: #514b82;

    border: 2px solid;

    position: relative;

  }

  .contantBox::before {

    content: "";

    position: absolute;

    margin: 2px;

    inset: 0 100% 0 0;

    border-radius: inherit;

    background: #514b82;

    animation: cartoon 2s infinite;

  }

 

  @keyframes cartoon {

    100% {

      inset: 0;

    }

  }

}

</style>

5. 卡顿式进度条 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    width: 120px;

    height: 20px;

    border-radius: 20px;

    background: linear-gradient(orange 0 0) 0/0% no-repeat lightblue;

    animation: cartoon 2s infinite steps(10);

  }

 

  @keyframes cartoon {

    100% {

      background-size: 110%;

    }

  }

}

</style>

 

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    width: 120px;

    height: 20px;

    border-radius: 20px;

    background: linear-gradient(orange 0 0) 0/0% no-repeat lightblue;

    animation: cartoon 2s infinite steps(10);

  }

 

  @keyframes cartoon {

    100% {

      background-size: 110%;

    }

  }

}

</style>

6. 进度条波纹 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    width: 120px;

    height: 20px;

    border-radius: 20px;

    background: repeating-linear-gradient(

          135deg,

          #f03355 0 10px,

          #ffa516 0 20px

        )

        0/0% no-repeat,

      repeating-linear-gradient(135deg, #ddd 0 10px, #eee 0 20px) 0/100%;

    animation: cartoon 2s infinite;

  }

 

  @keyframes cartoon {

    100% {

      background-size: 100%;

    }

  }

}

</style>

7. 进度条分隔式 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    width: 120px;

    height: 20px;

    -webkit-mask: linear-gradient(90deg, #000 70%, #0000 0) 0/20%;

    background: linear-gradient(rgb(73, 255, 57) 0 0) 0/0% no-repeat #ddd;

    animation: cartoon 2s infinite steps(6);

  }

 

  @keyframes cartoon {

    100% {

      background-size: 120%;

    }

  }

}

</style>

8. 圆球连接式 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    width: 120px;

    height: 24px;

    -webkit-mask: radial-gradient(circle closest-side, #000 94%, #0000) 0 0/25%

        100%,

      linear-gradient(#000 0 0) center/calc(100% - 12px) calc(100% - 12px)

        no-repeat;

    background: linear-gradient(#25b09b 0 0) 0/0% no-repeat #ddd;

    animation: cartoon 2s infinite linear;

  }

 

  @keyframes cartoon {

    100% {

      background-size: 100%;

    }

  }

}

</style>

9. 电池充电式 loading

实现效果

在这里插入图片描述

代码如下


 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    width: 80px;

    height: 40px;

    border: 2px solid rgb(103, 194, 58);

    padding: 3px;

    background: repeating-linear-gradient(

        90deg,

        rgb(103, 194, 58) 0 10px,

        #0000 0 16px

      )

      0/0% no-repeat content-box content-box;

    position: relative;

    animation: cartoon 2s infinite steps(6);

  }

  .contantBox::before {

    content: "";

    position: absolute;

    top: 50%;

    left: 100%;

    transform: translateY(-50%);

    width: 10px;

    height: 10px;

    border: 2px solid rgb(103, 194, 58);

  }

 

  @keyframes cartoon {

    100% {

      background-size: 120%;

    }

  }

}

</style>

10. 球体分隔式 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    width: 60px;

    height: 60px;

    border-radius: 50%;

    -webkit-mask: linear-gradient(0deg, #000 55%, #0000 0) bottom/100% 18.18%;

    background: linear-gradient(#f03355 0 0) bottom/100% 0% no-repeat #ddd;

    animation: cartoon 2s infinite steps(7);

  }

 

  @keyframes cartoon {

    100% {

      background-size: 100% 115%;

    }

  }

}

</style>

11. 水球波纹式 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    --r1: 154%;

    --r2: 68.5%;

    width: 60px;

    height: 60px;

    border-radius: 50%;

    background: radial-gradient(

          var(--r1) var(--r2) at top,

          #0000 79.5%,

          #269af2 80%

        )

        center left,

      radial-gradient(var(--r1) var(--r2) at bottom, #269af2 79.5%, #0000 80%)

        center center,

      radial-gradient(var(--r1) var(--r2) at top, #0000 79.5%, #269af2 80%)

        center right,

      #ccc;

    background-size: 50.5% 220%;

    background-position: -100% 0%, 0% 0%, 100% 0%;

    background-repeat: no-repeat;

    animation: cartoon 2s infinite linear;

  }

  @keyframes cartoon {

    33% {

      background-position: 0% 33%, 100% 33%, 200% 33%;

    }

 

    66% {

      background-position: -100% 66%, 0% 66%, 100% 66%;

    }

 

    100% {

      background-position: 0% 100%, 100% 100%, 200% 100%;

    }

  }

}

</style>

12. 半圆线条式 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<template>

  <div class="parentBox">

    <div class="contantBox"></div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .contantBox {

    width: 120px;

    height: 60px;

    border-radius: 200px 200px 0 0;

    -webkit-mask: repeating-radial-gradient(

      farthest-side at bottom,

      #0000 0,

      #000 1px 12%,

      #0000 calc(12% + 1px) 20%

    );

    background: radial-gradient(farthest-side at bottom, #514b82 0 95%, #0000 0)

      bottom/0% 0% no-repeat #ddd;

    animation: cartoon 2s infinite steps(6);

  }

  @keyframes cartoon {

    100% {

      background-size: 120% 120%;

    }

  }

}

</style>

13. 球体内小球跳跃式 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

<template>

  <div class="parentBox">

    <!-- 第一种 -->

    <div>

      <figure>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

      </figure>

    </div>

    <!-- 第二种 -->

    <div>

      <figure>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

      </figure>

    </div>

    <!-- 第三种 -->

    <div>

      <figure>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

      </figure>

    </div>

    <!-- 第四种 -->

    <div>

      <figure>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

        <section>

          <div></div>

        </section>

      </figure>

    </div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  display: flex;

  @keyframes move {

    from {

      transform: translate(0, 50%);

    }

 

    to {

      transform: translate(0, 850%);

    }

  }

  figure {

    margin: 10px;

    width: 40px;

    height: 40px;

    border-radius: 50%;

    position: relative;

    background: rgb(240,109,78);

  }

 

  section {

    width: 10%;

    height: 100%;

    position: absolute;

    left: 45%;

  }

 

  section:nth-child(2) {

    transform: rotate(22.5deg);

  }

 

  section:nth-child(3) {

    transform: rotate(45deg);

  }

 

  section:nth-child(4) {

    transform: rotate(67.5deg);

  }

 

  section:nth-child(5) {

    transform: rotate(90deg);

  }

 

  section:nth-child(6) {

    transform: rotate(112.5deg);

  }

 

  section:nth-child(7) {

    transform: rotate(135deg);

  }

 

  section:nth-child(8) {

    transform: rotate(157.5deg);

  }

 

  figure div {

    height: 10%;

    border-radius: 50%;

    background: #fff;

    animation: move 1s ease-in-out infinite alternate;

  }

 

  figure:nth-child(1) > section:nth-child(1) > div {

    animation-delay: -0.1875s;

  }

 

  figure:nth-child(1) > section:nth-child(2) > div {

    animation-delay: -0.175s;

  }

 

  figure:nth-child(1) > section:nth-child(3) > div {

    animation-delay: -0.1625s;

  }

 

  figure:nth-child(1) > section:nth-child(4) > div {

    animation-delay: -0.15s;

  }

 

  figure:nth-child(1) > section:nth-child(5) > div {

    animation-delay: -0.9375s;

  }

 

  figure:nth-child(1) > section:nth-child(6) > div {

    animation-delay: -0.925s;

  }

 

  figure:nth-child(1) > section:nth-child(7) > div {

    animation-delay: -0.9125s;

  }

 

  figure:nth-child(1) > section:nth-child(8) > div {

    animation-delay: -0.9s;

  }

 

  figure:nth-child(2) > section:nth-child(1) > div {

    animation-delay: -0.875s;

  }

 

  figure:nth-child(2) > section:nth-child(2) > div {

    animation-delay: -0.75s;

  }

 

  figure:nth-child(2) > section:nth-child(3) > div {

    animation-delay: -0.625s;

  }

 

  figure:nth-child(2) > section:nth-child(4) > div {

    animation-delay: -0.5s;

  }

 

  figure:nth-child(2) > section:nth-child(5) > div {

    animation-delay: -0.375s;

  }

 

  figure:nth-child(2) > section:nth-child(6) > div {

    animation-delay: -0.25s;

  }

 

  figure:nth-child(2) > section:nth-child(7) > div {

    animation-delay: -0.125s;

  }

 

  figure:nth-child(3) > section:nth-child(1) > div {

    animation-delay: -0.5s;

  }

 

  figure:nth-child(3) > section:nth-child(3) > div {

    animation-delay: -0.5s;

  }

 

  figure:nth-child(3) > section:nth-child(5) > div {

    animation-delay: -0.5s;

  }

 

  figure:nth-child(3) > section:nth-child(7) > div {

    animation-delay: -0.5s;

  }

 

  figure:nth-child(4) > section:nth-child(1) > div {

    animation-delay: -0.35s;

  }

 

  figure:nth-child(4) > section:nth-child(2) > div {

    animation-delay: -0.3s;

  }

 

  figure:nth-child(4) > section:nth-child(3) > div {

    animation-delay: -0.25s;

  }

 

  figure:nth-child(4) > section:nth-child(4) > div {

    animation-delay: -0.2s;

  }

 

  figure:nth-child(4) > section:nth-child(5) > div {

    animation-delay: -0.15s;

  }

 

  figure:nth-child(4) > section:nth-child(6) > div {

    animation-delay: -0.1s;

  }

 

  figure:nth-child(4) > section:nth-child(7) > div {

    animation-delay: -0.05s;

  }

}

</style>

14. 球体内动图式 loading

实现效果

在这里插入图片描述

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

<template>

  <div class="parentBox">

    <div class="containerBox">

      <!-- 第一种 -->

      <div class="canvasBox">

        <div class="spinnerOneBox spinnerMaxBox">

          <div class="spinnerOneBox spinnerMidBox">

            <div class="spinnerOneBox spinnerMinBox"></div>

          </div>

        </div>

      </div>

      <!-- 第二种 -->

      <div class="canvasBox canvasTwoBox">

        <div class="spinnerTwoBox"></div>

        <div class="hourHandBox"></div>

        <div class="dotBox"></div>

      </div>

      <!-- 第三种 -->

      <div class="canvasBox">

        <div class="spinnerThreeBox"></div>

      </div>

      <!-- 第四种 -->

      <div class="canvasBox">

        <div class="spinnerFourBox"></div>

      </div>

      <!-- 第五种 -->

      <div class="canvasBox">

        <div class="spinnerFiveBox"></div>

      </div>

      <!-- 第六种 -->

      <div class="canvasBox">

        <div class="spinnerSexBox p1"></div>

        <div class="spinnerSexBox p2"></div>

        <div class="spinnerSexBox p3"></div>

        <div class="spinnerSexBox p4"></div>

      </div>

    </div>

  </div>

</template>

<style lang="less" scoped>

.parentBox {

  height: 100%;

  background: rgb(31, 31, 31);

  padding: 100px;

  .containerBox {

    display: flex;

    .canvasBox {

      align-items: center;

      background: #eeeeee;

      border-radius: 50%;

      display: flex;

      justify-content: center;

      margin: 1em;

      width: 10em;

      height: 10em;

      // 第一种

      .spinnerOneBox {

        align-items: center;

        border: 0.3em solid transparent;

        border-top: 0.3em solid #4db6ac;

        border-right: 0.3em solid #4db6ac;

        border-radius: 100%;

        display: flex;

        justify-content: center;

      }

      .spinnerMaxBox {

        animation: spinnerOne 3s linear infinite;

        height: 3em;

        width: 3em;

        .spinnerMidBox {

          animation: spinnerOne 5s linear infinite;

          height: 2.4em;

          width: 2.4em;

          .spinnerMinBox {

            animation: spinnerOne 5s linear infinite;

            height: 1.8em;

            width: 1.8em;

          }

        }

      }

    }

    @keyframes spinnerOne {

      0% {

        transform: rotate(0deg);

      }

      100% {

        transform: rotate(360deg);

      }

    }

    // 第二种

    .canvasTwoBox {

      position: relative;

      .spinnerTwoBox {

        animation: spinnerTwo 1s linear infinite;

        background: #4db6ac;

        border-radius: 100px;

        height: 3em;

        transform-origin: top;

        position: absolute;

        top: 50%;

        width: 0.22em;

      }

      .hourHandBox {

        animation: spinnerTwo 7s linear infinite;

        background: #4db6ac;

        border-radius: 100px;

        height: 2em;

        transform-origin: top;

        position: absolute;

        top: 50%;

        width: 0.2em;

      }

      .dotBox {

        background: #4db6ac;

        border-radius: 100%;

        height: 0.5em;

        width: 0.5em;

      }

    }

    @keyframes spinnerTwo {

      0% {

        transform: rotate(0deg);

      }

      100% {

        transform: rotate(360deg);

      }

    }

    // 第三种

    .spinnerThreeBox {

      animation: spinnerThree 1s linear infinite;

      background: #4db6ac;

      border-radius: 100%;

      width: 3em;

      height: 3em;

    }

 

    @keyframes spinnerThree {

      0%,

      35% {

        background: #4db6ac;

        transform: scale(1);

      }

      20%,

      50% {

        background: #80cbc4;

        transform: scale(1.3);

      }

    }

    // 第四种

    .spinnerFourBox {

      animation: spinnerFour 1s linear infinite;

      border: solid 7px transparent;

      border-top: solid 7px #4db6ac;

      border-radius: 100%;

      width: 3em;

      height: 3em;

    }

 

    @keyframes spinnerFour {

      0% {

        transform: rotate(0deg);

      }

      100% {

        transform: rotate(360deg);

      }

    }

    // 第五种

    .spinnerFiveBox {

      animation: spinnerFive 1s linear infinite;

      border: solid 1.5em #4db6ac;

      border-right: solid 1.5em transparent;

      border-left: solid 1.5em transparent;

      border-radius: 100%;

      width: 0;

      height: 0;

    }

 

    @keyframes spinnerFive {

      0% {

        transform: rotate(0deg);

      }

      50% {

        transform: rotate(60deg);

      }

      100% {

        transform: rotate(360deg);

      }

    }

    // 第六种

    .spinnerSexBox {

      background: #4db6ac;

      border-radius: 50%;

      height: 1em;

      margin: 0.1em;

      width: 1em;

    }

 

    .p1 {

      animation: fall 1s linear 0.3s infinite;

    }

 

    .p2 {

      animation: fall 1s linear 0.2s infinite;

    }

 

    .p3 {

      animation: fall 1s linear 0.1s infinite;

    }

 

    .p4 {

      animation: fall 1s linear infinite;

    }

    @keyframes fall {

      0% {

        transform: translateY(-15px);

      }

      25%,

      75% {

        transform: translateY(0);

      }

      100% {

        transform: translateY(-15px);

      }

    }

  }

}

</style>


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 基于CSS实现元素融合效果

    基于CSS实现元素融合效果
    实现效果 完整源码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
  • 纯CSS实现loading加载中效果(多种展现形式)

    纯CSS实现loading加载中效果(多种展现形式)
    前言 现如今网页越来越趋近于动画,相信大家平时浏览网页或多或少都能看到一些动画效果,今天我们来做一个有意思的动画效果,纯css实
  • html+css设计两个摆动的大灯笼

    html+css设计两个摆动的大灯笼
    新年马上就要到了,教大家用html+css设计两个大灯笼,喜气洋洋。 html代码: html代码部分非常简单,将一个灯笼分成几部分进行设计,灯笼
  • CSS-@规则(At-rules)常用语法使用总结
    At-rules规则是目前CSS中一种常见的语法规则,它使用一个@符号加一个关键词定义,后面跟上语法区块,如果没有则以分号结束即可。 这种规
  • css实现简易报警灯的代码

    css实现简易报警灯的代码
    实现效果 实现思路 实现的核心是一个灯罩和一个灯芯。灯罩主要是使用了border-radius圆角边框,灯芯主要是radial-gradient径向渐变。再使用动
  • CSS3使用双旋转实现福到了的迎春喜庆特效代码

    CSS3使用双旋转实现福到了的迎春喜庆特效代码
    春节快到了,因为疫情已经好久没有回老家了,今年终于可以回家过年了,我已经抑制不住自己激动的心情了。因此,我利用css3的旋转做了
  • 三分钟学会使用css雪碧图

    三分钟学会使用css雪碧图
    一. 先分析一下名字(有没有人跟我一开始一样疑惑为啥叫这名) Sprite 英文小精灵的意思,Sprite又叫小精灵图,恰好呢某绿瓶气泡水名也叫
  • css实现文字充电效果的代码

    css实现文字充电效果的代码
    今年Apple推出了搭载M2芯片的新款MacBook Pro和MacBook Air,得到消息第一时间也是去Apple官网看看介绍,看看他们的产品网页,这次没有什么特别
  • CSS动画实现跳动的足球(疯狂世界杯)

    CSS动画实现跳动的足球(疯狂世界杯)
    022卡塔尔世界杯正在如火如荼的进行之中,作为诸神的黄昏,本届世界杯备受瞩目,足坛巅峰老将c罗,梅西,内马尔也将随本次世界杯退役
  • 利用css动画实现节流的介绍

    利用css动画实现节流的介绍
    节流指的避免过于频繁的执行一个函数,例如:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,不
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计