【HTML CSS JS 蝴蝶飞舞特效 绝美(附完整代码)】

这篇博客介绍了如何使用HTML、CSS和JavaScript创建蝴蝶飞舞的视觉效果,包括SVG元素的使用、CSS关键帧动画以及3D旋转。通过详细的代码示例展示了如何实现蝴蝶翅膀的翻动和飞行轨迹,为前端开发者提供了一种创造动态网页元素的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<svg class=“wing left” viewBox=“0 0 50 100”

style="-webkit-animation-duration: .35s;

-moz-animation-duration: .35s;

-ms-animation-duration: .35s;

-o-animation-duration: .35s;

animation-duration: .35s;">

<svg class=“wing right” viewBox=“0 0 50 100”

style="-webkit-animation-duration: .35s;

-moz-animation-duration: .35s;

-ms-animation-duration: .53s;

-o-animation-duration: .35s;

animation-duration: .35s;">

style="margin-top: -250px; margin-left: 300px;

-webkit-animation-duration: 4s;

-moz-animation-duration: 4s;

-ms-animation-duration: 4s;

-o-animation-duration: 4s;

animation-duration: 4s;">

<svg class=“wing left” viewBox=“0 0 50 100”

style="-webkit-animation-duration: .45s;

-moz-animation-duration: .45s;

-ms-animation-duration: .45s;

-o-animation-duration: .45s;

animation-duration: .45s;">

<svg class=“wing right” viewBox=“0 0 50 100”

style="-webkit-animation-duration: .45s;

-moz-animation-duration: .45s;

-ms-animation-duration: .45s;

-o-animation-duration: .45s;

animation-duration: .45s;">

style.css

/**

  • MIXINS

*/

/* SYMBOLS */

/**

  • KEYFRAMES

*/

@-webkit-keyframes rotating {

0% {

-webkit-transform: rotate3d(0, 0, 0, 0deg);

-moz-transform: rotate3d(0, 0, 0, 0deg);

-ms-transform: rotate3d(0, 0, 0, 0deg);

-o-transform: rotate3d(0, 0, 0, 0deg);

transform: rotate3d(0, 0, 0, 0deg);

}

100% {

-webkit-transform: rotate3d(0, 1, 0, 720deg);

-moz-transform: rotate3d(0, 1, 0, 720deg);

-ms-transform: rotate3d(0, 1, 0, 720deg);

-o-transform: rotate3d(0, 1, 0, 720deg);

transform: rotate3d(0, 1, 0, 720deg);

}

}

@-moz-keyframes rotating {

0% {

-webkit-transform: rotate3d(0, 0, 0, 0deg);

-moz-transform: rotate3d(0, 0, 0, 0deg);

-ms-transform: rotate3d(0, 0, 0, 0deg);

-o-transform: rotate3d(0, 0, 0, 0deg);

transform: rotate3d(0, 0, 0, 0deg);

}

100% {

-webkit-transform: rotate3d(0, 1, 0, 720deg);

-moz-transform: rotate3d(0, 1, 0, 720deg);

-ms-transform: rotate3d(0, 1, 0, 720deg);

-o-transform: rotate3d(0, 1, 0, 720deg);

transform: rotate3d(0, 1, 0, 720deg);

}

}

@-ms-keyframes rotating {

0% {

-webkit-transform: rotate3d(0, 0, 0, 0deg);

-moz-transform: rotate3d(0, 0, 0, 0deg);

-ms-transform: rotate3d(0, 0, 0, 0deg);

-o-transform: rotate3d(0, 0, 0, 0deg);

transform: rotate3d(0, 0, 0, 0deg);

}

100% {

-webkit-transform: rotate3d(0, 1, 0, 720deg);

-moz-transform: rotate3d(0, 1, 0, 720deg);

-ms-transform: rotate3d(0, 1, 0, 720deg);

-o-transform: rotate3d(0, 1, 0, 720deg);

transform: rotate3d(0, 1, 0, 720deg);

}

}

@-o-keyframes rotating {

0% {

-webkit-transform: rotate3d(0, 0, 0, 0deg);

-moz-transform: rotate3d(0, 0, 0, 0deg);

-ms-transform: rotate3d(0, 0, 0, 0deg);

-o-transform: rotate3d(0, 0, 0, 0deg);

transform: rotate3d(0, 0, 0, 0deg);

}

100% {

-webkit-transform: rotate3d(0, 1, 0, 720deg);

-moz-transform: rotate3d(0, 1, 0, 720deg);

-ms-transform: rotate3d(0, 1, 0, 720deg);

-o-transform: rotate3d(0, 1, 0, 720deg);

transform: rotate3d(0, 1, 0, 720deg);

}

}

@keyframes rotating {

0% {

-webkit-transform: rotate3d(0, 0, 0, 0deg);

-moz-transform: rotate3d(0, 0, 0, 0deg);

-ms-transform: rotate3d(0, 0, 0, 0deg);

-o-transform: rotate3d(0, 0, 0, 0deg);

transform: rotate3d(0, 0, 0, 0deg);

}

100% {

-webkit-transform: rotate3d(0, 1, 0, 720deg);

-moz-transform: rotate3d(0, 1, 0, 720deg);

-ms-transform: rotate3d(0, 1, 0, 720deg);

-o-transform: rotate3d(0, 1, 0, 720deg);

transform: rotate3d(0, 1, 0, 720deg);

}

}

@-webkit-keyframes rotatingY {

100% {

-webkit-transform: rotateY(-360deg);

-moz-transform: rotateY(-360deg);

-ms-transform: rotateY(-360deg);

-o-transform: rotateY(-360deg);

transform: rotateY(-360deg);

}

}

@-moz-keyframes rotatingY {

100% {

-webkit-transform: rotateY(-360deg);

-moz-transform: rotateY(-360deg);

-ms-transform: rotateY(-360deg);

-o-transform: rotateY(-360deg);

transform: rotateY(-360deg);

}

}

@-ms-keyframes rotatingY {

100% {

-webkit-transform: rotateY(-360deg);

-moz-transform: rotateY(-360deg);

-ms-transform: rotateY(-360deg);

-o-transform: rotateY(-360deg);

transform: rotateY(-360deg);

}

}

@-o-keyframes rotatingY {

100% {

-webkit-transform: rotateY(-360deg);

-moz-transform: rotateY(-360deg);

-ms-transform: rotateY(-360deg);

-o-transform: rotateY(-360deg);

transform: rotateY(-360deg);

}

}

@keyframes rotatingY {

100% {

-webkit-transform: rotateY(-360deg);

-moz-transform: rotateY(-360deg);

-ms-transform: rotateY(-360deg);

-o-transform: rotateY(-360deg);

transform: rotateY(-360deg);

}

}

/**/

@-webkit-keyframes fluttering {

0%, 25%, 50%, 75%, 100% {

-webkit-transform: translate3d(0, 0, 0);

-moz-transform: translate3d(0, 0, 0);

-ms-transform: translate3d(0, 0, 0);

-o-transform: translate3d(0, 0, 0);

transform: translate3d(0, 0, 0);

}

10%, 60% {

-webkit-transform: translate3d(0, 150px, 0);

-moz-transform: translate3d(0, 150px, 0);

-ms-transform: translate3d(0, 150px, 0);

-o-transform: translate3d(0, 150px, 0);

transform: translate3d(0, 150px, 0);

}

30%, 80% {

-webkit-transform: translate3d(0, 50px, 0);

-moz-transform: translate3d(0, 50px, 0);

-ms-transform: translate3d(0, 50px, 0);

-o-transform: translate3d(0, 50px, 0);

transform: translate3d(0, 50px, 0);

}

}

@-moz-keyframes fluttering {

0%, 25%, 50%, 75%, 100% {

-webkit-transform: translate3d(0, 0, 0);

-moz-transform: translate3d(0, 0, 0);

-ms-transform: translate3d(0, 0, 0);

-o-transform: translate3d(0, 0, 0);

transform: translate3d(0, 0, 0);

}

10%, 60% {

-webkit-transform: translate3d(0, 150px, 0);

-moz-transform: translate3d(0, 150px, 0);

-ms-transform: translate3d(0, 150px, 0);

-o-transform: translate3d(0, 150px, 0);

transform: translate3d(0, 150px, 0);

}

30%, 80% {

-webkit-transform: translate3d(0, 50px, 0);

-moz-transform: translate3d(0, 50px, 0);

-ms-transform: translate3d(0, 50px, 0);

-o-transform: translate3d(0, 50px, 0);

transform: translate3d(0, 50px, 0);

}

}

@-ms-keyframes fluttering {

0%, 25%, 50%, 75%, 100% {

-webkit-transform: translate3d(0, 0, 0);

-moz-transform: translate3d(0, 0, 0);

-ms-transform: translate3d(0, 0, 0);

-o-transform: translate3d(0, 0, 0);

transform: translate3d(0, 0, 0);

}

10%, 60% {

-webkit-transform: translate3d(0, 150px, 0);

-moz-transform: translate3d(0, 150px, 0);

-ms-transform: translate3d(0, 150px, 0);

-o-transform: translate3d(0, 150px, 0);

transform: translate3d(0, 150px, 0);

}

30%, 80% {

-webkit-transform: translate3d(0, 50px, 0);

-moz-transform: translate3d(0, 50px, 0);

-ms-transform: translate3d(0, 50px, 0);

-o-transform: translate3d(0, 50px, 0);

transform: translate3d(0, 50px, 0);

}

}

@-o-keyframes fluttering {

0%, 25%, 50%, 75%, 100% {

-webkit-transform: translate3d(0, 0, 0);

-moz-transform: translate3d(0, 0, 0);

-ms-transform: translate3d(0, 0, 0);

-o-transform: translate3d(0, 0, 0);

transform: translate3d(0, 0, 0);

}

10%, 60% {

-webkit-transform: translate3d(0, 150px, 0);

-moz-transform: translate3d(0, 150px, 0);

-ms-transform: translate3d(0, 150px, 0);

-o-transform: translate3d(0, 150px, 0);

transform: translate3d(0, 150px, 0);

}

30%, 80% {

-webkit-transform: translate3d(0, 50px, 0);

-moz-transform: translate3d(0, 50px, 0);

-ms-transform: translate3d(0, 50px, 0);

-o-transform: translate3d(0, 50px, 0);

transform: translate3d(0, 50px, 0);

}

}

@keyframes fluttering {

0%, 25%, 50%, 75%, 100% {

-webkit-transform: translate3d(0, 0, 0);

-moz-transform: translate3d(0, 0, 0);

-ms-transform: translate3d(0, 0, 0);

-o-transform: translate3d(0, 0, 0);

transform: translate3d(0, 0, 0);

}

10%, 60% {

-webkit-transform: translate3d(0, 150px, 0);

-moz-transform: translate3d(0, 150px, 0);

-ms-transform: translate3d(0, 150px, 0);

-o-transform: translate3d(0, 150px, 0);

transform: translate3d(0, 150px, 0);

}

30%, 80% {

-webkit-transform: translate3d(0, 50px, 0);

-moz-transform: translate3d(0, 50px, 0);

-ms-transform: translate3d(0, 50px, 0);

-o-transform: translate3d(0, 50px, 0);

transform: translate3d(0, 50px, 0);

}

}

/**/

@-webkit-keyframes left-wing-flap {

0% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

}

50% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

}

100% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

}

}

@-moz-keyframes left-wing-flap {

0% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

}

50% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

}

100% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

}

}

@-ms-keyframes left-wing-flap {

0% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

}

50% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

}

100% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

}

}

@-o-keyframes left-wing-flap {

0% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

}

50% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

}

100% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

}

}

@keyframes left-wing-flap {

0% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

}

50% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, -70deg);

}

100% {

-webkit-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(1) rotate3d(0, 1, 0, 60deg);

}

}

@-webkit-keyframes right-wing-flap {

0% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

}

50% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

}

100% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

}

}

@-moz-keyframes right-wing-flap {

0% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

}

50% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

}

100% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

}

}

@-ms-keyframes right-wing-flap {

0% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

}

50% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

}

100% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

}

}

@-o-keyframes right-wing-flap {

0% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

}

50% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

}

100% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

}

}

@keyframes right-wing-flap {

0% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

}

50% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, -70deg);

}

100% {

-webkit-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-moz-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-ms-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

-o-transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

transform: translate3d(0, 0, 0) scaleX(-1) rotate3d(0, 1, 0, 60deg);

}

}

/**

*/

/**

  • SOURCE

*/

body {

width: 100%;

height: 100%;

overflow: hidden;

}

.background {

position: absolute;

width: 100%;

height: 100%;

}

.scene3d {

-webkit-perspective: 1000px;

-moz-perspective: 1000px;

-ms-perspective: 1000px;

-o-perspective: 1000px;

perspective: 1000px;

-webkit-perspective-origin: 50% 50%;

-moz-perspective-origin: 50% 50%;

-ms-perspective-origin: 50% 50%;

-o-perspective-origin: 50% 50%;

perspective-origin: 50% 50%;

position: absolute;

width: 100%;

height: 100%;

-webkit-transform-style: preserve-3d;

-moz-transform-style: preserve-3d;

-ms-transform-style: preserve-3d;

-o-transform-style: preserve-3d;

transform-style: preserve-3d;

}

.skybox.cube {

position: absolute;

left: 50%;

top: 50%;

width: 512px;

height: 512px;

margin-left: -256px;

margin-top: -256px;

-webkit-perspective-origin: 50% 50%;

-moz-perspective-origin: 50% 50%;

-ms-perspective-origin: 50% 50%;

-o-perspective-origin: 50% 50%;

perspective-origin: 50% 50%;

-webkit-transform-style: preserve-3d;

-moz-transform-style: preserve-3d;

-ms-transform-style: preserve-3d;

-o-transform-style: preserve-3d;

transform-style: preserve-3d;

-webkit-animation: rotatingY 40s linear infinite;

-moz-animation: rotatingY 40s linear infinite;

-ms-animation: rotatingY 40s linear infinite;

-o-animation: rotatingY 40s linear infinite;

animation: rotatingY 40s linear infinite;

}

.skybox.cube var.scale {

position: absolute;

left: 50%;

top: 50%;

width: 512px;

height: 512px;

margin-left: -256px;

margin-top: -256px;

-webkit-perspective-origin: 50% 50%;

-moz-perspective-origin: 50% 50%;

-ms-perspective-origin: 50% 50%;

-o-perspective-origin: 50% 50%;

perspective-origin: 50% 50%;

-webkit-transform-style: preserve-3d;

-moz-transform-style: preserve-3d;

-ms-transform-style: preserve-3d;

-o-transform-style: preserve-3d;

transform-style: preserve-3d;

-webkit-transform: rotate3d(0, 0, 1, 15deg) translate3d(0, 100px, 0) scale3d(4, 6, 4);

-moz-transform: rotate3d(0, 0, 1, 15deg) translate3d(0, 100px, 0) scale3d(4, 6, 4);

-ms-transform: rotate3d(0, 0, 1, 15deg) translate3d(0, 100px, 0) scale3d(4, 6, 4);

-o-transform: rotate3d(0, 0, 1, 15deg) translate3d(0, 100px, 0) scale3d(4, 6, 4);

transform: rotate3d(0, 0, 1, 15deg) translate3d(0, 100px, 0) scale3d(4, 6, 4);

}

.skybox.cube .face {

position: absolute;

left: 50%;

top: 50%;

width: 512px;

height: 512px;

margin-left: -256px;

margin-top: -256px;

-webkit-backface-visibility: hidden;

-moz-backface-visibility: hidden;

-ms-backface-visibility: hidden;

-o-backface-visibility: hidden;

backface-visibility: hidden;

}

.skybox.cube .face.front {

-webkit-transform: rotateY(0deg) translateZ(-256px);

-moz-transform: rotateY(0deg) translateZ(-256px);

-ms-transform: rotateY(0deg) translateZ(-256px);

-o-transform: rotateY(0deg) translateZ(-256px);

transform: rotateY(0deg) translateZ(-256px);

background-image: url(“https://s3-us-west-2.amazonaws.com/s.cdpn.io/78881/clouds_front.jpg”);

}

.skybox.cube .face.back {

-webkit-transform: rotateY(180deg) translateZ(-256px);

-moz-transform: rotateY(180deg) translateZ(-256px);

-ms-transform: rotateY(180deg) translateZ(-256px);

-o-transform: rotateY(180deg) translateZ(-256px);

transform: rotateY(180deg) translateZ(-256px);

background-image: url(“https://s3-us-west-2.amazonaws.com/s.cdpn.io/78881/clouds_back.jpg”);

}

.skybox.cube .face.right {

-webkit-transform: rotateY(-90deg) translateZ(-256px);

-moz-transform: rotateY(-90deg) translateZ(-256px);

-ms-transform: rotateY(-90deg) translateZ(-256px);

-o-transform: rotateY(-90deg) translateZ(-256px);

transform: rotateY(-90deg) translateZ(-256px);

background-image: url(“https://s3-us-west-2.amazonaws.com/s.cdpn.io/78881/clouds_right.jpg”);

}

.skybox.cube .face.left {

-webkit-transform: rotateY(90deg) translateZ(-256px);

-moz-transform: rotateY(90deg) translateZ(-256px);

-ms-transform: rotateY(90deg) translateZ(-256px);

-o-transform: rotateY(90deg) translateZ(-256px);

transform: rotateY(90deg) translateZ(-256px);

background-image: url(“https://s3-us-west-2.amazonaws.com/s.cdpn.io/78881/clouds_left.jpg”);

}

.skybox.cube .face.top {

-webkit-transform: rotateX(-90deg) translateZ(-256px);

-moz-transform: rotateX(-90deg) translateZ(-256px);

-ms-transform: rotateX(-90deg) translateZ(-256px);

-o-transform: rotateX(-90deg) translateZ(-256px);

transform: rotateX(-90deg) translateZ(-256px);

background-image: url(“https://s3-us-west-2.amazonaws.com/s.cdpn.io/78881/clouds_top.jpg”);

}

.skybox.cube .face.bottom {

-webkit-transform: rotateX(90deg) translateZ(-256px);

-moz-transform: rotateX(90deg) translateZ(-256px);

-ms-transform: rotateX(90deg) translateZ(-256px);

-o-transform: rotateX(90deg) translateZ(-256px);

transform: rotateX(90deg) translateZ(-256px);

background-image: url(“https://s3-us-west-2.amazonaws.com/s.cdpn.io/78881/hazy_lake_top.jpg”);

background: none;

}

.butterfly_container {

position: absolute;

left: 50%;

top: 50%;

width: 100px;

height: 100px;

margin-left: -50px;

margin-top: -50px;

-webkit-transform-origin: 50% 50%;

-moz-transform-origin: 50% 50%;

-ms-transform-origin: 50% 50%;

-o-transform-origin: 50% 50%;

transform-origin: 50% 50%;

-webkit-transform-style: preserve-3d;

-moz-transform-style: preserve-3d;

-ms-transform-style: preserve-3d;

-o-transform-style: preserve-3d;

transform-style: preserve-3d;

-webkit-animation: rotatingY 10s linear infinite;

-moz-animation: rotatingY 10s linear infinite;

-ms-animation: rotatingY 10s linear infinite;

-o-animation: rotatingY 10s linear infinite;

animation: rotatingY 10s linear infinite;

}

.butterfly_container var {

position: absolute;

left: 50%;

top: 50%;

width: 100px;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

后记


总结一下这三次面试下来我的经验是:

  1. 一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!

  2. 代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!

  3. 尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!

  4. 多刷面经!

我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】获取。祝大家早日拿到自己心怡的工作!

篇幅有限,仅展示部分内容



-o-animation: rotatingY 10s linear infinite;

animation: rotatingY 10s linear infinite;

}

.butterfly_container var {

position: absolute;

left: 50%;

top: 50%;

width: 100px;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-RELM5ugP-1712555835688)]

[外链图片转存中…(img-pQmvAjba-1712555835689)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-FPikFtIU-1712555835689)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

后记


总结一下这三次面试下来我的经验是:

  1. 一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!

  2. 代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!

  3. 尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!

  4. 多刷面经!

我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】获取。祝大家早日拿到自己心怡的工作!

篇幅有限,仅展示部分内容



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值