自己动手丰衣足食之表单美化checkbox和radio和下拉列表

 原文地址:http://www.cnblogs.com/xiaohuochai/p/5183699.html

下拉列表:http://download.csdn.net/detail/cometwo/9442420

前面的话

  由于一些系统原生的表单控件在各个浏览器中显示效果不一致,且无法设置某些关键CSS样式,为了保证表单在各浏览器中的兼容性,表单美化就是不得不做的一件事了

 

单选按钮

【实现效果】

【实现过程】

body{
    margin: 0;
    font: 16px/20px "宋体";
}
.box{
    width: 500px;
    height: 100px;
    line-height: 100px;
    margin: 0 auto;
    border: 1px solid black;
    text-align: center;
}
.box label{
    position:relative;
    padding-left: 20px;
}
.box input{
    visibility: hidden;
}
.box i{
    position: absolute;
    top: -2px;
    left: -2px;
    height: 19px;
    width: 19px;
    background: url('http://sandbox.runjs.cn/uploads/rs/26/ddzmgynp/radiobutton.gif') no-repeat -14px -18px;
}
.box label:hover{
    color: red;
}
.box label:hover i{
    background-position: -14px -118px;
}
.box label.selected i{
    background-position: -14px -218px;
}

<div class="box" id="box">
    选择一项游戏方式:
    <label for="xiu"><i></i>咻一咻</label>
    <input id="xiu" type="radio" value="咻一咻">
    <label for="yao"><i></i>摇一摇</label>
    <input id="yao" type="radio" value="摇一摇">
    <label for="niu"><i></i>扭一扭</label>
    <input id="niu" type="radio" value="扭一扭">
</div>
<script>
var oBox = document.getElementById('box');
var aLabel = oBox.getElementsByTagName('label');
for(var i = 0, leni = aLabel.length; i < leni; i++){
    aLabel[i].onclick = function(){
        for(var j = 0,lenj = aLabel.length; j < lenj; j++){
            aLabel[j].removeAttribute('class');
        }
        this.className = 'selected';
    }
}
</script>

 

多选按钮

【实现效果】

【实现过程】

body{
    margin: 0;
    font: 16px/20px "宋体";
}
.box{
    width: 600px;
    height: 100px;
    line-height: 100px;
    margin: 0 auto;
    border: 1px solid black;
    text-align: center;
}
.box label{
    position:relative;
    padding-left: 20px;
}
.box input{
    visibility: hidden;
}
.box i{
    position: absolute;
    top: -2px;
    left: -2px;
    height: 19px;
    width: 19px;
    background: url('http://sandbox.runjs.cn/uploads/rs/26/ddzmgynp/checkbox.gif') no-repeat -14px -18px;
}
.box label:hover{
    color: red;
}
.box label:hover i{
    background-position: -14px -118px;
}
.box label.selected i{
    background-position: -14px -218px;
}

<div class="box" id="box">
    选择日常手机交易方式(可多选):
    <label for="a"><i></i>支付宝</label>
    <input id="a" type="radio" value="支付宝">
    <label for="t"><i></i>微信</label>
    <input id="t" type="radio" value="微信">
    <label for="b"><i></i>百度钱包</label>
    <input id="b" type="radio" value="百度钱包">
</div>
<script>
var oBox = document.getElementById('box');
var aLabel = oBox.getElementsByTagName('label');
for(var i = 0, leni = aLabel.length; i < leni; i++){
    aLabel[i].onclick = function(){
        if(!this.className){
            this.className = 'selected';
        }else{
            this.removeAttribute('class');
        }
    }
}
</script>

 

下拉列表

【实现效果】

【实现过程】

body{
    margin: 0;
    font: 16px/20px "宋体";
}
ul{
    margin: 0;
    padding: 0;
    list-style: none;
}
.box{
    width: 300px;
    height: 40px;
    margin: 0 auto;
    border: 1px solid black;
}
.box .show{
    background-color: red;
    line-height: 30px;
    padding: 5px;
}
.box .show-area{
    color: white;
    vertical-align: middle;
}
.box .show-select{
    position: relative;
    display: inline-block;
    vertical-align: middle;
    width: 200px;
    height: 28px;
    border: 1px solid #999;
    background-color: white;
    text-indent: 20px;
    cursor: pointer;
}
.box .show-selectAdd{
    color: #999;
}
.box .show-select i{
    position: absolute;
    height: 0;
    width: 0;
    top: 0;
    right: 0;
    margin-top: 12px;
    margin-right: 5px;
    border: 5px solid transparent;
    border-top-color: black;
}
.box .show-selectAdd i{
    border: 5px solid transparent;
    border-bottom-color: black;
    margin-top: 8px;
}
.box .list{
    border: 1px solid #dfdfdf;
    border-top: none;
    display: none;
}
.box .list-in{
    height: 30px;
    line-height: 30px;
    text-indent: 74px;
    border-bottom: 1px solid #dfdfdf;
    cursor: pointer;
}
.box .list-in:hover{
    color: red;
}

<div class="box" id="box">
    <div class="show">
        <strong class="show-area">地址:</strong>
        <span class="show-select">朝阳区<i></i></span>
    </div>
    <ul class="list">
        <li class="list-in">朝阳区</li>
        <li class="list-in">海淀区</li>
        <li class="list-in">东城区</li>
        <li class="list-in">西城区</li>
        <li class="list-in">丰台区</li>
        <li class="list-in">石景山区</li>
    </ul>
</div>
<script>
var oBox = document.getElementById('box');
var oDiv = oBox.getElementsByTagName('div')[0];
var oShow = oDiv.getElementsByTagName('span')[0];
var oUl = oBox.getElementsByTagName('ul')[0];
var aLi = oUl.getElementsByTagName('li');
//简单思路
//[1]点击oDiv时,默认文字为黑色,三角向上,变成文字为#999,三角向下;简化为增加一个show-selectAdd类名;oUl从隐藏变成显示
oDiv.onclick = function(e){
    //阻止冒泡
    e = e || event;
    if(e.stopPropagation){
        e.stopPropagation();
    }else{
        e.cancelBubble = true;
    }
    oShow.className = 'show-select show-selectAdd';
    oUl.style.display = 'block';
}
//[2]点击oUl的li时,oUl从隐藏变成显示,文字和三角恢复到黑色和向上的默认样式;并且文字内容变成当前点击的li的内容
for(var i = 0,len=aLi.length; i < len;i++){
    aLi[i].onclick = function(){
        oShow.innerHTML = this.innerHTML + '<i></i>';
    }
}
//[3]点击box以外的其他部分时,oUl从隐藏变成显示,文字和三角恢复到黑色和向上的默认样式
document.onclick = function(){
    this.getElementsByTagName('span')[0].className = 'show-select';
    oUl.style.display = 'none';
}
</script>

好的代码像粥一样,都是用时间熬出来的

时间: 2024-11-02 20:12:30

自己动手丰衣足食之表单美化checkbox和radio和下拉列表的相关文章

jQuery表单美化插件jqTransform使用详解_jquery

jQuery Form表单美化插件jqTransform,非常实用的jQuery插件,自动把你整个Form表单进行美化处理,包括SELECT下拉框.文本框.单选.复选框.按钮等,当然不支持input file文件选择框,这个可以参照我们之前的input file选择框美化教程进行改造,在浏览器兼容方面,兼容 ie 6+, safari 2+, firefox 2+,插件还是很不错的,使用起来也很简单,推荐学习和使用. 使用方法: 1.加载jQuery和插件 <script type="te

基于Form Effect 的表单美化插件介绍

Form Effect - 表单美化插件          1)Formly这个基于jQuery的表单美化插件,并带有表单校验功能. http://thrivingkings.com/formly/                 2)jQuery Tags Input这个jQuery插件能够将一个简单的文本输入转换成一个漂亮的Tag列表. http://xoxco.com/clickable/jquery-tags-input 演示地址: http://xoxco.com/clickable/

jquery使用ul模拟select实现表单美化的方法_jquery

本文实例讲述了jquery使用ul模拟select实现表单美化的方法.分享给大家供大家参考.具体如下: 这里使用jquery实现ul模拟select,是jQuery插件实现的Select下拉菜单效果,类似的功能网上已经有一些了,每一款都代表了不同的编程思路,为学习提供一份参考. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-ul-select-table-codes/ 具体代码如下: <!DOCTYPE html PUBLIC &qu

JavaScript判断表单提交时哪个radio按钮被选中的方法_javascript技巧

本文实例讲述了JavaScript判断表单提交时哪个radio按钮被选中的方法.分享给大家供大家参考.具体分析如下: 这里的表单提交时通过JavaScript判断哪个radio按钮被选中了 <script type="text/javascript"> function findButton() { var myForm = document.forms.animalForm; var i; for(i=0;i<myForm.marsupial.length; i++

jqTransform表单美化插件

美化之前 美化之后 使用步骤 引入必要js和css文件 <!-- 引进必要文件 --> <link rel="stylesheet" type="text/css" href="jqtransformplugin/jqtransform.css" media="all"> <script type="text/javascript" src="requiered/jq

Web表单美化CSS框架Topcoat

Topcoat同样是一款简洁的Web表单构建应用,和Semantic UI.BootMetro等CSS框架不同的是,Topcoat主要用于构建美化的Web表单,包括提交按钮.输入框.单选框/复选框.滑动杆.搜索框等表单元素. Topcoat的特点 小巧.简单.易用 专注表单元素设计,每一个表单元素都非常精美 支持移动化,让这些表单元素在移动端同样有着不错的效果 Topcoat相关组件实例 按钮 以蓝色按钮为例,相关代码如下: HTML <button class="topcoat-butt

html表单美化插件iCheck自定义美化复选框和单选按钮例子

iCheck是一款美化复选框和单选按钮的jQuery查看,能高度定制自定义网页表单效果,具有多套可选皮肤替换方案,能兼容移动设备浏览器和桌面PC台式机浏览器效果,支持鼠标和键盘的操作,轻量级的插件,压缩版本只有1K大小,能支持jQuery和Zepto等JavaScript库. 注:iCheck v2.0 正在开发中,它有一个巨大的性能提升,很多新的选择和方法.这是一个候选版本状态,所以你可以试着用它.感到自由如果你找到工作不提交问题. 特征 相同的投入在不同的浏览器和设备- desktop an

基于Form Effect的表单美化插件

1)elastic jQuery plugin这个插件能够让Textareas随着输入内容的增加自动增长变化.   主页: http://www.unwrongest.com/projects/elastic              2)Linkselect jQuery插件Linkselect可以将下拉框转换成链接下拉显示,丰富下拉框的展示形式, 如自定义下拉框外观,下拉框选择元素风格等,效果图如下 主页: http://www.givainc.com/labs/linkselect_jqu

表单元素——checkbox样式美化

<meta charset="utf-8"> <style type="text/css"> form { border: 1px solid #ccc; padding: 20px; width: 300px; margin: 30px auto; } .wrapper { margin-bottom: 10px; } .box { display: inline-block; width: 20px; height: 20px; marg