CSS3美化表单控件

CSS3美化表单控件

2016-06-28 18:14 by 图书馆的牧羊人, 582 阅读, 9 评论, 收藏编辑

表单的默认控件在不同的浏览器中的样式不同,用户体验很差。用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元素用来渲染选中的选项。

核心样式:

.container .select{
    width: 300px;
    height: 40px;
    font-size: 14px;
    background-color:#fff;
    margin-left: auto;
    margin-right: auto;
    position: relative;
}
/*下拉箭头的样式*/
.container .select:after{
    content: "";
    display: block;
    width: 10px;
    height: 10px;
    position: absolute;
    top: 11px;
    right: 12px;
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
    -webkit-transform: rotate(-45deg);
    transform: rotate(-45deg);
    -webkit-transition: transform .2s ease-in, top .2s ease-in;
    transition: transform .2s ease-in, top .2s ease-in;
}
/*
    被选中的列表项显示的区域
*/
.container .select p{
    padding: 0 15px;
    line-height: 40px;
    cursor: pointer;
}
/*
    下拉列表的样式
    默认高度为0
*/
.container .select ul{
    list-style: none;
    background-color: #fff;
    width: 100%;
    overflow-y: auto;
    position: absolute;
    top: 40px;
    left: 0;
    max-height:0;
    -webkit-transition: max-height .3s ease-in;
    transition: max-height .3s ease-in;
}
.container .select ul li{
    padding: 0 15px;
    line-height: 40px;
    cursor: pointer;
}

.container .select ul li:hover{
    background-color: #e0e0e0;
}
.container .select ul li.selected{
    background-color: #39f;
    color: #fff;

}
/*下拉控件动画*/
@-webkit-keyframes slide-down{
    0%{
        -webkit-transform: scale(1, 0);
        transform: scale(1, 0);
    }
    25%{
        -webkit-transform: scale(1, 1.2);
        transform: scale(1, 1.2);
    }
    50%{
        -webkit-transform: scale(1, .85);
        transform: scale(1, .85);
    }
    75%{
        -webkit-transform: scale(1, 1.05);
        transform: scale(1, 1.05);
    }
    100%{
        -webkit-transform: scale(1, 1);
        transform: scale(1, 1);
    }
}
@keyframes slide-down{
    0%{
        -webkit-transform: scale(1, 0);
        transform: scale(1, 0);
    }
    25%{
        -webkit-transform: scale(1, 1.2);
        transform: scale(1, 1.2);
    }
    50%{
        -webkit-transform: scale(1, .85);
        transform: scale(1, .85);
    }
    75%{
        -webkit-transform: scale(1, 1.05);
        transform: scale(1, 1.05);
    }
    100%{
        -webkit-transform: scale(1, 1);
        transform: scale(1, 1);
    }
}
.container .select.on ul{
    /*
        默认情况下,ul的高度为0,当点击控控件的时候,
        设置下拉列表的高度。
    */
    max-height: 300px;
    -webkit-transform-origin: 50% 0;
    transform-origin: 50% 0;
    -webkit-animation: slide-down .5s ease-in;
    animation: slide-down .5s ease-in;
}
/*下拉选项被选中后控制箭头的方向*/
.container .select.on:after{
    -webkit-transform: rotate(-225deg);
    transform: rotate(-225deg);
    top: 18px;
}

这里只是静态的样式,如果要实现“选择”这个过程,需要用到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;
}

最后效果:

三 美化复选框

原理和单选框的制作方式类似。在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;
}
时间: 2024-10-08 10:44:07

CSS3美化表单控件的相关文章

html bottom html submit按钮表单控件与CSS美化(http://www.divcss5.com/html/h619.shtml)

html bottom按钮html submit按钮控件html表单按钮控件-html bottom与html submit按钮表单控件与CSS美化,介绍form input bottom按钮和html input submit按钮基本结构与用法,html按钮控件bottom和submit区别,同时DIVCSS5对html按钮美化布局. 一般提交按钮使用了html submit和html bottom两种按钮控件实现同时可将按钮设置CSS样式美化为时间设计图片按钮,首先DIVCSS5介绍html

表单控件 css的三中引入方式css选择器

1. 表单控件: 单选框 如果两个单选的name值一样,会产生互斥效果 <p> <!--单选框--> 男<input type="radio" name="sex" value="man" checked="checked"> 女<input type="radio" name="sex" value="woman">

vue2.0 之表单控件绑定

表单控件绑定v-model 1.文本 <template> <div> <input type="text" name="" v-model="myVal"><br/> {{ myVal }}<br/> <input type="text" name="" v-model.lazy="myVal1"><br/&

基于Extjs的web表单设计器 第二节——表单控件设计

这一节介绍表单设计器的常用控件的设计. 在前面两章节的附图中我已经给出了表单控件的两大分类:区域控件.常用控件.这里对每个分类以及分类所包含的控件的作用进行一一的介绍,因为它们很重要,是表单设计器的基本元素,更是核心组成部门. 一.区域控件,它主要包含三个类型的控件:卡片区域.表格区域.混合区域.这三个控件是我们的其他控件的容器或者叫包装器,相当于VS里面的各种Panel.它们很重要,每种区域控件的作用都不一样,能够包含的控件类型也不大一样,它们三个区域相互配合使用,可以为我们的表单提供强大的支

表单控件使用

表单控件使用 <span style="font-family:Microsoft YaHei;"><!--百度搜索:自信的尘埃 2014/12/29--> <html> <meta charset="UTF-8"/> <head>     <title>表单元素</title> </head> <body>     <form action="

Bootstrap关于表单控件(按扭)

按钮也是表单重要控件之一,制作按钮通常使用下面代码来实现:   ?  input[type=“submit”]   ?  input[type=“button”]   ?  input[type=“reset”]   ?  <button> 这里先让大家看看Bootstrap的按钮长成什么样: 表单控件的大小: 前面看到的表单控件都正常的大小.可以通过设置控件的height,line-height,padding和font-size等属性来实现控件的高度设置.不过Bootstrap框架还提供了

表单控件+下拉列表+文本域

一.表单控件 1.<input type="text" name="user"  size="20默认" /> 2.<input type="password" name="code"  /> 3.<input type="radio" name="sex[]" value="1" />+<input ty

Bootstrap_表单_表单控件

一.输入框input 单行输入框,常见的文本输入框,也就是input的type属性值为text. 在Bootstrap中使用input时也必须添加type类型,如果没有指定type类型,将无法得到正确的样式,因为Bootstrap框架都是通过input[type=“?”] (其中?号代表type类型,比如说text类型,对应的是input[type=“text”])的形式来定义样式的. 为了让控件在各种表单风格中样式不出错,需要添加类名“.form-control”. <form role=&quo

常用的一些表单控件

表单:用于显示 收集信息,并提交信息到服务器)1.表单元素 <form ></form> 主要属性:action: 当提交表单时,向何处发送表单数据,属性值为一个URL method:使用什么方式将表单数据发送到action属性所规定的页面(get post) enctype:表单数据进行编码的方式 name:表单名称2.表单控件: (1).<input>元素用于收集用户信息,为单标记. 主要属性: type:根据不同的type属性值,可以创建各种类型的输入字段 val