100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > html实现手风琴轮播图 javascript经典特效分享 手风琴 轮播图 图片滑动

html实现手风琴轮播图 javascript经典特效分享 手风琴 轮播图 图片滑动

时间:2019-11-04 05:19:22

相关推荐

html实现手风琴轮播图 javascript经典特效分享 手风琴 轮播图 图片滑动

最近都没有更,就来几个效果充实一下。

都没有进行美化这步。

纯css的手风琴:

手风琴css

.showBox{

width: 660px;

overflow: hidden;

}

ul{

list-style: none;

margin: 0;

padding: 0;

width: 30000px;

}

ul li{

float: left;

position: relative;

height: 254px;

width: 110px;

overflow: hidden;

transition: all 0.3s;

}

/* 这是css手风琴的核心,就是hover的使用

**首先是ul:hover li这个触发了经过ul但没有经过li的变化

**然后是ul li:hover这里是被经过li的变化,匹配css3动画效果,

和css3的一些对页面美化的效果,就可以做出一个很好看的手风琴,

如果使用纯js实现可能很麻烦。

*/

ul:hover li{

width:22px;

}

ul li:hover{

width: 460px;

}

ul li img{

width: 550px;

height: 254px;

}

ul li span{

width: 22px;

position: absolute;

top: 0;

right: 0;

height: 204px;

padding-top: 50px;

color: #fff;

}

ul li span.bg1{

background: #333;

}

ul li span.bg2{

background: #0f0;

}

ul li span.bg3{

background: #ff7500;

}

ul li span.bg4{

background: #0ff;

}

ul li span.bg5{

background: #00f;

}

这是第一个这是第二个这是第三个这是第四个这是第五个

css3手风琴:

css3-checked:

/* 使用了radio的单选特性,实现手风琴效果 */

ul{

display: none;

}

input{display: none;}

label{display: block; line-height: 40px; border-bottom: 1px solid #ddd; cursor:pointer; font-size: 15px; font-weight: bold;}

.list > ul{display: none; -webkit-transition:all .5s linear; -moz-transition:all .5s linear; -ms-transition:all .5s linear; -o-transition:all .5s linear; transition:all .5s linear;}

#list1:checked + ul{display: block;}

#list2:checked + ul{display: block;}

#list3:checked + ul{display: block;}

#list4:checked + ul{display: block;}

我的同学 同学名字同学名字同学名字同学名字同学名字我的同学同学名字同学名字同学名字同学名字同学名字我的同学 同学名字同学名字同学名字同学名字同学名字我的同学 同学名字同学名字同学名字同学名字同学名字

javascript实现的手风琴:

手风琴

.showBox{

width: 660px;

overflow: hidden;

}

ul{

list-style: none;

margin: 0;

padding: 0;

width: 30000px;

}

ul li.active{

width: 550px;

}

ul li{

float: left;

position: relative;

height: 254px;

width: 22px;

overflow: hidden;

}

ul li img{

width: 660px;

height: 254px;

}

ul li span{

width: 22px;

position: absolute;

top: 0;

left: 0;

height: 204px;

padding-top: 50px;

}

ul li span.bg1{

background: #333;

}

ul li span.bg2{

background: #0f0;

}

ul li span.bg3{

background: #ff7500;

}

ul li span.bg4{

background: #0ff;

}

ul li span.bg5{

background: #00f;

}

window.οnlοad=function ()

{

createAccordion('.showBox');

};

function createAccordion(name)

{

/*获取元素*/

var oDiv=document.querySelector(name);

/*声明最小宽度*/

var iMinWidth=9999999;

/*获取元素*/

var aLi=oDiv.getElementsByTagName('li');

var aSpan=oDiv.getElementsByTagName('span');

/*定时器容器默认*/

oDiv.timer=null;

/*循环添加事件和自定义属性索引值*/

for(vari=0;i

{

aSpan[i].index=i;

aSpan[i].οnmοuseοver=function ()

{

gotoImg(oDiv, this.index, iMinWidth);

};

/*获取最小宽度*/

iMinWidth=Math.min(iMinWidth, aLi[i].offsetWidth);

}

};

function gotoImg(oDiv, iIndex, iMinWidth)

{

if(oDiv.timer)

{ /*清除定时器,避免叠加*/

clearInterval(oDiv.timer);

}

/*开启定时器*/

oDiv.timer=setInterval

(

function ()

{

changeWidthInner(oDiv, iIndex, iMinWidth);

}, 30

);

}

/*这里是关键,运动*/

function changeWidthInner(oDiv, iIndex, iMinWidth)

{

var aLi=oDiv.getElementsByTagName('li');

var aSpan=oDiv.getElementsByTagName('span');

/*获取盒子的大小,这个是总宽度*/

var iWidth=oDiv.offsetWidth;

/*缩进去的图片的宽度声明*/

var w=0;

/*判断的声明,为了清除定时器声明*/

var bEnd=true;

/*循环为了把每个图片都循环一遍,为了获取伸进和缩去的元素*/

for(var i=0;i

{

/*这为获取伸进的索引*/

if(i==iIndex)

{

continue;

}

/*这里是没有变动的元素,所以都保存最小宽度*/

if(iMinWidth==aLi[i].offsetWidth)

{

/*总宽度减去这些宽度,因为他们也在总宽度里*/

iWidth-=iMinWidth;

continue;

}

/*走以下的循环里代码的是缩去的元素*/

/*不清除定时器,还没运动完*/

bEnd=false;

/*获取速度,先快后慢*/

speed=Math.ceil((aLi[i].offsetWidth-iMinWidth)/10);

/*缩去剩下的宽度*/

w=aLi[i].offsetWidth-speed;

/*为避免缩去元素小于最小宽度*/

if(w<=iMinWidth)

{

w=iMinWidth;

}

/*设置缩去元素的宽度*/

aLi[i].style.width=w+'px';

/*减去缩去的宽度,剩下的就是伸进的宽度*/

iWidth-=w;

}

/*伸进元素的宽度*/

aLi[iIndex].style.width=iWidth+'px';

if(bEnd)

{

clearInterval(oDiv.timer);

oDiv.timer=null;

}

}

这是第一个这是第二个这是第三个这是第四个这是第五个

接下来的都是会使用到动画效果,既然这样就把封装好运动:

/*使用调用,obj对象,attr属性,speed速度,iTarget想达到的值,fn回调函数*/

/*因为运动基本都是px为单位的,至于透明度是没有单位,所以在这里把它分开了,

其实也没有怎么改,就是判断是不是透明度这个属性,然后走透明度这条线

*/

function doMove(obj,attr,speed,iTarget,fn){

if(attr=="opacity"){

obj.len=iTarget-parseFloat(getStyle(obj,"opacity"))*100;

}else{

obj.len=iTarget-parseFloat(getStyle(obj,attr));

}

/*这里判断方向,在初始点后的为负数,在初始点前为正数*/

speed=obj.len>0?speed:-speed;

clearInterval(obj.timer);

obj.timer=setInterval(function(){

if(!obj.num){

obj.num=0;

}

if(attr=="opacity"){

obj.num=parseFloat(getStyle(obj,attr))*100+speed;

}else{

obj.num=parseInt(getStyle(obj,attr))+speed;

}

/*这里是判断到了目标点没有,到了就停止定时器*/

if(obj.num>=iTarget && obj.len>0 || obj.num<=iTarget && obj.len<0){

obj.num=iTarget;

clearInterval(obj.timer);

}

if(attr=="opacity"){

obj.style[attr]=obj.num/100;

}else{

obj.style[attr]=obj.num+"px";

}

/*因为放在上面无法实现到回调函数的完整作用,出现一些BUG*/

if(obj.num>=iTarget && obj.len>0 || obj.num<=iTarget && obj.len<0){

fn && fn();

}

},30);

}

/*获取css属性值的,会获取表现出现的值*/

function getStyle(obj,attr){

return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj)[attr];

}

轮播图:

轮播图

window.οnlοad=function(){

/*调用实现轮播*/

carousel("carousel")

}

function carousel(name){

var oScl=document.getElementById(name);

var oUl=oScl.querySelector("ul");

var aLi=oUl.querySelectorAll("li");

var next=document.getElementById("next");

var pre=document.getElementById("pre");

var aIndex=oScl.querySelectorAll(".index span");

var num=0;

var index=0;

/*给第一个图片最高级层级*/

aLi[0].style.zIndex=5;

/*判断定时器存不存在*/

if(!oScl.timer){

oScl.timer=null;

}

/*这是自动轮播开启*/

oScl.timer=setInterval(function(){

num++;

num%=aLi.length;

play();

},2000);

/*上下页显示、隐藏*/

oScl.οnmοuseοver=function(){

/*移入停止定时器*/

clearInterval(oScl.timer);

next.style.display="block";

pre.style.display="block";

}

oScl.οnmοuseοut=function(){

next.style.display="none";

pre.style.display="none";

/*移出开启定时器*/

oScl.timer=setInterval(function(){

num++;

num%=aLi.length;

play();

},2000);

}

/*点击上下页*/

next.οnclick=function(){

num++;

num%=aLi.length;

play();

}

pre.οnclick=function(){

if(!aLi[index]){

index=num;

}

num--;

if(num<0){

num=aLi.length-1;

}

play();

}

/*索引点*/

for(var i=0;i

aIndex[i].index=i;

aIndex[i].οnmοuseοver=function(){

num=this.index;

play();

}

}

/*动画执行函数*/

function play(){

/*判断是否是相同触发点,如索引点的两次移入都是相同的,

如果是不执行,避免连续重复执行

*/

if(index!=num){

for(var i=0;i

/*设置全部层级为1*/

aLi[i].style.zIndex=1;

}

/*设置上次轮播过的图的层级为2*/

aLi[index].style.zIndex=2;

aIndex[index].className="";

aIndex[num].className="active";

index=num;

/*设置这次轮播的图透明度为0*/

aLi[num].style.opacity=0;

/*设置这是轮播的图的层级为5*/

aLi[num].style.zIndex=5;

/*运动函数封装,淡出这次的图*/

doMove(aLi[num],"opacity",10,100);

}

}

}

a{

text-decoration: none;

color: #555;

}

#carousel{

font-family: "微软雅黑";

position: relative;

width: 800px;

height: 400px;

margin: 0 auto;

}

#carousel ul{

list-style: none;

margin: 0;

padding: 0;

position: relative;

}

#carousel ul li{

position: absolute;

z-index: 1;

top: 0;

left: 0;

}

.imgBox img{

width: 800px;

height: 400px;

}

.btn{

position: absolute;

z-index: 10;

top: 50%;

width: 45px;

height: 62px;

margin-top: -31px;

text-align: center;

line-height: 62px;

font-size: 40px;

background: rgba(0,0,0,0.4);

opacity: alpha(opacity=50);

display: none;

}

#pre{

left: 0;

}

#next{

right: 0;

}

#carousel .index{

position: absolute;

bottom: 10px;

left: 50%;

z-index: 10;

}

#carousel .index span{

width: 15px;

height: 15px;

border-radius: 50%;

background: #87CEFA;

display: inline-block;

box-shadow:1px 1px 6px #4169E1;

}

#carousel .index span.active{

background: #4169E1;

box-shadow:1px 1px 6px #87CEFA inset;

}

>

<

这个是使用插件做的:responsiveslides.js

基于jquery

Document

#banner{

position: relative;

width: 800px;

}

/* 插件的默认css属性 */

.rslides {

position: relative;

list-style: none;

overflow: hidden;

width: 100%;

padding: 0;

margin: 0;

}

.rslides li {

-webkit-backface-visibility: hidden;

position: absolute;

display: none;

width: 100%;

left: 0;

top: 0;

}

.rslides li:first-child {

position: relative;

display: block;

float: left;

}

.rslides img {

display: block;

height: auto;

float: left;

width: 100%;

border: 0;

}

/* ,被修改过的,修改成圆点按钮 */

ul.rslides_tabs.rslides1_tabs {

position: absolute;

bottom: 10px;

left: 45%;

list-style: none;

z-index: 10;

}

ul.rslides_tabs.rslides1_tabs li{

float: left;

}

ul.rslides_tabs.rslides1_tabs li a{

display: block;

border-radius: 50%;

width: 10px;

height: 10px;

margin-right: 10px;

background: #fff;

}

/* .rslides_here 这个相当于active */

ul.rslides_tabs.rslides1_tabs li.rslides_here a{

background: #004F88;

}

/* 左右按钮的class名 */

.rslides_nav.rslides1_nav{

position: absolute;

top: 50%;

color: #eee;

font-size: 40px;

text-decoration: none;

z-index: 4;

}

.rslides_nav.rslides1_nav.pre{

left: 10px;

}

.rslides_nav.rslides1_nav.next{

right: 10px;

}

.rslides img{

height: 400px;

}

$(function() {

$(".rslides").responsiveSlides({

pager: true,

// 默认为false,需要展示时(true)展示索引点,默认为数字12345,去js库里修改就可以了

nav: true, // 展示上一张和下一张的导航

pause: false, // 鼠标移入移出是否停止

pauseControls: true, // Boolean: Pause when hovering controls, true or false

prevText: "

nextText: ">", // String: Text for the "next" button

"maxwidth":"800px"

});

$(".rslides1_nav").css("display","none");

$("#banner").mouseover(function(){

$(".rslides1_nav").css("display","block");

})

$("#banner").mouseout(function(){

$(".rslides1_nav").css("display","none");

})

});

图片滑动:

图片滑动

.container{

position: relative;

width: 630px;

border: 2px solid #888;

padding: 5px;

}

.c-wrap{

width: 630px;

overflow: hidden;

}

.container img{

width: 200px;

height: 90px;

}

.container ul{

list-style: none;

margin: 0;

padding: 0;

}

.container ul li{

float: left;

margin-right: 10px;

}

.container .imgBigBox{

width: 33000px;

margin-left: 0px;

}

.imgBigBox:after{

content: " ";

display: block;

clear: both;

}

.btnGroup{

border: 1px solid #888;

width: 65px;

}

.btnGroup a{

text-align: center;

line-height: 20px;

text-decoration: none;

color: #888;

font-size: 20px;

display: inline-block;

width: 30px;

}

.btn1{

margin-right: 4px;

border-right: 1px solid #888;

}

window.οnlοad=function(){

/*调用函数实现滑动*/

slide(".container");

}

function slide(name){

var oContainer=document.querySelector(name);

var oImgBigBox=oContainer.querySelector(".imgBigBox");

var aBtn=oContainer.querySelectorAll(".btnGroup a");

var oC_wrap=oContainer.querySelector(".c-wrap");

/*获取滑动宽度*/

var w=oC_wrap.offsetWidth;

/*点击左边按钮*/

aBtn[0].οnclick=function(){

doMove(oImgBigBox,"marginLeft",10,-w,function(){

var child=oImgBigBox.children[0].cloneNode(true);

oImgBigBox.appendChild(child);

oImgBigBox.removeChild(oImgBigBox.children[0]);

oImgBigBox.style.marginLeft="0px";

})

}

/*点击右边按钮*/

aBtn[1].οnclick=function(){

oImgBigBox.insertBefore(oImgBigBox.children[1],oImgBigBox.children[0]);

oImgBigBox.style.marginLeft=-w+"px";

doMove(oImgBigBox,"marginLeft",10,0)

}

}

<>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。