加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

使用html5+css3来实现slider切换效果告别javascript+css

发布时间:2020-09-23 18:37:46 所属栏目:编程 来源:网络整理
导读:提到slider,已往一向都是用css+js来共同实现相干的切换结果。听过各人一向接头行使html5+css3的实现方法,本身却一向没有下手实现过。好吧,这次我偶然刻来玩下
好吧,前次说要赶忙的补上几篇文章,功效淡定的失信了。又是近一个月才发一篇,真是让人忧郁。发明最近老是抽不出时刻了,根基都是一个项目接一个项目标布置,本身不是在空闲的时辰找不到吻合的话题,就是在有纠结话题的时辰抽不出时刻了。以是我抉择一段时刻内先把本身纠结过的题目先归纳下常识点,等空闲的时辰在一个一个深入研究,然后再清算成文章后分享出来。

开始进入正题,提到slider,已往一向都是用css+js来共同实现相干的切换结果。听过各人一向接头行使html5+css3的实现方法,本身却一向没有下手实现过。好吧,这次我偶然刻来玩下css3了。着实,我也是被微博上的一条动静给吸引过来的,看到别人实现的结果很赞,然后本身就有了下手做一把的激动。
一、结果图
 
跟已往用js来实现的结果看上去差不了太多,可是整体感受很优雅。好吧,css3的强盛之处在于,我写了很少的代码,就实现了较量伟大的结果。可是这个示例也有不太美满的处所,就是在两张图片切换的时辰,假如中距离断有图片,那么在css3动画的执行进程中照旧会看到,较量不给力。不外想想,这然则纯css3来实现的结果啊,用js来实现的伟大的html布局变换在这里可看不到,以是上面的结果很难简朴用css3来实现。
二、html布局 

复制代码

代码如下:


<div>
<input checked type="radio">
<input type="radio">
<input type="radio">
<input type="radio">
<input type="radio">
<div>
<div>
<div>
<article>
<div>
<h1>Title1</h1>
<a href="#">Description1</a>
</div>
<img src="http://www.jb51.net/html5/img/pic1.png"/>
</article>
<article>
<div>
<h1>Title2</h1>
<a href="#">Description2</a>
</div>
<img src="http://www.jb51.net/html5/img/pic2.png"/>
</article>
<article>
<div>
<h1>Title3</h1>
<a href="#">Description3</a>
</div>
<img src="http://www.jb51.net/html5/img/pic3.png"/>
</article>
<article>
<div>
<h1>Title4</h1>
<a href="#">Description4</a>
</div>
<img src="http://www.jb51.net/html5/img/pic4.png"/>
</article>
<article>
<div>
<h1>Title5</h1>
<a href="#">Description5</a>
</div>
<img src="http://www.jb51.net/html5/img/pic5.png"/>
</article>
</div>
</div>
</div>
<div>
<label for="slider1"></label>
<label for="slider2"></label>
<label for="slider3"></label>
<label for="slider4"></label>
<label for="slider5"></label>
</div>
<div>
<label for="slider1"></label>
<label for="slider2"></label>
<label for="slider3"></label>
<label for="slider4"></label>
<label for="slider5"></label>
</div>
</div>


上面的代码是首要的html布局,个中包括了一个input radio组,你可以在这里它看做一此中枢,本实例中它起到了很要害的浸染(这也是为什么我在示例中不肯将它潜匿起来,真正的好汉不该该是幕后的好汉)。
下面的sliders中包括了必要揭示的images,这里仿佛是一个滑动门的结果,通过节制inner的margin-left来揭示差异的image。

controls是图片阁下双方的切换箭头,先不要着急为什么要计划5个,看上去只要两个就可以了啊,提示下,我们本例中毫不行使js来实现切换。
最后的active是图片下面的点击小按钮,可以通过点击直接选摘要赏识的图片,你也可以富厚内里的布局来计一律个缩略图的结果。
三、css样式表

复制代码

代码如下:


@charset utf-8;
/* common */
body{background: #ddd;overflow-x: hidden;}
#bd{width: 960px;margin: 100px auto;max-width: 960px;}
/* module: sliders */
#sliders{
border-radius: 5px;
box-shadow: 1px 1px 4px #666;
padding: 1%;
background: #fff;
}
#overflow{
width: 100%;
overflow: hidden;
}
#sliders .inner{
width: 500%;
transiton: all 1s linear;
-webkit-transition: all 1s linear;
}
#sliders article{
float: left;
width: 20%;
}
#sliders article .info{
position: absolute;
opacity: 0;
padding: 30px;
color: #666;
font-family: Arial;
transition: opacity 0.1s ease-out;
-webkit-transform: translateZ(0);
-webkit-transition: opacity 0.1s ease-out;
}
#sliders article .info h1{
font-size: 22px;
font-weight: bold;
margin: 0 0 5px;
}
#sliders article .info a{
color: #666;
text-decoration: none;
}
/* module: controls */
#controls{
height: 50px;
width: 100%;
margin-top: -25%;
}
#controls label{
display: none;
width: 50px;
height: 50px;
opacity: 0.3;
cursor: pointer;
}
#controls label:hover{
opacity: 1;
}
/* module: active */
#active{
width: 100%;
margin-top: 23%;
text-align: center;
}
#active label{
display: inline-block;
width: 10px;
height: 10px;
border-radius: 5px;
background: #bbb;
border-color: #777;
}
#active label:hover{
background: #ccc;
}
/* input checked change style */
#slider1:checked ~ #active label:nth-child(1),
#slider2:checked ~ #active label:nth-child(2),
#slider3:checked ~ #active label:nth-child(3),
#slider4:checked ~ #active label:nth-child(4),
#slider5:checked ~ #active label:nth-child(5){
background: #333;
}
#slider1:checked ~ #controls label:nth-child(5),
#slider2:checked ~ #controls label:nth-child(1),
#slider3:checked ~ #controls label:nth-child(2),
#slider4:checked ~ #controls label:nth-child(3),
#slider5:checked ~ #controls label:nth-child(4){
display: block;
float: left;
background: url(../img/prev.png) no-repeat;
margin-left: -70px;
}
#slider1:checked ~ #controls label:nth-child(2),
#slider2:checked ~ #controls label:nth-child(3),
#slider3:checked ~ #controls label:nth-child(4),
#slider4:checked ~ #controls label:nth-child(5),
#slider5:checked ~ #controls label:nth-child(1){
display: block;
float: right;
background: url(../img/next.png) no-repeat;
margin-right: -70px;
}
#slider1:checked ~ #sliders article:nth-child(1) .info,
#slider2:checked ~ #sliders article:nth-child(2) .info,
#slider3:checked ~ #sliders article:nth-child(3) .info,
#slider4:checked ~ #sliders article:nth-child(4) .info,
#slider5:checked ~ #sliders article:nth-child(5) .info{
opacity: 1;
transition: all 0.6s ease-out 1s;
-webkit-transition: all 0.6s ease-out 1s;
}
#slider1:checked ~ #sliders .inner{
margin-left: 0;
}
#slider2:checked ~ #sliders .inner{
margin-left: -100%;
}
#slider3:checked ~ #sliders .inner{
margin-left: -200%;
}
#slider4:checked ~ #sliders .inner{
margin-left: -300%;
}
#slider5:checked ~ #sliders .inner{
margin-left: -400%;
}


好吧,我认可上面的css代码真的较量多,较量伟大,然则它真的实现了很是炫的结果,并且我写完的时辰也被css3的庞大魔力折服了。。。
这内里前半部门的代码首要用来计划slider的布局,包罗一些圆角、阴影方面的美化计划。后半部门首要是一些动画结果,来实现一些切换图片可能是节制按钮切换时辰的动态结果。可是,最首要的是最下面的css3选择器的行使,通过它真正实现了图片切换的成果。我真的以为选择器在示例里起到了很是很是重要的浸染,由于这是我已往进修css3所忽略的常识。一向认为css3强盛的是圆角、阴影,是变形、动画,可是这段代码真的汇报我们选择器在css3中有何等重要。在一些伟大的逻辑中,行使这些css3选择器可以实现令人无法想象的结果。
四、slider实现的道理
第一次看完上面的代码的时辰,你必定跟我当月朔样,不信托这样的代码可以实现slider的结果。
好吧,我来说明下实现的道理吧。
我在上文中说过,最上面的谁人radio组很重要,是slider实现的关节。没错,它真的是。
要实现一个slider,无非要实现两种切换,就是点击节制按钮的时辰,图片切换;同时,图片切换的时辰,担保全部的节制按钮正确表现。
本例中我们行使label来作为节制按钮,article包括图片,而inner作为图片的容器。
简朴的想,label和article怎么也成立不起来接洽,label的状态信息很难反应到article的选择上去。除非有个对象可以把label的切换状态记录下来,然后通过某种本领来选择响应序次的图片来表现。
好吧,此刻,你大白了为什么谁人radio组是实现slider的要害了吧。对,它的呈现就是为了记录label的点击状态。
我们通过label的for属性将它与对应的radio对应起来,当label点击的时辰,响应的radio就变为了checked的状态。然后通过强盛的css3选择器将inner向左移动,让对应的图片表现出来。虽然,对应的阁下选择按钮也是通过选择器来表现的。同样的原理,阁下按钮点击时,下方5个选择按钮的状态也是这样实现的。
上面的实现道理较量简朴吧,着实只要可以记录下节制按钮的点击状态,通过选择器就可以实现slider的结果。
不只仅只有radio组可以,a:hover也可以凭证这样的思绪来实现a在hover的时辰实现图片切换。虽然尚有其他多种实现方法,只要你大白实现的道理。
五、总结
着实css3真的很好玩,许多结果,在css3中,只有想不到,没有做不到。偶然辰真的发明,写css3是必要一点点小智慧的,偶然辰一些精妙的实现方法真的让人赞一直口。
好吧,作为一个小实践,这个示例给我的收成照旧许多的,尤其是强盛的选择器,让我汗颜了,已往太忽视了。。。
不持续图片切换的题目,我还要思量思量,看来必必要行使一点js来帮助了。
好吧,有功效了再分享出来。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读