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 相关文章推荐
一款利用html5和css3实现的3D滚动特效的教程
Jan 04 HTML / CSS
CSS3制作Dropdown下拉菜单的方法
Jul 18 HTML / CSS
浅谈HTML5新增及移除的元素
Jun 27 HTML / CSS
HTML5的video标签的浏览器兼容性增强方案分享
May 19 HTML / CSS
详解使用canvas保存网页为pdf文件支持跨域
Nov 23 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
Jan 09 HTML / CSS
html5 canvas实现圆形时钟代码分享
Dec 25 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
Feb 19 HTML / CSS
借助HTML5 Canvas API制作一个简单的猜字游戏
Mar 25 HTML / CSS
使用phonegap克隆和删除联系人的实现方法
Mar 31 HTML / CSS
详解HTML5 data-* 自定义属性
Jan 24 HTML / CSS
前端H5 Video常见使用场景简介
Aug 21 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
PHPLog php 程序调试追踪工具
2009/09/09 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
使用PYTHON接收多播数据的代码
2012/03/01 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
Python内置模块turtle绘图详解
2017/12/09 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
商得四方公司面试题(gid+)
2014/04/30 面试题
C# Debug和Testing相关面试题
2015/10/25 面试题
Ajxa常见问题都有哪些
2014/03/26 面试题
智能电子应届生求职信
2013/11/10 职场文书
班会关于环保演讲稿
2013/12/29 职场文书
企业后勤岗位职责
2014/02/28 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
承诺保证书格式
2015/02/28 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python