欢迎加入QQ讨论群258996829
麦子学院 头像
苹果6袋
6
麦子学院

CSS3美化表单控件教程

发布时间:2016-07-13 15:42  回复:0  查看:2490   最后回复:2016-07-13 15:42  

表单的默认控件在不同的浏览器中的样式不同,用户体验很差。用CSS3可以实现表单控件的美化,可以提供更好的用户体验。不足之处就是浏览器的兼容性问题。所以我们很有必要学习CSS3 

 

.下拉控件

效果图:

CSS3美化表单控件教程

下拉控件的布局结构:

 

<div class="container">

        <div class="select">

            <p>所有选项</p>

            <ul>

                <li class="selected" data-value="所有选项">所有选项</li>

                <li data-value="Python">Python</li>

                <li data-value="Javascript">Javascript</li>

                <li data-value="Java">Java</li>

                <li data-value="Ruby">Ruby</li>

            </ul>

        </div>

    </div>

 

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

核心样式:

CSS3美化表单控件教程 View Code

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

 

$(function(){

    var selected  = $('.select > p');

    //控制列表显隐

    selected.on('click', function(event){

        $(this).parent('.select').toggleClass('on');

        event.stopPropagation();

    });

    //点击列表项,将列表项的值添加到p标签中

    $('.select li').on('click', function(event){

        var self = $(this);

        selected.text(self.data('value'));

    });

    //点击文档其他区域隐藏列表

    $(document).on('click', function(){

        $('.select').removeClass('on');

    });

});

 

二 美化单选框

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

 

/*用过label标签来模拟radio 的样式*/

.radio-block label{

    display: inline-block;

    position: relative;

    width: 28px;

    height: 28px;

    border: 1px solid #cccccc;

    background-color: #fff;

    border-radius: 28px;

    cursor: pointer;

    margin-right:10px;

}

 

input[type="radio"]{

    display: none;

}

.radio-block label:after{

    content: '';

    display: block;

    position: absolute;

    width: 20px;

    height: 20px;

    left: 4px;

    top: 4px;

    background-color: #28bd12;

    border-radius: 20px;

    /*通过scale属性来控制中心点*/

    -webkit-transform: scale(0);

    transform: scale(0);

}/*选中样式*/

input[type="radio"]:checked + label{

    background-color :#eee;

    -webkit-transition: background-color .3s ease-in;

    transition: background-color .3s ease-in;

}/*选中之后的样式*/

input[type="radio"]:checked + label:after{

    -webkit-transform: scale(1);

    transform: scale(1);

    -webkit-transition: transform .2s ease-in;

    transition: transform .2s ease-in;

}

 

最后效果:

CSS3美化表单控件教程

三 美化复选框

CSS3美化表单控件教程

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

 

.switch-block{

    width: 980px;

    padding: 3% 0;

    margin: 0 auto;

    text-align: center;

    background-color: #fc9;

}

.switch-block label{

    display: inline-block;

    width: 62px;

    height: 30px;

    background-color:#fafafa;

    border:1px solid #eee;

    border-radius: 16px;

    position: relative;

    margin-right: 10px;

    cursor: pointer;

    -webkit-transition: background .2s ease-in;

    transition :background .2s ease-in;

}

input[type="checkbox"]{

    display: none;

}

.switch-block label:after{

    content: '';

    position: absolute;

    width: 28px;

    height: 28px;

    border: 1px solid #eee;

    border-radius: 14px;

    left: 1px;

    background-color:#fff;

    -webkit-transition: left .2s ease-in;

    transition: left .2s ease-in;

}

.switch-block input[type="checkbox"]:checked + label{

    background-color:#3c6;

    -webkit-transition: background .2s ease-in;

    transition :background .2s ease-in;

}

.switch-block input[type="checkbox"]:checked + label:after{

    left: 32px;

    -webkit-transition: left .2s ease-in;

    transition: left .2s ease-in;

}

 

原文作者:薯条半价



您还未登录,请先登录

热门帖子

最新帖子