栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Html/CSS > CSS教程

CSS3美化表单控件全集

CSS教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

 

下拉控件的布局结构:

XML/HTML Code复制内容到剪贴板
  1.   
  2.           
  3.             

    所有选项

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

    CSS Code复制内容到剪贴板
    1. .container .select{   
    2.     width: 300px;   
    3.     height: 40px;   
    4.     font-size: 14px;   
    5.     background-color:#fff;   
    6.     margin-left: auto;   
    7.     margin-right: auto;   
    8.     position: relative;   
    9. }   
    10.   
    11. .container .select:after{   
    12.     content: "";   
    13.     display: block;   
    14.     width: 10px;   
    15.     height: 10px;   
    16.     position: absolute;   
    17.     top: 11px;   
    18.     rightright: 12px;   
    19.     border-left: 1px solid #ccc;   
    20.     border-bottom: 1px 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. .container .select p{   
    28.     padding: 0 15px;   
    29.     line-height: 40px;   
    30.     cursor: pointer;   
    31. }   
    32.   
    33. .container .select ul{   
    34.     list-style: none;   
    35.     background-color: #fff;   
    36.     width: 100%;   
    37.     overflow-y: auto;   
    38.     position: absolute;   
    39.     top: 40px;   
    40.     left: 0;   
    41.     max-height:0;   
    42.     -webkit-transition: max-height .3s ease-in;   
    43.     transition: max-height .3s ease-in;   
    44. }   
    45. .container .select ul li{   
    46.     padding: 0 15px;   
    47.     line-height: 40px;   
    48.     cursor: pointer;   
    49. }   
    50.   
    51. .container .select ul li:hover{   
    52.     background-color: #e0e0e0;   
    53. }   
    54. .container .select ul li.selected{   
    55.     background-color: #39f;   
    56.     color: #fff;   
    57.   
    58. }   
    59.   
    60. @-webkit-keyframes slide-down{   
    61.     0%{   
    62.         -webkit-transform: scale(1, 0);   
    63.         transform: scale(1, 0);   
    64.     }   
    65.     25%{   
    66.         -webkit-transform: scale(1, 1.2);   
    67.         transform: scale(1, 1.2);   
    68.     }   
    69.     50%{   
    70.         -webkit-transform: scale(1, .85);   
    71.         transform: scale(1, .85);   
    72.     }   
    73.     75%{   
    74.         -webkit-transform: scale(1, 1.05);   
    75.         transform: scale(1, 1.05);   
    76.     }   
    77.     100%{   
    78.         -webkit-transform: scale(1, 1);   
    79.         transform: scale(1, 1);   
    80.     }   
    81. }   
    82. @keyframes slide-down{   
    83.     0%{   
    84.         -webkit-transform: scale(1, 0);   
    85.         transform: scale(1, 0);   
    86.     }   
    87.     25%{   
    88.         -webkit-transform: scale(1, 1.2);   
    89.         transform: scale(1, 1.2);   
    90.     }   
    91.     50%{   
    92.         -webkit-transform: scale(1, .85);   
    93.         transform: scale(1, .85);   
    94.     }   
    95.     75%{   
    96.         -webkit-transform: scale(1, 1.05);   
    97.         transform: scale(1, 1.05);   
    98.     }   
    99.     100%{   
    100.         -webkit-transform: scale(1, 1);   
    101.         transform: scale(1, 1);   
    102.     }   
    103. }   
    104. .container .select.on ul{   
    105.       
    106.     max-height: 300px;   
    107.     -webkit-transform-origin: 50% 0;   
    108.     transform-origin: 50% 0;   
    109.     -webkit-animation: slide-down .5s ease-in;   
    110.     animation: slide-down .5s ease-in;   
    111. }   
    112.   
    113. .container .select.on:after{   
    114.     -webkit-transform: rotate(-225deg);   
    115.     transform: rotate(-225deg);   
    116.     top: 18px;   
    117. }    
    118.   

    这里只是静态的样式,如果要实现“选择”这个过程,需要用到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.   
    2. .radio-block label{   
    3.     display: inline-block;   
    4.     position: relative;   
    5.     width: 28px;   
    6.     height: 28px;   
    7.     border: 1px solid #cccccc;   
    8.     background-color: #fff;   
    9.     border-radius: 28px;   
    10.     cursor: pointer;   
    11.     margin-right:10px;   
    12. }   
    13.   
    14. input[type="radio"]{   
    15.     display: none;   
    16. }   
    17. .radio-block label:after{   
    18.     content: '';   
    19.     display: block;   
    20.     position: absolute;   
    21.     width: 20px;   
    22.     height: 20px;   
    23.     left: 4px;   
    24.     top: 4px;   
    25.     background-color: #28bd12;   
    26.     border-radius: 20px;   
    27.       
    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.   

    最后效果:

    三.美化复选框

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

    CSS Code复制内容到剪贴板
    1. .switch-block{   
    2.     width: 980px;   
    3.     padding: 3% 0;   
    4.     margin: 0 auto;   
    5.     text-align: center;   
    6.     background-color: #fc9;   
    7. }   
    8. .switch-block label{   
    9.     display: inline-block;   
    10.     width: 62px;   
    11.     height: 30px;   
    12.     background-color:#fafafa;   
    13.     border:1px solid #eee;   
    14.     border-radius: 16px;   
    15.     position: relative;   
    16.     margin-right: 10px;   
    17.     cursor: pointer;   
    18.     -webkit-transition: background .2s ease-in;   
    19.     transition :background .2s ease-in;   
    20. }   
    21. input[type="checkbox"]{   
    22.     display: none;   
    23. }   
    24. .switch-block label:after{   
    25.     content: '';   
    26.     position: absolute;   
    27.     width: 28px;   
    28.     height: 28px;   
    29.     border: 1px solid #eee;   
    30.     border-radius: 14px;   
    31.     left: 1px;   
    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.     left: 32px;   
    43.     -webkit-transition: left .2s ease-in;   
    44.     transition: left .2s ease-in;   
    45. }   

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

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

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/217677.html

    CSS教程相关栏目本月热门文章

    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号