html5 css3全屏酷炫的文字动画切换特效



143 568 190



特效描述:html5 css3 全屏 文字动画 切换特效,html5 css3基于Anime.js制作全屏酷炫的字母文字动画切换效果代码

代码结构

1. 引入CSS

<link rel="stylesheet" type="text/css" href="css/base.css" />
<link rel="stylesheet" type="text/css" href="css/base.css" />

2. 引入JS

<script src="js/charming.min.js"></script>
<script src="js/anime.min.js"></script>
<script src="js/wordFx.js"></script>
<script src="js/charming.min.js"></script>
<script src="js/anime.min.js"></script>
<script src="js/wordFx.js"></script>

3. HTML代码

<!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title></title>
	<script>document.documentElement.className="js";var supportsCssVars=function(){var e,t=document.createElement("style");return t.innerHTML="root: { --tmp-var: bold; }",document.head.appendChild(t),e=!!(window.CSS&&window.CSS.supports&&window.CSS.supports("font-weight","var(--tmp-var)")),t.parentNode.removeChild(t),e};supportsCssVars()||alert("Please view this demo in a modern browser that supports CSS Variables.");</script>
</head>
<body class="demo-1">
		<svg class="hidden">
			<symbol id="icon-arrow" viewBox="0 0 24 24">
				<title>arrow</title>
				<polygon points="6.3,12.8 20.9,12.8 20.9,11.2 6.3,11.2 10.2,7.2 9,6 3.1,12 9,18 10.2,16.8 "/>
			</symbol>
			<symbol id="icon-drop" viewBox="0 0 24 24">
				<title>drop</title>
				<path d="M12,21c-3.6,0-6.6-3-6.6-6.6C5.4,11,10.8,4,11.4,3.2C11.6,3.1,11.8,3,12,3s0.4,0.1,0.6,0.3c0.6,0.8,6.1,7.8,6.1,11.2C18.6,18.1,15.6,21,12,21zM12,4.8c-1.8,2.4-5.2,7.4-5.2,9.6c0,2.9,2.3,5.2,5.2,5.2s5.2-2.3,5.2-5.2C17.2,12.2,13.8,7.3,12,4.8z"/><path d="M12,18.2c-0.4,0-0.7-0.3-0.7-0.7s0.3-0.7,0.7-0.7c1.3,0,2.4-1.1,2.4-2.4c0-0.4,0.3-0.7,0.7-0.7c0.4,0,0.7,0.3,0.7,0.7C15.8,16.5,14.1,18.2,12,18.2z"/>
			</symbol>
			<symbol id="icon-github" viewBox="0 0 32.6 31.8">
				<title>github</title>
				<path d="M16.3,0C7.3,0,0,7.3,0,16.3c0,7.2,4.7,13.3,11.1,15.5c0.8,0.1,1.1-0.4,1.1-0.8c0-0.4,0-1.4,0-2.8c-4.5,1-5.5-2.2-5.5-2.2c-0.7-1.9-1.8-2.4-1.8-2.4c-1.5-1,0.1-1,0.1-1c1.6,0.1,2.5,1.7,2.5,1.7c1.5,2.5,3.8,1.8,4.7,1.4c0.1-1.1,0.6-1.8,1-2.2c-3.6-0.4-7.4-1.8-7.4-8.1c0-1.8,0.6-3.2,1.7-4.4C7.4,10.7,6.8,9,7.7,6.8c0,0,1.4-0.4,4.5,1.7c1.3-0.4,2.7-0.5,4.1-0.5c1.4,0,2.8,0.2,4.1,0.5c3.1-2.1,4.5-1.7,4.5-1.7c0.9,2.2,0.3,3.9,0.2,4.3c1,1.1,1.7,2.6,1.7,4.4c0,6.3-3.8,7.6-7.4,8c0.6,0.5,1.1,1.5,1.1,3c0,2.2,0,3.9,0,4.5c0,0.4,0.3,0.9,1.1,0.8c6.5-2.2,11.1-8.3,11.1-15.5C32.6,7.3,25.3,0,16.3,0z"/>
			</symbol>
			<symbol id="icon-nav-arrow" viewBox="0 0 90 64">
				<title>nav-arrow</title>
				<path d="M88.148 30.124H6.404L33.208 3.32a1.877 1.877 0 0 0 0-2.652 1.877 1.877 0 0 0-2.652 0L.552 30.67a1.942 1.942 0 0 0-.409.612 1.86 1.86 0 0 0 0 1.432c.094.233.233.44.41.612L30.555 63.33c.367.368.847.552 1.328.552.48 0 .96-.184 1.327-.548a1.877 1.877 0 0 0 0-2.652L6.404 33.874h81.743a1.876 1.876 0 0 0 0-3.75z"/>
			</symbol>
		</svg>
		<main>
			<div class="content">
				<div class="slideshow">
					<div class="slide slide--current">
						<div class="slide__bg slide__bg--1"></div>
						<h2 class="word word--1">Eurhythmic</h2>
					</div>
					<div class="slide">
						<div class="slide__bg slide__bg--2"></div>
						<h2 class="word word--2">Aquarius</h2>
					</div>
					<div class="slide">
						<div class="slide__bg slide__bg--3"></div>
						<h2 class="word word--3">Lycanthropy</h2>
					</div>
					<div class="slide">
						<div class="slide__bg slide__bg--4"></div>
						<h2 class="word word--4">Wonderland</h2>
					</div>
					<div class="slide">
						<div class="slide__bg slide__bg--5"></div>
						<h2 class="word word--5">Screenager</h2>
					</div>
					<div class="slide">
						<div class="slide__bg slide__bg--6"></div>
						<h2 class="word word--6">Callipygian</h2>
					</div>
					<div class="slide">
						<div class="slide__bg slide__bg--7"></div>
						<h2 class="word word--7">Eviternity</h2>
					</div>
					<div class="slide">
						<div class="slide__bg slide__bg--8"></div>
						<h2 class="word word--8">Jumbuck</h2>
					</div>
					<div class="slide">
						<div class="slide__bg slide__bg--9"></div>
						<h2 class="word word--9">Babooner</h2>
					</div>
				</div>
				<nav class="slidenav">
					<button class="slidenav__item slidenav__item--prev"><svg class="icon icon--navarrow"><use xlink:href="#icon-nav-arrow"></use></svg></button>
					<button class="slidenav__item slidenav__item--next"><svg class="icon icon--navarrow"><use xlink:href="#icon-nav-arrow"></use></svg></button>
				</nav>
			</div>
		</main>
		<script>
			{
				const effects = [
					// Effect 1
					{
						options: {
							shapeColors: ['#6435ea','#295ddc','#9fd7ff','#d65380','#0228f7','#242627']
						},
						hide: {
							lettersAnimationOpts: {
								duration: 800,
								delay: (t,i) => i*40,
								easing: 'easeOutExpo',
								opacity: {
									value: 0,
									duration: 100,
									delay: (t,i) => i*40,
									easing: 'linear'
								},
								translateY: ['0%', '100%']
							}
						},
						show: {
							lettersAnimationOpts: {
								duration: 800,
								delay: (t,i) => i*40,
								easing: 'easeOutElastic',
								opacity: [0,1],
								translateY: ['100%', '0%']
							},
							shapesAnimationOpts: {
								duration: 300,
								delay: (t,i) => i*30+100,
								easing: 'easeOutQuad',
								translateY: () => [anime.random(-15,15),anime.random(-200,200)],
								scale: () => [0.2,randomBetween(0.5,1)],
								opacity: [
									{
										value: 1,
										duration:1,
										delay: (t,i) => i*30+100
									},
									{
										value: 0,
										duration: 200,
										delay:200,
										easing: 'linear'}
								]
							}
						}
					},
					// Effect 2
					{
						options: {
							shapeColors: ['#0671e6'],
							shapeTypes: ['circle'],
							shapeFill: false,
							shapeStrokeWidth: 3
						},
						hide: {
							lettersAnimationOpts: {
								duration: 300,
								delay: (t,i,total) => i*25,
								easing: 'easeOutQuad',
								opacity: {
									value: 0,
									duration: 100,
									delay: (t,i,total) => i*25,
									easing: 'linear'
								},
								translateY: ['0%','-50%']
							},
							shapesAnimationOpts: {
								duration: 300,
								delay: (t,i) => i*20,
								easing: 'easeOutExpo',
								translateX: t => anime.random(-10,10),
								translateY: t => -1*anime.random(400,800),
								scale: [0.3,0.3],
								opacity: [
									{
										value: 1,
										duration:1,
										delay: (t,i) => i*20
									},
									{
										value: 0,
										duration: 300,
										easing: 'linear'
									}
								]
							}
						},
						show: {
							lettersAnimationOpts: {
								duration: 800,
								delay: (t,i,total) => Math.abs(total/2-i)*60,
								easing: 'easeOutElastic',
								opacity: [0,1],
								translateY: ['50%', '0%']
							},
							shapesAnimationOpts: {
								duration: 700,
								delay: (t,i) => i*60,
								easing: 'easeOutExpo',
								translateX: () => {
									const rand = anime.random(-100,100);
									return [rand,rand];
								},
								translateY: () => {
									const rand = anime.random(-100,100);
									return [rand,rand];
								},
								scale: () => [randomBetween(0.1,0.3),randomBetween(0.5,0.8)],
								opacity: [{value: 1, duration:1, delay: (t,i) => i*80}, {value:0,duration: 700, easing: 'easeOutQuad',delay: 100}]
							}
						}
					},
					// Effect 3
					{
						options: {
							shapeColors: ['#111']
						},
						hide: {
							shapesAnimationOpts: {
								duration: 200,
								delay: (t,i) => i*20,
								easing: 'easeOutExpo',
								translateX: t => t.dataset.tx,
								translateY: t => t.dataset.ty - anime.random(400,800),
								scale: t => t.dataset.s,
								rotate: 0,
								opacity: {
									value: 0,
									duration: 200,
									easing: 'linear'
								}
							}
						},
						show: {
							lettersAnimationOpts: {
								duration: 500,
								delay: (t,i) => i*60,
								easing: 'easeOutExpo',
								opacity: {
									value: [0,1],
									duration: 50,
									delay: (t,i) => i*60,
									easing: 'linear'
								},
								translateY: (t,i) => i%2 ? [anime.random(-350,-300),0] : [anime.random(300,350),0]
							},
							shapesAnimationOpts: {
								duration: () => anime.random(1000,4000),
								delay: (t,i) => i*20,
								easing: [0.2,1,0.3,1],
								translateX: t => {
									const tx = anime.random(-200,200);
									t.dataset.tx = tx;
									return [0,tx];
								},
								translateY: t => {
									const ty = anime.random(-300,300);
									t.dataset.ty = ty;
									return [0,ty];
								},
								scale: t => {
									const s = randomBetween(0.2,0.6);
									t.dataset.s = s;
									return [s,s];
								},
								rotate: () => anime.random(-90,90),
								opacity: {
									value: 0.6,
									duration: 1000,
									easing: 'linear'
								}
							}
						}
					},
					// Effect 4
					{
						options: {
							// shape elements will be on top of the letters
							shapesOnTop: true,
							shapeColors: ['#ec4747','#5447ec','#ecb447','#a847ec','#635f65'],
							totalShapes: 20
						},
						hide: {
							lettersAnimationOpts: {
								duration: 200,
								delay: (t,i,total) => (total-i-1)*20,
								easing: 'easeOutExpo',
								opacity: {
									value: [1,0],
									duration: 100,
									delay: (t,i,total) => (total-i-1)*20,
									easing: 'linear'
								},
								scale: [1,0]
							}
						},
						show: {
							lettersAnimationOpts: {
								duration: 400,
								delay: (t,i) => i*60,
								easing: 'easeInOutExpo',
								opacity: [0,1],
								translateY: ['-100%', '0%']
							},
							shapesAnimationOpts: {
								duration: 400,
								delay: (t,i) => i*20,
								easing: 'easeOutBack',
								translateX: {
									value: () => [anime.random(-100,100),anime.random(-10,10)],
									easing: 'easeOutExpo',
								},
								translateY: () => [anime.random(-100,0),anime.random(-400,-50)],
								scale: () => {
									const rand = randomBetween(0.2,0.5);
									return [rand,rand];
								},
								rotate: () => anime.random(-15,15),
								opacity: [
									{
										value: 1,
										duration:1,
										delay: (t,i) => i*20
									},
									{
										value:0,
										duration: 500,
										easing: 'linear'
									}
								]
							}
						}
					},
					// Effect 5
					{
						options: {
							shapesOnTop: true,
							shapeColors: ['#ec4747','#5447ec','#ecb447','#a847ec','#635f65'],
							shapeFill: false,
							shapeStrokeWidth: 4,
							totalShapes: 30
						},
						show: {
							lettersAnimationOpts: {
								duration: 300,
								delay: (t,i) => i*100,
								easing: 'easeInExpo',
								opacity: [0,1],
								translateY: ['-50%', '0%']
							},
							shapesAnimationOpts: {
								duration: 400,
								delay: (t,i) => i*5+300,
								easing: [0.2,1,0.3,1],
								translateX: () => [0, anime.random(-100,100)],
								translateY: () => [50,anime.random(-100,150)],
								scale: () => [randomBetween(0.2,0.4),randomBetween(0.2,0.4)],
								rotate: () => anime.random(-25,25),
								opacity: [
									{value: 1, duration: 1, easing: 'easeOutQuad', delay: (t,i) => i*5+300},
									{value: 0, duration: 250, easing: 'easeOutQuad', delay: 200}
								]
							}
						}
					},
					// Effect 6
					{
						options: {
							shapeColors: ['#fff','#dedede','#8c8c8c','#545454','#000','#dc2e2e']
						},
						hide: {
							lettersAnimationOpts: {
								duration: 200,
								delay: (t,i,total) => (total-i-1)*20,
								easing: 'easeOutExpo',
								opacity: {
									value: [1,0],
									duration: 100,
									delay: (t,i,total) => (total-i-1)*20,
									easing: 'linear'
								},
								scale: [1,0]
							}
						},
						show: {
							lettersAnimationOpts: {
								duration: 400,
								delay: (t,i) => i*60,
								easing: 'easeInExpo',
								opacity: [0,1],
								scale: [0,1]
							},
							shapesAnimationOpts: {
								duration: 700,
								delay: (t,i) => i*40,
								easing: 'easeOutExpo',
								translateX: () => [0,anime.random(-20,20)],
								translateY: () => [0,anime.random(-400,400)],
								scale: () => [randomBetween(0.2,0.6),randomBetween(0.2,0.6)],
								rotate: () => [0,anime.random(-16,16)],
								opacity: [
									{value: 1, duration: 1, easing: 'linear'},
									{value: 0, duration: 700, easing: 'easeOutQuad'}
								]
							}
						}
					},
					// Effect 7
					{
						options: {
							shapeColors: ['red','#000','#fff'],
							shapeFill: false,
							shapeStrokeWidth: 10
						},
						hide: {
							shapesAnimationOpts: {
								duration: 250,
								delay: (t,i) => i*20,
								easing: 'easeOutExpo',
								translateX: () => [0,anime.random(-200,200)],
								translateY: () => [0,anime.random(-200,200)],
								scale: () => [randomBetween(0.2,0.6),randomBetween(0.2,0.6)],
								rotate: () => [0,anime.random(-16,16)],
								opacity: [
									{value: 1, duration: 1, easing: 'linear', delay: (t,i) => i*20},
									{value: 0, duration: 150, delay: 100, easing: 'easeOutQuad'}
								]
							}
						},
						show: {
							lettersAnimationOpts: {
								duration: 400,
								delay: (t,i) => i*60,
								easing: 'easeOutExpo',
								opacity: {
									value: [0,1],
									duration: 100,
									easing: 'linear'
								},
								translateY: (t,i) => i%2 ? [anime.random(-350,-300),0] : [anime.random(300,350),0]
							},
							shapesAnimationOpts: {
								duration: 500,
								delay: (t,i) => i*30,
								easing: 'easeOutExpo',
								translateX: () => [0,anime.random(-200,200)],
								translateY: () => [0,anime.random(-200,200)],
								scale: () => [randomBetween(0.2,0.6),randomBetween(0.2,0.6)],
								rotate: () => [0,anime.random(-16,16)],
								opacity: [
									{value: 1, duration: 1, easing: 'linear'},
									{value: 0, duration: 350, delay: 150, easing: 'easeOutQuad'}
								]
							}
						}
					},
					// Effect 8
					{
						options: {
							shapeColors: ['#35c394','#9985ee','#f54665','#4718f5','#f5aa18'],
							shapesOnTop: true
						},
						hide: {
							lettersAnimationOpts: {
								duration: 300,
								delay: (t,i)  => (t.parentNode.children.length-i-1)*30,
								easing: 'easeOutExpo',
								opacity: 0,
								translateY: (t,i) => i%2 === 0 ? '80%' : '-80%',
								rotate: (t,i) => i%2 === 0 ? -25 : 25
							},
							shapesAnimationOpts: {
								duration: 50,
								easing: 'easeOutExpo',
								translateX: t => t.dataset.tx,
								translateY: t => t.dataset.ty,
								scale: 0,
								rotate: 0,
								opacity: {
									value: 0,
									duration: 50,
									easing: 'linear'
								}
							}
						},
						show: {
							lettersAnimationOpts: {
								duration: 400,
								delay: (t,i)  => (t.parentNode.children.length-i-1)*80,
								easing: 'easeOutElastic',
								opacity: {
									value: [0,1],
									duration: 100,
									easing: 'linear'
								},
								translateY: (t,i) => i%2 === 0 ? ['-80%', '0%'] : ['80%', '0%'],
								rotate: [90,0]
							},
							shapesAnimationOpts: {
								duration: () => anime.random(1000,3000),
								delay: (t,i) => i*20,
								easing: 'easeOutElastic',
								translateX: t => {
									const tx = anime.random(-250,250);
									t.dataset.tx = tx;
									return [0,tx];
								},
								translateY: t => {
									const ty = anime.random(-250,250);
									t.dataset.ty = ty;
									return [0,ty];
								},
								scale: t => {
									const s = randomBetween(0.1,0.6);
									t.dataset.s = s;
									return [s,s];
								},
								rotate: () => anime.random(-90,90),
								opacity: {
									value: 0.6,
									duration: 1000,
									easing: 'linear'
								}
							}
						}
					},
					// Effect 9
					{
						options: {
							shapeColors: ['#FD74FF','#3771FC','#7C5CE4','#542A95','#ACC7FE'],
							shapeTypes: ['rect','polygon'],
							totalShapes: 1
						},
						hide: {
							lettersAnimationOpts: {
								duration: () => anime.random(800,1000),
								delay: () => anime.random(0,80),
								easing: 'easeInOutExpo',
								opacity: 0,
								translateY: '300%',
								rotateZ: () => anime.random(-50,50)
							},
							shapesAnimationOpts: {
								duration: 350,
								easing: 'easeOutExpo',
								translateX: t => [t.dataset.tx,anime.random(-25,25)],
								translateY: t => [t.dataset.ty,anime.random(-25,25)],
								scale: 1,
								rotate: 0,
								opacity: {
									value: 0,
									duration: 200,
									easing: 'linear'
								}
							}
						},
						show: {
							lettersAnimationOpts: {
								duration: 800,
								delay: () => anime.random(0,75),
								easing: 'easeInOutExpo',
								opacity: [0,1],
								translateY: ['-300%','0%'],
								rotate: () => [anime.random(-50,50), 0]
							},
							shapesAnimationOpts: {
								duration: 2000,
								easing: 'easeOutExpo',
								translateY: t => {
									const ty = anime.random(-300,300);
									t.dataset.ty = ty;
									return [anime.random(-25,25),ty];
								},
								scale: t => {
									const s = randomBetween(1.5,2);
									t.dataset.s = s;
									return [s,s];
								},
								rotate: () => anime.random(-45,45),
								opacity: {
									value: [0,0.9],
									duration: 600,
									delay: 300,
									easing: 'linear'
								}
							}
						}
					}
				];
				class Slideshow {
					constructor(el) {
						this.DOM = {};
						this.DOM.el = el;
						this.DOM.slides = Array.from(this.DOM.el.querySelectorAll('.slide'));
						this.DOM.bgs = Array.from(this.DOM.el.querySelectorAll('.slide__bg'));
						this.DOM.words = Array.from(this.DOM.el.querySelectorAll('.word'));
						this.slidesTotal = this.DOM.slides.length;
						this.current = 0;
						this.words = [];
						this.DOM.words.forEach((word, pos) => {
							this.words.push(new Word(word, effects[pos].options));
						});
						this.isAnimating = true;
						this.words[this.current].show(effects[this.current].show).then(() => this.isAnimating = false);
					}
					show(direction) {
						if ( this.isAnimating ) return;
						this.isAnimating = true;
						let newPos;
						let currentPos = this.current;
						if ( direction === 'next' ) {
							newPos = currentPos < this.slidesTotal - 1 ? currentPos+1 : 0;
						}
						else if ( direction === 'prev' ) {
							newPos = currentPos > 0 ? currentPos-1 : this.slidesTotal - 1;
						}
						this.DOM.slides[newPos].style.opacity = 1;
						this.DOM.bgs[newPos].style.transform = 'none';
						anime({
							targets: this.DOM.bgs[currentPos],
							duration: 600,
							easing: [0.2,1,0.3,1],
							translateY: ['0%', direction === 'next' ? '-100%' : '100%'],
							complete: () => {
								this.DOM.slides[currentPos].classList.remove('slide--current');
								this.DOM.slides[currentPos].style.opacity = 0;
								this.DOM.slides[newPos].classList.add('slide--current');
								this.words[newPos].show(effects[newPos].show).then(() => this.isAnimating = false);
							}
						});
						this.words[newPos].hide();
						this.words[this.current].hide(effects[currentPos].hide).then(() => {
							this.current = newPos;
						});
					}
    			}
				const slideshow = new Slideshow(document.querySelector('.slideshow'));
				document.querySelector('.slidenav__item--prev').addEventListener('click', () => slideshow.show('prev') );
				document.querySelector('.slidenav__item--next').addEventListener('click', () => slideshow.show('next') );
				document.addEventListener('keydown', (ev) => {
					const keyCode = ev.keyCode || ev.which;
					if ( keyCode === 37 ) {
						slideshow.show('prev');
					}
					else if ( keyCode === 39 ) {
						slideshow.show('next');
					}
				});
			}
		</script>
</body>
</html>



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册


热门标签: 文字叠加 文字层叠 图片拖动 图片拖拽 图片叠加 图片层叠 图片放大镜 图片翻转 图片旋转 图片淡出淡进 图片淡出 图片淡进 图片全屏 图片延迟加载 图片延迟 图片加载 头像上传 图片上传 二维码 滑动选项卡 滑动切换 文字收缩展开 文字收缩 文字展开 文字放大缩小 文字缩放 文字大小 文字放大 文字缩小 文字变大 文字变小 图片放大缩小 图片缩放 图片大小 图片放大 图片缩小 图片变大 图片变小 地图 中国地图 世界地图 文字延迟加载 文字延迟 文字加载 加载动画 文字翻转 文字旋转 文字提示框 提示文字 滚动切换 滚动条切换 h5图片动画 h5图标动画 html5图片动画 html5图标动画 文字拖动 文字拖拽 图片广告 带缩略图的幻灯片 文字淡出淡进 文字淡出 文字淡进 文字全屏 纯图片轮播 图片轮播 360全景 360度全景 图片收缩展开 图片收缩 图片展开 h5文字动画 h5文字边框动画 html5文字动画 html5文字边框动画 旋转木马 图片旋转木马 文字旋转木马 旋转木马插件 图片滚动 图片滚动条 图片切换 图片选项卡 图标选项卡 图片滑动 图片滑块 图标导航 图标菜单 自动滚动图片轮播 文字滚动 文字无缝滚动 文字间歇滚动 文字滑动 文字滑块 文字切换 文字选项卡 滑动手风琴 选项卡切换 选项卡 切换 tab切换 页面切换 选项卡插件 切换插件 背景切换 大图切换 手风琴 水平手风琴 垂直手风琴 图片手风琴 文字手风琴 手风琴插件 h5弹窗动画 html5弹窗动画 图片文字 文字导航菜单 文字导航 文字菜单 切换按钮 h5动画 h5背景动画 h5场景动画 h53D动画 h5界面动画 html5动画 表单 表单美化 表单插件 表单美化插件 图表 文字 文字插件 图片 图片插件 头像截图 h5按钮动画 html5按钮动画 h5动画导航 h5动画菜单 html5动画导航 html5动画菜单 彩色文字 文字切换 文字选项卡 选项卡自动切换 图片切换 切换图片 按钮控制

×
×

注册

官方QQ群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到