CSS3美化表单控件全集


Posted in HTML / CSS onJune 29, 2016

表单的默认控件在不同的浏览器中的样式不同,用户体验很差。用CSS3可以实现表单控件的美化,可以提供更好的用户体验。不足之处就是浏览器的兼容性问题。
 
一.下拉控件
 
效果图:

 

CSS3美化表单控件全集

下拉控件的布局结构:

XML/HTML Code复制内容到剪贴板
  1. <div class="container">  
  2.         <div class="select">  
  3.             <p>所有选项</p>  
  4.             <ul>  
  5.                 <li class="selected" data-value="所有选项">所有选项</li>  
  6.                 <li data-value="Python">Python</li>  
  7.                 <li data-value="Javascript">Javascript</li>  
  8.                 <li data-value="Java">Java</li>  
  9.                 <li data-value="Ruby">Ruby</li>  
  10.             </ul>  
  11.         </div>  
  12.     </div>    
  13.   

ul用来模拟下拉列表,在实际的使用过程中,可以根据后台返回过来的数据动态生成。p元素用来渲染选中的选项。
 
核心样式:

CSS Code复制内容到剪贴板
  1. .container .select{   
  2.     width300px;   
  3.     height40px;   
  4.     font-size14px;   
  5.     background-color:#fff;   
  6.     margin-leftauto;   
  7.     margin-rightauto;   
  8.     positionrelative;   
  9. }   
  10. /*下拉箭头的样式*/  
  11. .container .select:after{   
  12.     content"";   
  13.     displayblock;   
  14.     width10px;   
  15.     height10px;   
  16.     positionabsolute;   
  17.     top11px;   
  18.     rightright12px;   
  19.     border-left1px solid #ccc;   
  20.     border-bottom1px solid #ccc;   
  21.     -webkit-transform: rotate(-45deg);   
  22.     transform: rotate(-45deg);   
  23.     -webkit-transition: transform .2s ease-in, top .2s ease-in;   
  24.     transition: transform .2s ease-in, top .2s ease-in;   
  25. }   
  26. /*  
  27.     被选中的列表项显示的区域  
  28. */  
  29. .container .select p{   
  30.     padding: 0 15px;   
  31.     line-height40px;   
  32.     cursorpointer;   
  33. }   
  34. /*  
  35.     下拉列表的样式  
  36.     默认高度为0  
  37. */  
  38. .container .select ul{   
  39.     list-stylenone;   
  40.     background-color#fff;   
  41.     width: 100%;   
  42.     overflow-y: auto;   
  43.     positionabsolute;   
  44.     top40px;   
  45.     left: 0;   
  46.     max-height:0;   
  47.     -webkit-transition: max-height .3s ease-in;   
  48.     transition: max-height .3s ease-in;   
  49. }   
  50. .container .select ul li{   
  51.     padding: 0 15px;   
  52.     line-height40px;   
  53.     cursorpointer;   
  54. }   
  55.   
  56. .container .select ul li:hover{   
  57.     background-color#e0e0e0;   
  58. }   
  59. .container .select ul li.selected{   
  60.     background-color#39f;   
  61.     color#fff;   
  62.   
  63. }   
  64. /*下拉控件动画*/  
  65. @-webkit-keyframes slide-down{   
  66.     0%{   
  67.         -webkit-transform: scale(1, 0);   
  68.         transform: scale(1, 0);   
  69.     }   
  70.     25%{   
  71.         -webkit-transform: scale(1, 1.2);   
  72.         transform: scale(1, 1.2);   
  73.     }   
  74.     50%{   
  75.         -webkit-transform: scale(1, .85);   
  76.         transform: scale(1, .85);   
  77.     }   
  78.     75%{   
  79.         -webkit-transform: scale(1, 1.05);   
  80.         transform: scale(1, 1.05);   
  81.     }   
  82.     100%{   
  83.         -webkit-transform: scale(1, 1);   
  84.         transform: scale(1, 1);   
  85.     }   
  86. }   
  87. @keyframes slide-down{   
  88.     0%{   
  89.         -webkit-transform: scale(1, 0);   
  90.         transform: scale(1, 0);   
  91.     }   
  92.     25%{   
  93.         -webkit-transform: scale(1, 1.2);   
  94.         transform: scale(1, 1.2);   
  95.     }   
  96.     50%{   
  97.         -webkit-transform: scale(1, .85);   
  98.         transform: scale(1, .85);   
  99.     }   
  100.     75%{   
  101.         -webkit-transform: scale(1, 1.05);   
  102.         transform: scale(1, 1.05);   
  103.     }   
  104.     100%{   
  105.         -webkit-transform: scale(1, 1);   
  106.         transform: scale(1, 1);   
  107.     }   
  108. }   
  109. .container .select.on ul{   
  110.     /*  
  111.         默认情况下,ul的高度为0,当点击控控件的时候,  
  112.         设置下拉列表的高度。  
  113.     */  
  114.     max-height300px;   
  115.     -webkit-transform-origin: 50% 0;   
  116.     transform-origin: 50% 0;   
  117.     -webkit-animation: slide-down .5s ease-in;   
  118.     animation: slide-down .5s ease-in;   
  119. }   
  120. /*下拉选项被选中后控制箭头的方向*/  
  121. .container .select.on:after{   
  122.     -webkit-transform: rotate(-225deg);   
  123.     transform: rotate(-225deg);   
  124.     top18px;   
  125. }    
  126.   

这里只是静态的样式,如果要实现“选择”这个过程,需要用到JavaScript来实现。

JavaScript Code复制内容到剪贴板
  1. $(function(){   
  2.     var selected  = $('.select > p');   
  3.     //控制列表显隐   
  4.     selected.on('click'function(event){   
  5.         $(this).parent('.select').toggleClass('on');   
  6.         event.stopPropagation();   
  7.     });   
  8.     //点击列表项,将列表项的值添加到p标签中   
  9.     $('.select li').on('click'function(event){   
  10.         var self = $(this);   
  11.         selected.text(self.data('value'));   
  12.     });   
  13.     //点击文档其他区域隐藏列表   
  14.     $(document).on('click'function(){   
  15.         $('.select').removeClass('on');   
  16.     });   
  17. });    
  18.   

二.美化单选框
 
lable标签可以通过for属性与单选框实现联动。我们利用这一特性来实现美化单选框,这也是原理所在。还有就是别忘了将真正的单选框(type="radio")隐藏掉。

CSS Code复制内容到剪贴板
  1. /*用过label标签来模拟radio 的样式*/  
  2. .radio-block label{   
  3.     displayinline-block;   
  4.     positionrelative;   
  5.     width28px;   
  6.     height28px;   
  7.     border1px solid #cccccc;   
  8.     background-color#fff;   
  9.     border-radius: 28px;   
  10.     cursorpointer;   
  11.     margin-right:10px;   
  12. }   
  13.   
  14. input[type="radio"]{   
  15.     displaynone;   
  16. }   
  17. .radio-block label:after{   
  18.     content'';   
  19.     displayblock;   
  20.     positionabsolute;   
  21.     width20px;   
  22.     height20px;   
  23.     left4px;   
  24.     top4px;   
  25.     background-color#28bd12;   
  26.     border-radius: 20px;   
  27.     /*通过scale属性来控制中心点*/  
  28.     -webkit-transform: scale(0);   
  29.     transform: scale(0);   
  30. }   
  31. /*选中样式*/  
  32. input[type="radio"]:checked + label{   
  33.     background-color :#eee;   
  34.     -webkit-transition: background-color .3s ease-in;   
  35.     transition: background-color .3s ease-in;   
  36. }   
  37. /*选中之后的样式*/  
  38. input[type="radio"]:checked + label:after{   
  39.     -webkit-transform: scale(1);   
  40.     transform: scale(1);   
  41.     -webkit-transition: transform .2s ease-in;   
  42.     transition: transform .2s ease-in;   
  43. }    
  44.   

最后效果:

CSS3美化表单控件全集

三.美化复选框

CSS3美化表单控件全集

原理和单选框的制作方式类似。在checked的时候该表圆形的left值和label的背景。

CSS Code复制内容到剪贴板
  1. .switch-block{   
  2.     width980px;   
  3.     padding: 3% 0;   
  4.     margin: 0 auto;   
  5.     text-aligncenter;   
  6.     background-color#fc9;   
  7. }   
  8. .switch-block label{   
  9.     displayinline-block;   
  10.     width62px;   
  11.     height30px;   
  12.     background-color:#fafafa;   
  13.     border:1px solid #eee;   
  14.     border-radius: 16px;   
  15.     positionrelative;   
  16.     margin-right10px;   
  17.     cursorpointer;   
  18.     -webkit-transition: background .2s ease-in;   
  19.     transition :background .2s ease-in;   
  20. }   
  21. input[type="checkbox"]{   
  22.     displaynone;   
  23. }   
  24. .switch-block label:after{   
  25.     content'';   
  26.     positionabsolute;   
  27.     width28px;   
  28.     height28px;   
  29.     border1px solid #eee;   
  30.     border-radius: 14px;   
  31.     left1px;   
  32.     background-color:#fff;   
  33.     -webkit-transition: left .2s ease-in;   
  34.     transition: left .2s ease-in;   
  35. }   
  36. .switch-block input[type="checkbox"]:checked + label{   
  37.     background-color:#3c6;   
  38.     -webkit-transition: background .2s ease-in;   
  39.     transition :background .2s ease-in;   
  40. }   
  41. .switch-block input[type="checkbox"]:checked + label:after{   
  42.     left32px;   
  43.     -webkit-transition: left .2s ease-in;   
  44.     transition: left .2s ease-in;   
  45. }   

本文链接:http://www.cnblogs.com/maple0x/p/5624401.html

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

HTML / CSS 相关文章推荐
CSS3 绘制BMW logo实的现代码
Apr 25 HTML / CSS
CSS+jQuery+PHP+MySQL实现的在线答题功能
Apr 25 HTML / CSS
CSS3近阶段篇之酷炫的3D旋转透视
Apr 28 HTML / CSS
详解CSS3选择器:nth-child和:nth-of-type之间的差异
Sep 18 HTML / CSS
CSS3实现红包抖动效果
Dec 23 HTML / CSS
20佳惊艳的HTML5应用程序示例分享
May 03 HTML / CSS
HTML中使用SVG与SVG预定义形状元素介绍
Jun 28 HTML / CSS
HTML5新增的8类INPUT输入类型介绍
Jul 06 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
Jan 20 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
Nov 18 HTML / CSS
网站性能延迟加载图像的五种技巧(小结)
Aug 13 HTML / CSS
CSS 一行代码实现头像与国旗的融合
Oct 24 HTML / CSS
CSS3+DIV实现漂亮的动画彩色标签
Jun 16 #HTML / CSS
超酷炫 CSS3垂直手风琴菜单
Jun 28 #HTML / CSS
CSS3中的注音对齐属性ruby-align用法指南
Jul 01 #HTML / CSS
CSS3中Transform动画属性用法详解
Jul 04 #HTML / CSS
CSS3 渐变(Gradients)之CSS3 线性渐变
Jul 08 #HTML / CSS
CSS3 渐变(Gradients)之CSS3 径向渐变
Jul 08 #HTML / CSS
CSS3弹性伸缩布局之box布局
Jul 12 #HTML / CSS
You might like
深入php多态的实现详解
2013/06/09 PHP
Yii中表单用法实例详解
2016/01/05 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
Intersport西班牙:在线体育商店
2019/11/06 全球购物
初中生自我评价
2014/02/01 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
运动会800米赞词
2015/07/22 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python