diff --git a/src/assets/css/animations.less b/src/assets/css/animations.less index 534f7f9..e4e754b 100644 --- a/src/assets/css/animations.less +++ b/src/assets/css/animations.less @@ -1,11 +1,6 @@ -// 动画效果库 - LESS版本 +/* 动画效果库 - 为项目添加丰富的动画效果 */ @import './variables.less'; -// ===== 动画变量 ===== -@animation-duration: @animation-duration-base; -@animation-timing: @animation-timing-base; -@animation-fill-mode: both; - // ===== 基础动画关键帧 ===== @keyframes fadeIn { from { opacity: 0; } @@ -58,45 +53,37 @@ @keyframes slideInUp { from { - transform: translateY(100px); - opacity: 0; + transform: translateY(100%); } to { transform: translateY(0); - opacity: 1; } } @keyframes slideInDown { from { - transform: translateY(-100px); - opacity: 0; + transform: translateY(-100%); } to { transform: translateY(0); - opacity: 1; } } @keyframes slideInLeft { from { - transform: translateX(-100px); - opacity: 0; + transform: translateX(-100%); } to { transform: translateX(0); - opacity: 1; } } @keyframes slideInRight { from { - transform: translateX(100px); - opacity: 0; + transform: translateX(100%); } to { transform: translateX(0); - opacity: 1; } } @@ -105,6 +92,9 @@ opacity: 0; transform: scale(0.3); } + 50% { + opacity: 1; + } to { opacity: 1; transform: scale(1); @@ -116,6 +106,9 @@ opacity: 1; transform: scale(1); } + 50% { + opacity: 1; + } to { opacity: 0; transform: scale(0.3); @@ -138,44 +131,38 @@ } @keyframes pulse { - from { - transform: scale3d(1, 1, 1); + 0% { + transform: scale(1); } 50% { - transform: scale3d(1.05, 1.05, 1.05); - } - to { - transform: scale3d(1, 1, 1); - } -} - -@keyframes shake { - 0%, 100% { - transform: translate3d(0, 0, 0); - } - 10%, 30%, 50%, 70%, 90% { - transform: translate3d(-10px, 0, 0); - } - 20%, 40%, 60%, 80% { - transform: translate3d(10px, 0, 0); - } -} - -@keyframes swing { - 20% { - transform: rotate(15deg); - } - 40% { - transform: rotate(-10deg); - } - 60% { - transform: rotate(5deg); - } - 80% { - transform: rotate(-5deg); + transform: scale(1.05); } 100% { - transform: rotate(0deg); + transform: scale(1); + } +} + +@keyframes wobble { + 0% { + transform: translateX(0%); + } + 15% { + transform: translateX(-25%) rotate(-5deg); + } + 30% { + transform: translateX(20%) rotate(3deg); + } + 45% { + transform: translateX(-15%) rotate(-3deg); + } + 60% { + transform: translateX(10%) rotate(2deg); + } + 75% { + transform: translateX(-5%) rotate(-1deg); + } + 100% { + transform: translateX(0%); } } @@ -206,88 +193,51 @@ } } -@keyframes lightSpeedIn { - from { - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; +@keyframes shake { + 0%, 100% { + transform: translateX(0); } - 60% { - transform: skewX(20deg); - opacity: 1; + 10%, 30%, 50%, 70%, 90% { + transform: translateX(-10px); } - 80% { - transform: skewX(-5deg); - opacity: 1; - } - to { - transform: translate3d(0, 0, 0); - opacity: 1; + 20%, 40%, 60%, 80% { + transform: translateX(10px); } } -@keyframes rubberBand { - from { - transform: scale3d(1, 1, 1); - } - 30% { - transform: scale3d(1.25, 0.75, 1); +@keyframes swing { + 20% { + transform: rotate(15deg); } 40% { - transform: scale3d(0.75, 1.25, 1); - } - 50% { - transform: scale3d(1.15, 0.85, 1); - } - 65% { - transform: scale3d(0.95, 1.05, 1); - } - 75% { - transform: scale3d(1.05, 0.95, 1); - } - to { - transform: scale3d(1, 1, 1); - } -} - -@keyframes wobble { - 0% { - transform: translate3d(0, 0, 0); - } - 15% { - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - 30% { - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - 45% { - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: rotate(-10deg); } 60% { - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: rotate(5deg); } - 75% { - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + 80% { + transform: rotate(-5deg); } 100% { - transform: translate3d(0, 0, 0); + transform: rotate(0deg); } } @keyframes tada { 0% { - transform: scale3d(1, 1, 1); + transform: scale(1); } 10%, 20% { - transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + transform: scale(0.9) rotate(-3deg); } 30%, 50%, 70%, 90% { - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale(1.1) rotate(3deg); } 40%, 60%, 80% { - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale(1.1) rotate(-3deg); } 100% { - transform: scale3d(1, 1, 1); + transform: scale(1) rotate(0); } } @@ -324,335 +274,272 @@ transform: rotate(60deg); transform-origin: top left; animation-timing-function: ease-in-out; + } + 100% { + transform: translateY(700px) rotate(60deg); + } +} + +@keyframes rollIn { + 0% { + opacity: 0; + transform: translate3d(-100%, 0, 0) rotate(-120deg); + } + 100% { + opacity: 1; + transform: translate3d(0, 0, 0); + } +} + +@keyframes rollOut { + 0% { opacity: 1; } 100% { - transform: translate3d(0, 700px, 0); + opacity: 0; + transform: translate3d(100%, 0, 0) rotate(120deg); + } +} + +@keyframes lightSpeedIn { + 0% { + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + 60% { + transform: skewX(20deg); + opacity: 1; + } + 80% { + transform: skewX(-5deg); + } + 100% { + transform: translate3d(0, 0, 0); + } +} + +@keyframes lightSpeedOut { + 0% { + opacity: 1; + } + 100% { + transform: translate3d(100%, 0, 0) skewX(-30deg); opacity: 0; } } -@keyframes roll { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -// ===== 基础动画类 ===== +// ===== 动画工具类 ===== .animate { - animation-duration: @animation-duration; - animation-fill-mode: @animation-fill-mode; - animation-timing-function: @animation-timing; + animation-duration: @animation-duration-base; + animation-fill-mode: both; + animation-timing-function: @animation-timing-base; } -// 淡入动画 -.fade-in { animation-name: fadeIn; } -.fade-in-up { animation-name: fadeInUp; } -.fade-in-down { animation-name: fadeInDown; } -.fade-in-left { animation-name: fadeInLeft; } -.fade-in-right { animation-name: fadeInRight; } - -// 滑入动画 -.slide-in-up { animation-name: slideInUp; } -.slide-in-down { animation-name: slideInDown; } -.slide-in-left { animation-name: slideInLeft; } -.slide-in-right { animation-name: slideInRight; } - -// 缩放动画 -.zoom-in { animation-name: zoomIn; } -.zoom-out { animation-name: zoomOut; } - -// 特殊动画 -.bounce { animation-name: bounce; } -.pulse { animation-name: pulse; } -.shake { animation-name: shake; } -.swing { animation-name: swing; } -.rotate { animation-name: rotate; } -.flip { animation-name: flip; } -.light-speed-in { animation-name: lightSpeedIn; } -.rubber-band { animation-name: rubberBand; } -.wobble { animation-name: wobble; } -.tada { animation-name: tada; } -.heart-beat { animation-name: heartBeat; } -.hinge { animation-name: hinge; } -.roll { animation-name: roll; } - -// ===== 动画时长 ===== -.duration-0_5s { animation-duration: 0.5s; } -.duration-1s { animation-duration: 1s; } -.duration-1_5s { animation-duration: 1.5s; } -.duration-2s { animation-duration: 2s; } -.duration-3s { animation-duration: 3s; } - -// ===== 动画延迟 ===== -.delay-0_5s { animation-delay: 0.5s; } -.delay-1s { animation-delay: 1s; } -.delay-1_5s { animation-delay: 1.5s; } -.delay-2s { animation-delay: 2s; } -.delay-3s { animation-delay: 3s; } - -// ===== 动画重复 ===== -.infinite { animation-iteration-count: infinite; } -.repeat-2 { animation-iteration-count: 2; } -.repeat-3 { animation-iteration-count: 3; } - -// ===== 悬停动画效果 ===== -.hover-lift { - transition: transform 0.3s ease, box-shadow 0.3s ease; - - &:hover { - transform: translateY(-5px); - box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); - } +.animate.infinite { + animation-iteration-count: infinite; } -.hover-scale { - transition: transform 0.3s ease; - - &:hover { - transform: scale(1.05); - } +.animate.delay-1s { + animation-delay: 1s; } -.hover-glow { - transition: box-shadow 0.3s ease; - - &:hover { - box-shadow: 0 0 20px rgba(0, 123, 255, 0.5); - } +.animate.delay-2s { + animation-delay: 2s; } -.hover-rotate { - transition: transform 0.3s ease; - - &:hover { - transform: rotate(5deg); - } +.animate.delay-3s { + animation-delay: 3s; } -.hover-bounce { - transition: transform 0.3s ease; - - &:hover { - animation: bounce 0.6s ease; - } +.animate.delay-4s { + animation-delay: 4s; +} + +.animate.delay-5s { + animation-delay: 5s; +} + +// ===== 具体动画类 ===== +.fade-in { + animation-name: fadeIn; +} + +.fade-in-up { + animation-name: fadeInUp; +} + +.fade-in-down { + animation-name: fadeInDown; +} + +.fade-in-left { + animation-name: fadeInLeft; +} + +.fade-in-right { + animation-name: fadeInRight; +} + +.slide-in-up { + animation-name: slideInUp; +} + +.slide-in-down { + animation-name: slideInDown; +} + +.slide-in-left { + animation-name: slideInLeft; +} + +.slide-in-right { + animation-name: slideInRight; +} + +.zoom-in { + animation-name: zoomIn; +} + +.zoom-out { + animation-name: zoomOut; +} + +.bounce { + animation-name: bounce; +} + +.pulse { + animation-name: pulse; +} + +.wobble { + animation-name: wobble; +} + +.rotate { + animation-name: rotate; +} + +.flip { + animation-name: flip; +} + +.shake { + animation-name: shake; +} + +.swing { + animation-name: swing; +} + +.tada { + animation-name: tada; +} + +.heart-beat { + animation-name: heartBeat; +} + +.hinge { + animation-name: hinge; +} + +.roll-in { + animation-name: rollIn; +} + +.roll-out { + animation-name: rollOut; +} + +.light-speed-in { + animation-name: lightSpeedIn; +} + +.light-speed-out { + animation-name: lightSpeedOut; } // ===== 滚动触发动画 ===== -.scroll-animate { +.animate-on-scroll { opacity: 0; transform: translateY(30px); - transition: all 0.8s ease; - - &.animate-in { - opacity: 1; - transform: translateY(0); - } + transition: all 0.6s @animation-timing-ease-out; +} + +.animate-on-scroll.visible { + opacity: 1; + transform: translateY(0); } // ===== 交错动画 ===== .animate-stagger { - > * { - opacity: 0; - transform: translateY(20px); - transition: all 0.6s ease; - - &:nth-child(1) { transition-delay: 0.1s; } - &:nth-child(2) { transition-delay: 0.2s; } - &:nth-child(3) { transition-delay: 0.3s; } - &:nth-child(4) { transition-delay: 0.4s; } - &:nth-child(5) { transition-delay: 0.5s; } - &:nth-child(6) { transition-delay: 0.6s; } - - &.animate-in { - opacity: 1; - transform: translateY(0); - } - } + opacity: 1; } -// ===== 加载指示器 ===== -.loading-spinner { - width: 40px; - height: 40px; - border: 4px solid #f3f3f3; - border-top: 4px solid #3498db; - border-radius: 50%; - animation: spin 1s linear infinite; +.animate-stagger.visible .animate-stagger-item { + opacity: 1; + transform: translateY(0); } -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } +.animate-stagger-item { + opacity: 0; + transform: translateY(30px); + transition: all 0.5s @animation-timing-ease-out; } -// ===== 打字机效果 ===== -.typewriter { - overflow: hidden; - border-right: 2px solid #000; - white-space: nowrap; - animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite; +// ===== 悬停动画 ===== +.hover-scale { + transition: transform 0.3s @animation-timing-base; } -@keyframes typing { - from { width: 0; } - to { width: 100%; } +.hover-scale:hover { + transform: scale(1.05); } -@keyframes blink-caret { - from, to { border-color: transparent; } - 50% { border-color: #000; } +.hover-lift { + transition: all 0.3s @animation-timing-base; } -// ===== 波浪效果 ===== -.wave { - position: relative; - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.3) 50%, transparent 70%); - animation: wave 2s infinite; - } +.hover-lift:hover { + transform: translateY(-5px); + box-shadow: @box-shadow-lg; } -@keyframes wave { - 0% { transform: translateX(-100%); } - 100% { transform: translateX(100%); } +.hover-rotate { + transition: transform 0.3s @animation-timing-base; } -// ===== 粒子效果 ===== -.particles { - position: relative; - overflow: hidden; - - &::before, - &::after { - content: ''; - position: absolute; - width: 4px; - height: 4px; - background: rgba(255, 255, 255, 0.8); - border-radius: 50%; - animation: float 6s infinite; - } - - &::before { - left: 20%; - animation-delay: 0s; - } - - &::after { - right: 20%; - animation-delay: 3s; - } +.hover-rotate:hover { + transform: rotate(5deg); } -@keyframes float { - 0%, 100% { transform: translateY(0px) rotate(0deg); opacity: 1; } - 50% { transform: translateY(-20px) rotate(180deg); opacity: 0.5; } +.hover-glow { + transition: all 0.3s @animation-timing-base; } -// ===== 3D翻转卡片 ===== -.flip-card { - perspective: 1000px; - - .flip-card-inner { - position: relative; - width: 100%; - height: 100%; - text-align: center; - transition: transform 0.6s; - transform-style: preserve-3d; - - &:hover { - transform: rotateY(180deg); - } - } - - .flip-card-front, - .flip-card-back { - position: absolute; - width: 100%; - height: 100%; - backface-visibility: hidden; - } - - .flip-card-back { - transform: rotateY(180deg); - } +.hover-glow:hover { + box-shadow: 0 0 20px rgba(52, 152, 219, 0.5); } -// ===== 渐变背景动画 ===== -.gradient-bg { - background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab); - background-size: 400% 400%; - animation: gradient 15s ease infinite; +.hover-bounce { + transition: transform 0.3s @animation-timing-base; } -@keyframes gradient { - 0% { background-position: 0% 50%; } - 50% { background-position: 100% 50%; } - 100% { background-position: 0% 50%; } +.hover-bounce:hover { + animation: bounce 0.6s; } -// ===== 霓虹文字效果 ===== -.neon-text { - color: #fff; - text-shadow: - 0 0 5px #fff, - 0 0 10px #fff, - 0 0 15px #0073e6, - 0 0 20px #0073e6, - 0 0 25px #0073e6, - 0 0 30px #0073e6, - 0 0 35px #0073e6; - animation: neon-pulse 1.5s ease-in-out infinite alternate; +// ===== 文本发光效果 ===== +.text-glow { + text-shadow: 0 0 10px rgba(52, 152, 219, 0.8); } -@keyframes neon-pulse { - from { text-shadow: 0 0 5px #fff, 0 0 10px #fff, 0 0 15px #0073e6, 0 0 20px #0073e6, 0 0 25px #0073e6, 0 0 30px #0073e6, 0 0 35px #0073e6; } - to { text-shadow: 0 0 2px #fff, 0 0 4px #fff, 0 0 6px #0073e6, 0 0 8px #0073e6, 0 0 10px #0073e6, 0 0 12px #0073e6, 0 0 14px #0073e6; } +.text-glow:hover { + text-shadow: 0 0 20px rgba(52, 152, 219, 1); } -// ===== 滚动进度条 ===== -.scroll-progress-bar { - position: fixed; - top: 0; - left: 0; - width: 0%; - height: 3px; - background: linear-gradient(90deg, #0073e6, #00d4ff); - z-index: 9999; - transition: width 0.1s ease; -} - -// ===== 视差滚动元素 ===== -.parallax { - position: relative; - overflow: hidden; - - .parallax-bg { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 120%; - background-size: cover; - background-position: center; - transform: translateZ(0); - will-change: transform; - } -} - -// ===== 浮动粒子 ===== +// ===== 浮动粒子动画 ===== .floating-particles { position: absolute; top: 0; @@ -662,31 +549,90 @@ overflow: hidden; pointer-events: none; z-index: 1; - - .floating-particle { - position: absolute; - width: 4px; - height: 4px; - background: rgba(255, 255, 255, 0.6); - border-radius: 50%; - animation: float-particle 8s infinite linear; - - &:nth-child(1) { left: 10%; animation-delay: 0s; animation-duration: 8s; } - &:nth-child(2) { left: 20%; animation-delay: 1s; animation-duration: 10s; } - &:nth-child(3) { left: 30%; animation-delay: 2s; animation-duration: 12s; } - &:nth-child(4) { left: 40%; animation-delay: 3s; animation-duration: 9s; } - &:nth-child(5) { left: 50%; animation-delay: 4s; animation-duration: 11s; } - &:nth-child(6) { left: 60%; animation-delay: 5s; animation-duration: 7s; } - &:nth-child(7) { left: 70%; animation-delay: 6s; animation-duration: 13s; } - &:nth-child(8) { left: 80%; animation-delay: 7s; animation-duration: 8s; } - &:nth-child(9) { left: 90%; animation-delay: 8s; animation-duration: 10s; } - &:nth-child(10) { left: 95%; animation-delay: 9s; animation-duration: 12s; } - } } -@keyframes float-particle { +.floating-particle { + position: absolute; + width: 4px; + height: 4px; + background: rgba(255, 255, 255, 0.6); + border-radius: 50%; + animation: float 6s infinite linear; +} + +.floating-particle:nth-child(1) { + top: 10%; + left: 10%; + animation-delay: 0s; + animation-duration: 8s; +} + +.floating-particle:nth-child(2) { + top: 20%; + left: 80%; + animation-delay: 1s; + animation-duration: 10s; +} + +.floating-particle:nth-child(3) { + top: 60%; + left: 20%; + animation-delay: 2s; + animation-duration: 7s; +} + +.floating-particle:nth-child(4) { + top: 80%; + left: 70%; + animation-delay: 3s; + animation-duration: 9s; +} + +.floating-particle:nth-child(5) { + top: 30%; + left: 60%; + animation-delay: 4s; + animation-duration: 6s; +} + +.floating-particle:nth-child(6) { + top: 70%; + left: 40%; + animation-delay: 5s; + animation-duration: 8s; +} + +.floating-particle:nth-child(7) { + top: 40%; + left: 90%; + animation-delay: 6s; + animation-duration: 7s; +} + +.floating-particle:nth-child(8) { + top: 90%; + left: 30%; + animation-delay: 7s; + animation-duration: 9s; +} + +.floating-particle:nth-child(9) { + top: 50%; + left: 10%; + animation-delay: 8s; + animation-duration: 6s; +} + +.floating-particle:nth-child(10) { + top: 15%; + left: 50%; + animation-delay: 9s; + animation-duration: 8s; +} + +@keyframes float { 0% { - transform: translateY(100vh) scale(0); + transform: translateY(0) rotate(0deg); opacity: 0; } 10% { @@ -696,66 +642,46 @@ opacity: 1; } 100% { - transform: translateY(-100px) scale(1); + transform: translateY(-100vh) rotate(360deg); opacity: 0; } } -// ===== 文字发光效果 ===== -.text-glow { - text-shadow: - 0 0 5px currentColor, - 0 0 10px currentColor, - 0 0 15px currentColor, - 0 0 20px currentColor; - animation: text-glow-pulse 2s ease-in-out infinite alternate; +// ===== 滚动进度条 ===== +.scroll-progress-bar { + position: fixed; + top: 0; + left: 0; + width: 0%; + height: 3px; + background: linear-gradient(90deg, @primary-color, @success-color); + z-index: @zindex-fixed; + transition: width 0.1s ease; } -@keyframes text-glow-pulse { - from { text-shadow: 0 0 5px currentColor, 0 0 10px currentColor, 0 0 15px currentColor, 0 0 20px currentColor; } - to { text-shadow: 0 0 10px currentColor, 0 0 20px currentColor, 0 0 30px currentColor, 0 0 40px currentColor; } +// ===== 视差效果 ===== +[data-parallax] { + transform: translateZ(0); + will-change: transform; } -// ===== 响应式动画考虑 ===== +// ===== 性能优化 ===== +.animate, +.animate-on-scroll, +.animate-stagger-item { + will-change: transform, opacity; + backface-visibility: hidden; + transform: translate3d(0, 0, 0); +} + +// ===== 减少动画偏好支持 ===== @media (prefers-reduced-motion: reduce) { - *, - *::before, - *::after { + .animate, + .animate-on-scroll, + .animate-stagger-item, + .floating-particle { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } - -// ===== 移动端动画优化 ===== -@media (max-width: 768px) { - .floating-particles { - display: none; // 移动端隐藏浮动粒子以提升性能 - } - - .animate { - animation-duration: 0.8s; // 移动端减少动画时长 - } - - .scroll-animate { - transform: translateY(20px); // 移动端减少移动距离 - } -} - -// ===== 性能优化 ===== -.animate, -.hover-lift, -.hover-scale, -.hover-glow, -.hover-rotate, -.hover-bounce { - will-change: transform, opacity; - transform: translate3d(0, 0, 0); // 启用硬件加速 -} - -// ===== 动画工具类 ===== -.animation-paused { animation-play-state: paused; } -.animation-running { animation-play-state: running; } -.animation-reverse { animation-direction: reverse; } -.animation-alternate { animation-direction: alternate; } -.animation-alternate-reverse { animation-direction: alternate-reverse; } diff --git a/src/assets/img/banner_index0.png b/src/assets/img/banner_index0.png index a1da6ee..c512ac4 100644 Binary files a/src/assets/img/banner_index0.png and b/src/assets/img/banner_index0.png differ diff --git a/src/assets/img/banner_index0_mobile.jpg b/src/assets/img/banner_index0_mobile.jpg deleted file mode 100644 index 41733c6..0000000 Binary files a/src/assets/img/banner_index0_mobile.jpg and /dev/null differ diff --git a/src/assets/img/banner_index1.png b/src/assets/img/banner_index1.png index 1c5f4af..0ba6dd7 100644 Binary files a/src/assets/img/banner_index1.png and b/src/assets/img/banner_index1.png differ diff --git a/src/assets/img/banner_index1_mobile.jpg b/src/assets/img/banner_index1_mobile.jpg index 675133a..32684b3 100644 Binary files a/src/assets/img/banner_index1_mobile.jpg and b/src/assets/img/banner_index1_mobile.jpg differ diff --git a/src/assets/img/banner_index2.png b/src/assets/img/banner_index2.png index ab16c9a..7711672 100644 Binary files a/src/assets/img/banner_index2.png and b/src/assets/img/banner_index2.png differ diff --git a/src/assets/img/banner_index2_mobile.jpg b/src/assets/img/banner_index2_mobile.jpg deleted file mode 100644 index de2deed..0000000 Binary files a/src/assets/img/banner_index2_mobile.jpg and /dev/null differ diff --git a/src/assets/img/banner_index3_mobile.jpg b/src/assets/img/banner_index3_mobile.jpg deleted file mode 100644 index 0865b25..0000000 Binary files a/src/assets/img/banner_index3_mobile.jpg and /dev/null differ diff --git a/src/assets/img/ic_1.png b/src/assets/img/ic_1.png new file mode 100644 index 0000000..dd62536 Binary files /dev/null and b/src/assets/img/ic_1.png differ diff --git a/src/assets/img/ic_2.png b/src/assets/img/ic_2.png new file mode 100644 index 0000000..b17fc58 Binary files /dev/null and b/src/assets/img/ic_2.png differ diff --git a/src/assets/img/ic_3.png b/src/assets/img/ic_3.png new file mode 100644 index 0000000..919788a Binary files /dev/null and b/src/assets/img/ic_3.png differ diff --git a/src/components/ifooter.vue b/src/components/ifooter.vue index 82fe5a6..f079256 100644 --- a/src/components/ifooter.vue +++ b/src/components/ifooter.vue @@ -15,19 +15,18 @@
@@ -35,19 +34,19 @@