css的东西还是更新得快呀。(主要是js比较菜),这里主要是把checkbox美化一下,radio什么的参考checkbox一样的道理,css能做的东西还是挺多的,虽然不是那么实用,但是选项卡,页面滚动,图片轮播什么的,都可以做,今天的主角就是css3的:checked
外加上css3的~
和+
选择
:checked
是被选中的 input 元素,当这东西后面跟上~
和+
后,你就可以让选中的input对应的标签做点事情了。~
兄弟选择符,是指选择元素后面的所有兄弟元素,比如a~p就是指a标签后面所有的p标签。+
相邻选择符,是指选择元素后面相邻的兄弟元素,这个只选择一个。
浏览器自带的复选框和单选框的样式简直对不起这网络信息的发展:
复选框: 单选框 1 2 3
是不是丑出天际了,我们的工作就是把丑的东西改装成美的东西给用户看的,自然少不了各种美化了,先来个checkbox的切换吧:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| <label class="switch"> <input type="checkbox"> <div class="switchbox"></div> </label> input[type="checkbox"]{ display: none; } label.switch{ display: inline-block; width: 60px; height: 30px; cursor: pointer; } label.switch .switchbox{ height: 100%; box-sizing: border-box; position: relative; border-radius: 34px; background-color: #e5e5e5; transition: all 0.3s; } label.switch input[type="checkbox"]+.switchbox:after{ height: 30px; width: 30px; border-radius: 50%; box-sizing: border-box; border: 1px solid #dddddd; position: absolute; left: 0; top: 0; content: ''; transition: all 0.3s; background-color: #ffffff; transform: translateX(0); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.4); z-index: 2; } label.switch input[type="checkbox"]+.switchbox:before{ content: ' '; position: absolute; left: 2px; top: 2px; width: 56px; border-radius: 26px; box-sizing: border-box; height: 26px; background: #fff; z-index: 1; transition: all 0.3s; transform: scale(1); } label.switch input[type="checkbox"]:checked+.switchbox{ background-color: #4cd964; } label.switch input[type="checkbox"]:checked+.switchbox:after{ transform: translateX(30px); } label.switch input[type="checkbox"]:checked+.switchbox:before{ transform: scale(0); }
|
首先我们要把丑陋的checkbox给隐藏掉,用label把checkbox包裹住,这样点击label会触发checkbox的选择,然后主要是用:checked+,当checkbox选中后选择switchbox和switchbox的伪元素进行变化,加上一个过渡动画什么的就改装好了,当然其他什么的也是这个原理,css代码太多了,就不一一贴出来了,有兴趣的去看代码链接吧。
来看看所有改装的样式:
至于css滚动则是用几个radio,将其opacity设为0;让其透明,然后覆盖在文字上,你点击文字就选中了radio,body只显示当前窗口,超出隐藏,然后通过:checked ~让.main的transform: translateY变化,就达到了滚动的效果;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <input type="radio" name="nav" class="nav-1" checked="checked"/> <a class="nav">首页</a> <input type="radio" name="nav" class="nav-2"/> <a class="nav">新闻</a> <input type="radio" name="nav" class="nav-3"/> <a class="nav">娱乐</a> <input type="radio" name="nav" class="nav-4"/> <a class="nav">音乐</a> <input type="radio" name="nav" class="nav-5"/> <a class="nav">其他</a> <section class="main"> </section> .nav-1:checked ~ .main{ transform: translateY(0%); } .nav-2:checked ~ .main{ transform: translateY(-100%); } .nav-3:checked ~ .main{ transform: translateY(-200%); } .nav-4:checked ~ .main{ transform: translateY(-300%); } .nav-5:checked ~ .main{ transform: translateY(-400%); }
|
本文代码地址链接