HTML5 SVG全屏滑块切换特效

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

以下是 HTML5 SVG全屏滑块切换特效 的示例演示效果:

当前平台(PC电脑)
  • 平台:

部分效果截图:

HTML5 SVG全屏滑块切换特效

HTML代码(index.html):

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="gb2312">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>HTML5 SVGȫ�������л���Ч</title>
<link rel="stylesheet" href="css/reset.css">
<link rel="stylesheet" href="css/style.css">

<script src="js/modernizr.js"></script>

</head>
<body>
<section class="cd-slider-wrapper">
<ul class="cd-slider">
		
	<li>
		<div>
			<h2>����2</h2>
			<p>����</p>
		</div>
	</li>

	<li>
		<div>
			<h2>����3</h2>
			<p>����</p>
		</div>
	</li>

	<li>
		<div>
			<h2>����4</h2>
			<p>����</p>
		</div>
	</li>
</ul> <!-- .cd-slider -->

<ol class="cd-slider-navigation">
	<li class="selected"><a href="#0"><em>Item 1</em></a></li>
	<li><a href="#0"><em>Item 2</em></a></li>
	<li><a href="#0"><em>Item 3</em></a></li>
	<li><a href="#0"><em>Item 4</em></a></li>
</ol> <!-- .cd-slider-navigation -->

<div class="cd-svg-cover" data-step1="M1402,800h-2V0.6c0-0.3,0-0.3,0-0.6h2v294V800z" data-step2="M1400,800H383L770.7,0.6c0.2-0.3,0.5-0.6,0.9-0.6H1400v294V800z" data-step3="M1400,800H0V0.6C0,0.4,0,0.3,0,0h1400v294V800z" data-step4="M615,800H0V0.6C0,0.4,0,0.3,0,0h615L393,312L615,800z" data-step5="M0,800h-2V0.6C-2,0.4-2,0.3-2,0h2v312V800z" data-step6="M-2,800h2L0,0.6C0,0.3,0,0.3,0,0l-2,0v294V800z" data-step7="M0,800h1017L629.3,0.6c-0.2-0.3-0.5-0.6-0.9-0.6L0,0l0,294L0,800z" data-step8="M0,800h1400V0.6c0-0.2,0-0.3,0-0.6L0,0l0,294L0,800z" data-step9="M785,800h615V0.6c0-0.2,0-0.3,0-0.6L785,0l222,312L785,800z" data-step10="M1400,800h2V0.6c0-0.2,0-0.3,0-0.6l-2,0v312V800z">
	<svg height='100%' width="100%" preserveAspectRatio="none" viewBox="0 0 1400 800">
		<title>SVG cover layer</title>
		<desc>an animated layer to switch from one slide to the next one</desc>
		<path id="cd-changing-path" d="M1402,800h-2V0.6c0-0.3,0-0.3,0-0.6h2v294V800z"/>
	</svg>
</div> <!-- .cd-svg-cover -->
</section> <!-- .cd-slider-wrapper -->
<script src="js/jquery-2.1.4.js"></script>
<script src="js/snap.svg-min.js"></script>
<script src="js/main.js"></script> <!-- Resource jQuery -->

</body>
</html>

JS代码(main.js):

jQuery(document).ready(function(){
	/*convert a cubic bezier value to a custom mina easinghttp://stackoverflow.com/questions/25265197/how-to-convert-a-cubic-bezier-value-to-a-custom-mina-easing-snap-svg*/
var duration = 300,delay = 300,epsilon = (1000 / 60 / duration) / 4,firstCustomMinaAnimation = bezier(.42,.03,.77,.63,epsilon),secondCustomMinaAnimation = bezier(.27,.5,.6,.99,epsilon);
	//initialize the slider$('.cd-slider-wrapper').each(function(){
	initSlider($(this));
}
);
	function initSlider(sliderWrapper){
	//cache jQuery objectsvar slider = sliderWrapper.find('.cd-slider'),sliderNavigation = sliderWrapper.find('.cd-slider-navigation').find('li'),svgCoverLayer = sliderWrapper.find('div.cd-svg-cover'),pathId = svgCoverLayer.find('path').attr('id'),svgPath = Snap('#'+pathId);
	//store path 'd' attribute valuesvar pathArray = [];
	pathArray[0] = svgCoverLayer.data('step1');
	pathArray[1] = svgCoverLayer.data('step6');
	pathArray[2] = svgCoverLayer.data('step2');
	pathArray[3] = svgCoverLayer.data('step7');
	pathArray[4] = svgCoverLayer.data('step3');
	pathArray[5] = svgCoverLayer.data('step8');
	pathArray[6] = svgCoverLayer.data('step4');
	pathArray[7] = svgCoverLayer.data('step9');
	pathArray[8] = svgCoverLayer.data('step5');
	pathArray[9] = svgCoverLayer.data('step10');
	//update visible slide when user clicks .cd-slider-navigation buttonssliderNavigation.on('click',function(event){
	event.preventDefault();
	var selectedItem = $(this);
	if(!selectedItem.hasClass('selected')){
	// if it's not already selectedvar selectedSlidePosition = selectedItem.index(),selectedSlide = slider.children('li').eq(selectedSlidePosition),visibleSlide = slider.find('.visible'),visibleSlidePosition = visibleSlide.index(),direction = '';
	direction = ( visibleSlidePosition < selectedSlidePosition) ? 'next':'prev';
	updateSlide(visibleSlide,selectedSlide,direction,svgCoverLayer,sliderNavigation,pathArray,svgPath);
}
}
);
}
function updateSlide(oldSlide,newSlide,direction,svgCoverLayer,sliderNavigation,paths,svgPath){
	if( direction == 'next' ){
	var path1 = paths[0],path2 = paths[2],path3 = paths[4];
	path4 = paths[6];
	path5 = paths[8];
}
else{
	var path1 = paths[1],path2 = paths[3],path3 = paths[5];
	path4 = paths[7];
	path5 = paths[9];
}
svgCoverLayer.addClass('is-animating');
	svgPath.attr('d',path1);
	svgPath.animate({
	'd':path2}
,duration,firstCustomMinaAnimation,function(){
	svgPath.animate({
	'd':path3}
,duration,secondCustomMinaAnimation,function(){
	oldSlide.removeClass('visible');
	newSlide.addClass('visible');
	updateNavSlide(newSlide,sliderNavigation);
	setTimeout(function(){
	svgPath.animate({
	'd':path4}
,duration,firstCustomMinaAnimation,function(){
	svgPath.animate({
	'd':path5}
,duration,secondCustomMinaAnimation,function(){
	svgCoverLayer.removeClass('is-animating');
}
);
}
);
}
,delay);
}
);
}
);
}
function updateNavSlide(actualSlide,sliderNavigation){
	var position = actualSlide.index();
	sliderNavigation.removeClass('selected').eq(position).addClass('selected');
}
function bezier(x1,y1,x2,y2,epsilon){
	//https://github.com/arian/cubic-beziervar curveX = function(t){
	var v = 1 - t;
	return 3 * v * v * t * x1 + 3 * v * t * t * x2 + t * t * t;
}
;
	var curveY = function(t){
	var v = 1 - t;
	return 3 * v * v * t * y1 + 3 * v * t * t * y2 + t * t * t;
}
;
	var derivativeCurveX = function(t){
	var v = 1 - t;
	return 3 * (2 * (t - 1) * t + v * v) * x1 + 3 * (- t * t * t + 2 * v * t) * x2;
}
;
	return function(t){
	var x = t,t0,t1,t2,x2,d2,i;
	// First try a few iterations of Newton's method -- normally very fast.for (t2 = x,i = 0;
	i < 8;
	i++){
	x2 = curveX(t2) - x;
	if (Math.abs(x2) < epsilon) return curveY(t2);
	d2 = derivativeCurveX(t2);
	if (Math.abs(d2) < 1e-6) break;
	t2 = t2 - x2 / d2;
}
t0 = 0,t1 = 1,t2 = x;
	if (t2 < t0) return curveY(t0);
	if (t2 > t1) return curveY(t1);
	// Fallback to the bisection method for reliability.while (t0 < t1){
	x2 = curveX(t2);
	if (Math.abs(x2 - x) < epsilon) return curveY(t2);
	if (x > x2) t0 = t2;
	else t1 = t2;
	t2 = (t1 - t0) * .5 + t0;
}
// Failurereturn curveY(t2);
}
;
}
;
}
);
	

CSS代码(style.css):

/* --------------------------------Primary style-------------------------------- */
*,*::after,*::before{box-sizing:border-box;}
html{font-size:62.5%;}
body{font-size:1.6rem;font-family:"Jaldi",sans-serif;color:#4a3553;background-color:#ffffff;}
a{color:#ffb251;text-decoration:none;}
/* --------------------------------Slider-------------------------------- */
.cd-slider-wrapper{position:relative;width:100%;height:100vh;/* hide horizontal scrollbar on IE11 */
 overflow:hidden;}
.cd-slider-wrapper .cd-slider,.cd-slider-wrapper .cd-slider > li{height:100%;width:100%;}
.cd-slider > li{position:absolute;top:0;left:0;opacity:0;/* used to vertically center its content */
 display:table;background-position:center center;background-repeat:no-repeat;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
.cd-slider > li.visible{/* selected slide */
 position:relative;z-index:2;opacity:1;}
.cd-slider > li:first-of-type{background-color:#4a3553;background-image:url(../img/img-1.jpg);}
.cd-slider > li:nth-of-type(2){background-color:#ffb251;background-image:url(../img/img-2.jpg);}
.cd-slider > li:nth-of-type(3){background-color:#7d7160;background-image:url(../img/img-3.jpg);}
.cd-slider > li:nth-of-type(4){background-color:#ff625a;background-image:url(../img/img-4.jpg);}
.cd-slider > li:first-of-type,.cd-slider > li:nth-of-type(2),.cd-slider > li:nth-of-type(3),.cd-slider > li:nth-of-type(4){background-size:cover;}
.cd-slider > li > div{/* vertically center the slider content */
 display:table-cell;vertical-align:middle;text-align:center;}
.cd-slider > li h2,.cd-slider > li p{text-shadow:0 1px 3px rgba(0,0,0,0.1);line-height:1.2;margin:0 auto 14px;color:#ffffff;width:90%;max-width:320px;}
.cd-slider > li h2{font-size:2.4rem;}
.cd-slider > li p{font-size:1.4rem;line-height:1.4;}
.cd-slider > li .cd-btn{display:inline-block;padding:1.2em 1.4em;margin-top:.8em;background-color:rgba(0,0,0,0.6);border-radius:.25em;font-size:1.3rem;font-weight:700;letter-spacing:1px;color:#ffffff;text-transform:uppercase;-webkit-transition:background-color 0.2s;-moz-transition:background-color 0.2s;transition:background-color 0.2s;}
.no-touch .cd-slider > li .cd-btn:hover{background-color:rgba(0,0,0,0.8);}
@media only screen and (min-width:768px){.cd-slider > li h2,.cd-slider > li p{max-width:520px;}
.cd-slider > li h2{font-size:2.4em;font-weight:300;}
.cd-slider > li .cd-btn{font-size:1.4rem;}
}
@media only screen and (min-width:1170px){.cd-slider > li h2,.cd-slider > li p{margin-bottom:20px;}
.cd-slider > li h2{font-size:3.2em;}
.cd-slider > li p{font-size:1.8rem;}
}
/* --------------------------------Slider navigation-------------------------------- */
.cd-slider-navigation{position:absolute;bottom:50px;left:50%;right:auto;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%);z-index:3;text-align:center;width:90%;}
.cd-slider-navigation::after{clear:both;content:"";display:table;}
.cd-slider-navigation li{display:inline-block;margin-right:20px;}
.cd-slider-navigation li:last-of-type{margin-right:0;}
.cd-slider-navigation a{display:block;position:relative;height:40px;width:40px;background:url(../img/cd-icon-navigation.svg) no-repeat -10px -10px;border-radius:50%;background-color:#ffffff;}
.no-touch .cd-slider-navigation a:hover em{opacity:1;visibility:visible;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%);-webkit-transition:opacity 0.2s 0s,visibility 0s 0s,-webkit-transform 0.2s 0s;-moz-transition:opacity 0.2s 0s,visibility 0s 0s,-moz-transform 0.2s 0s;transition:opacity 0.2s 0s,visibility 0s 0s,transform 0.2s 0s;}
.cd-slider-navigation li.selected:first-of-type a{/* change custom icon using image sprites */
 background-position:-10px -70px;}
.cd-slider-navigation li:nth-of-type(2) a{background-position:-70px -10px;}
.cd-slider-navigation li.selected:nth-of-type(2) a{background-position:-70px -70px;}
.cd-slider-navigation li:nth-of-type(3) a{background-position:-130px -10px;}
.cd-slider-navigation li.selected:nth-of-type(3) a{background-position:-130px -70px;}
.cd-slider-navigation li:nth-of-type(4) a{background-position:-190px -10px;}
.cd-slider-navigation li.selected:nth-of-type(4) a{background-position:-190px -70px;}
.cd-slider-navigation em{/* tooltip visible on hover */
 position:absolute;bottom:calc(100% + 10px);left:50%;padding:8px 10px;color:#ffffff;background-color:rgba(0,0,0,0.7);white-space:nowrap;font-size:1.3rem;border-radius:2px;opacity:0;visibility:hidden;-webkit-transform:translateX(-50%) translateY(3px);-moz-transform:translateX(-50%) translateY(3px);-ms-transform:translateX(-50%) translateY(3px);-o-transform:translateX(-50%) translateY(3px);transform:translateX(-50%) translateY(3px);-webkit-transition:opacity 0.2s 0s,visibility 0s 0.2s,-webkit-transform 0.2s 0s;-moz-transition:opacity 0.2s 0s,visibility 0s 0.2s,-moz-transform 0.2s 0s;transition:opacity 0.2s 0s,visibility 0s 0.2s,transform 0.2s 0s;}
.cd-slider-navigation em::after{/* tooltip arrow */
 content:'';position:absolute;left:50%;right:auto;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%);bottom:-10px;height:0;width:0;border:5px solid transparent;border-top-color:rgba(0,0,0,0.7);}
@media only screen and (min-width:1170px){.cd-slider-navigation a{height:60px;width:60px;}
.cd-slider-navigation li:first-of-type a{/* change custom icon using image sprites */
 background-position:0 0px;}
.cd-slider-navigation li.selected:first-of-type a{/* change custom icon using image sprites */
 background-position:0 -60px;}
.cd-slider-navigation li:nth-of-type(2) a{background-position:-60px 0;}
.cd-slider-navigation li.selected:nth-of-type(2) a{background-position:-60px -60px;}
.cd-slider-navigation li:nth-of-type(3) a{background-position:-120px 0;}
.cd-slider-navigation li.selected:nth-of-type(3) a{background-position:-120px -60px;}
.cd-slider-navigation li:nth-of-type(4) a{background-position:-180px 0;}
.cd-slider-navigation li.selected:nth-of-type(4) a{background-position:-180px -60px;}
}
/* --------------------------------svg cover layer-------------------------------- */
.cd-svg-cover{position:absolute;z-index:1;left:0;top:0;height:100%;width:100%;opacity:0;}
.cd-svg-cover path{fill:#ffe8c9;}
.cd-svg-cover.is-animating{z-index:4;opacity:1;-webkit-transition:opacity 0.6s;-moz-transition:opacity 0.6s;transition:opacity 0.6s;}
附件:下载该文件资源,减少时间成本(增值服务)
留言
该资源可下载
File Source
.rar
572.70 KB
html5特效
最新结算
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
HTML5实现CSS滤镜图片切换特效代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery+css3实现信封效果
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
我们力求给您提供有用的文章,再此基础上,会附加营收资源,不做任何广告,让平台可以更好发展 若您发现您的权利被侵害,或使用了您的版权,请发邮件联系 sunlifel@foxmail.com ggbig觉得 : 不提供源码的文章不是好文章
合作伙伴
联系我们
  • QQ:21499807
  • 邮箱:sunlifel@foxmail.com
  • QQ扫一扫加QQ
    QQ扫一扫
Copyright 2023-2024 ggbig.com·皖ICP备2023004211号-1
打赏文章