form radio & checkbox解决方案

orm radio & checkbox 的对齐一直是个问题,不仅不同浏览器不同,不同的字体,不同的文字大小也会表现不一样,相信纠结了一大批人,如果没有好好整理总结下得出一个经验,相信每次碰到这个鬼东西都是比较纠结的,很头疼啊

重置form radio & checkbox

因为不同浏览器解析不一样,有些默认margin,有些是默认padding,还有ie6,7连margin和padding即使设置为0后,所占的空间还是比较大,所以还是有必须重置下,一下就能解决很多麻烦

Css Code

/*reset form elements*/
input, select, label {
    vertical-align:middle;
}
/*reset form radio & checkbox*/
.form-radio,.form-checkbox{
    margin:0 5px 0 0;/*与右侧文字的间距*/
    padding:0;
    width:13px;
    height:13px;
    vertical-align:middle;
    font:13px Helvetica, Arial, sans-serif;
}

demo 1 12px

举报类型:

垃圾广告色情虚假广告其他

demo 2 13px

举报类型:

垃圾广告色情虚假广告其他

demo 3 14px

举报类型:

垃圾广告色情虚假广告其他

demo 4 16px

举报类型:

垃圾广告色情虚假广告其他

Html Code

<form id="demo1" class="demo" name="form1" method="post" action="#">
    <div class="form-item">
        <label>举报类型:</label>
        <div class="form-special-wrap">
        <label><input type="radio" checked="checked" value="1" class="form-radio" name="reportType">垃圾广告</label><label><input type="radio" value="2" class="form-radio" name="reportType">色情</label><label><input type="radio" value="3" class="form-radio" name="reportType">虚假广告</label><label><input type="radio" value="4" class="form-radio" name="reportType">其他</label>
        </div>
    </div>
</form>

Css Code

.form-item label{
    font-weight:bold;
}
.form-special-wrap{
    display:inline-block;*display:inline;*zoom:1;
}
.form-special-wrap label{
    font-weight:normal;
}
#demo2{
    font-size:13px;
}
#demo3{
    font-size:14px;
}
#demo4{
    font-size:16px;
}

总:从上面四个实例我们可以看出对比的明显效果,在这里我们除了重置之外,只是设置了字体大小。各个浏览器都表现不一样,其中ie7表现最佳了,看起来是居中的哦呵呵。火狐默认的form-radio的line-height为15px(即字体大小加上3像素),在css中使用line-height不能覆盖这个默认的行高,而谷歌和ie8,9浏览器看起来是设置的line-height,可是根本不管用啊,这个还只有ie7表现良好呵呵,line-height不能解决这个对齐问题,那只好用vertical-align来试试了

实验性解决

这个鬼东西确实挺复杂的,所以我也不能确定这样就ok了,只能提出一个实验性的解决方案,第一步当然就是reset喽,第二步根据自己设置的字体大小来设置form-radio的vertical-align,最后对ie6进行对齐修正,打上bug。(这个修订版本是后加了,为了简单)

demo 1 12px 修正版

举报类型:

垃圾广告色情虚假广告其他

demo 2 13px 修正版

举报类型:

垃圾广告色情虚假广告其他

demo 3 14px 修正版

举报类型:

垃圾广告色情虚假广告其他

demo 4 16px 修正版

举报类型:

垃圾广告色情虚假广告其他

Css Code

#demo1fix .form-radio{
    vertical-align:-2px;
    *vertical-align:middle;/*ie7 ie6*/
    _vertical-align:3px;/*ie6*/
}
#demo2fix .form-radio{
    vertical-align:-2px;
    *vertical-align:middle;/*ie7 ie6*/
    _vertical-align:3px;/*ie6*/
}
#demo3fix .form-radio{
    vertical-align:-1px;
    *vertical-align:middle;/*ie7 ie6*/
    _vertical-align:2px;/*ie6*/
}
#demo4fix .form-radio{
    vertical-align:0;
    *vertical-align:middle;/*ie7 ie6*/
    _vertical-align:3px;/*ie6*/
}

form checkbox

checkbox和radio应该是亲兄弟了,既然搞定了radio,那么就借机搞定下checkbox吧,我们把上面的radio的类型改成checkbox,然后把class改为form-checkbox就可以了,这次我们给出一个对齐的最终demo

demo 5 16px

举报类型:

垃圾广告色情虚假广告其他

Css Code

#demo5{
    font-size:16px;
}
#demo5 .form-checkbox{
    vertical-align:0;/*根据不同的font-size设置不同的具体值*/
    *vertical-align:middle;/*ie7 ie6*/
    _vertical-align:3px;/*ie6 根据不同的font-size设置不同的具体值*/
}

相信看了上面的案例,大家都表示非常纠结吧,使用vertical来调那简直是折磨啊,不过这也是一种办法,能解决问题哈哈。下面我们介绍另一种方法,那就是float方法,当然如果为了好控制我们得标签可能得相对多那么一点。这个的思路就是把文字用span包裹起来,然后设置checkbox和span都float,然后再设置checkbox的margin-top就可以了,很是方便的,同理radio了。当然重置还是得要的啊

兴趣爱好:

音乐小说上网

Html Code

<form id="demo6" class="demo form-horizontal" name="demo6" method="post" action="#">
    <div class="form-item form-radio-checkbox-wrap">
        <label>兴趣爱好:</label>
        <div class="form-field">
            <label><input type="checkbox" checked="checked" value="1" class="form-checkbox" name=""><span>音乐</span></label>
            <label><input type="checkbox" value="2" class="form-checkbox" name=""><span>小说</span></label>
            <label><input type="checkbox" value="3" class="form-checkbox" name=""><span>上网</span></label>
        </div>
    </div>
 </form>

Css Code

#demo6{
    overflow:auto;*zoom:1;
}
.form-horizontal label{
    float: left;
    text-align: right;
    font-weight:bold;
    width:100px;
    font-size:16px;
    line-height:24px;
}
.form-horizontal .form-field{
    float:left;
}
.form-radio-checkbox-wrap .form-field label{
    text-align: left;
    width: auto;
    font-weight:normal;
    margin:0 10px 0 0;
    float:left;
    display:inline;
}
.form-radio-checkbox-wrap .form-checkbox,
.form-radio-checkbox-wrap span{
    float:left;
    display:inline;
}
.form-radio-checkbox-wrap .form-checkbox{
    margin-right:5px;
    margin-top:5px;
}
时间: 2024-08-02 09:52:31

form radio & checkbox解决方案的相关文章

:radio :checkbox

匹配所有单选按钮 示例 描述: 查找所有单选按钮 HTML 代码: <form> <input type="text" /> <input type="checkbox" /> <input type="radio" /> <input type="image" /> <input type="file" /> <input ty

【css--Form】字体为12px时表单中(radio,checkbox)与文字对齐

字体12px的对齐只是针对radio和checkbox CSS: <pre name="code" class="html">.form {font-size: 12px; line-height: 1.4} .form .txt {width: 180px; height: 25px; padding:3px; border:1px solid #dbdbdb; line-height: 25px; color:#999; vertical-align

JSP的3种方式实现radio ,checkBox,select的默认选择值

JSP的3种方式实现radio ,checkBox,select的默认选择值.以radiao 为例:第一种方式:在jsp中使用java 脚本,这个方法最直接,不过脚本太多,不容易维护<%String state = request.getParrameter("state" )%> <td width="27"><input type="radio" name="state" value=&quo

jquery 【radio checkbox】选择

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="Jquery/jquery-1.10.2.js" type="text/javascript"></script> <script type="text/javascript"> $(f

ExtJs2.0里Ext.form.Radio水平排列布局

ExtJs2.0好像不支持单选框组,因此用两个name相同单选框来实现单选框组 var radio1 = new Ext.form.Radio({boxLabel:'男',name:'sex',id:'yes',inputValue:'0',width : 150, height : 20}); var radio2 = new Ext.form.Radio({boxLabel:'女',name:'sex',id:'no',inputValue:'1', width : 150,height :

自定义radio/checkbox样式

<!doctype html> <html> <head> <meta charset="utf-8"> <title>自定义radio/checkbox样式</title> <style> *{ padding: 0; margin: 0; } input[type=checkbox]{ display: none; } /*未选中样式*/ .checkbox{ color: green; } /*选

微信小程序 - radio/checkbox自定义组件

自定义radio/checkbox组件,可根据自己要求自行修改 点击下载:示例 原文地址:https://www.cnblogs.com/cisum/p/10324607.html

angularjs-控制form及radio,checkbox,

#ng-value可以填写表达式 <!DOCTYPE html> <html>  <head>   <meta charset="UTF-8">   <title></title>   <script type="text/javascript" src='js/angular.min.js'> </script>   <style type="text/

Bootstrap关于表单控件(Radio,CheckBox)

表单控件(复选框checkbox和单选择按钮radio) Bootstrap框架中checkbox和radio有点特殊,Bootstrap针对他们做了一些特殊化处理,主要是checkbox和radio与label标签配合使用会出现一些小问题(最头痛的是对齐问题).使用Bootstrap框架,开发人员无需考虑太多,只需要按照下面的方法使用即可. <form role="form"> <div class="checkbox"> <labe