【问题标题】:Why do these checkbox-hacked radio buttons jump when they are selected?为什么这些被复选框破解的单选按钮在被选中时会跳转?
【发布时间】:2013-10-25 19:06:11
【问题描述】:

我正在使用复选框标签 hack 为单选按钮添加特殊的类似复选框的样式。 我有两种复选框样式,常规和 .angabe。

正如您在JSFiddle 中看到的那样,当 .angabe 无线电被 :checked 时,框会向上“跳跃”几个 px。试过几种不同的top: 位置都没有很好的效果。有什么建议吗?

这是标记:

<div class="angabe">
    <input type="radio" value="1" id="ohne">
    <label for="ohne">Mit Angabe</label>
    <input type="radio" value="0" id="mit">
    <label for="mit">Ohne Angabe</label>
</div>

<div class="row">
    <input type="radio" id="pregnancy[1]"><label for="pregnancy[1]">Pregnancy 1</label>
    <input type="radio" name="[pregnancy]" value="3" id="pregnancy[3]"><label for="pregnancy[3]">Pregnancy 2</label>
    <input type="radio" name="[pregnancy]" value="3" id="pregnancy[5]"><label for="pregnancy[5]">Pregnancy 3</label>
</div>

还有 CSS(去掉了长的渐变声明,但仍然很长):

body:nth-of-type(1) input[type="radio"], body:nth-of-type(1) .module.forms .indicationbox input { 
    display: none; 
}

body:nth-of-type(1) input[type="radio"] + label     {
    position:relative;
    margin-left:20px;
}

body:nth-of-type(1) input[type="radio"] + label:after  {
    position:absolute;
    left:4px;
    top:7px;

    content: "\00a0"; /* character: space */
    height: 10px;
    width: 10px;
    display: inline-block;
    font-size: 12px;
    line-height: 14px;
    text-align: center;

    -webkit-box-shadow: inset 1px 2px 3px rgba(50, 50, 50, 0.5);
    -moz-box-shadow:    inset 1px 2px 3px rgba(50, 50, 50, 0.5);
    box-shadow:         inset 1px 2px 3px rgba(50, 50, 50, 0.5);

    background:#c6e0b3;
} 

body:nth-of-type(1) input[type="radio"] + label:before  {
    left:0px;
    top:0px;
    content: "\00a0"; /* character: space */
    height: 18px;
    width: 18px;
    margin-right:5px;
    display: inline-block;
    font-size: 12px;
    line-height: 16px;
    padding:0px;
    text-align: center;
    background-color: #ebd196;
    -webkit-box-shadow: 1px 2px 3px rgba(50, 50, 50, 0.5);
    -moz-box-shadow:    1px 2px 3px rgba(50, 50, 50, 0.5);
    box-shadow:         1px 2px 3px rgba(50, 50, 50, 0.5);
}

body:nth-of-type(1) input[type="radio"]:checked + label:after {
    content: "\02714"; /* character: tick mark */
}


/** Special Angabe radio styles **/ 
body:nth-of-type(1) .angabe input[type="radio"]:checked + label:before {
    top: 0px;
    left:0px;
    height: 11px;
    width: 11px;
    border: 4px solid #324b23;
    background: rgba(255,255,255,0.4);
}

body:nth-of-type(1) .angabe input[type="radio"]:checked + label:after {
    top: 6px;
    left:6px;
    width:7px;
    height:7px;
    background: #324b23; 
}

body:nth-of-type(1) .angabe input[type="radio"]:checked + label:after {
    content: "\00a0"; /* character: space */
}

【问题讨论】:

    标签: html css checkbox


    【解决方案1】:

    试试这个改变:

    body:nth-of-type(1) input[type="checkbox"] + label:after, body:nth-of-type(1) input[type="radio"] + label:after {
    top: 3px;
    }
    body:nth-of-type(1) input[type="checkbox"] + label:before, body:nth-of-type(1) input[type="radio"] + label:before {
    position: relative;
    top: -4px;
    }
    body:nth-of-type(1) .angabe input[type="radio"]:checked + label:before {
    top: 1px;
    margin-right: 4px;
    }
    

    JSFIDDLE

    【讨论】:

      猜你喜欢
      • 2021-08-16
      • 1970-01-01
      • 2015-08-16
      • 2022-10-13
      • 1970-01-01
      • 2017-07-09
      • 2016-10-27
      • 2016-06-09
      • 1970-01-01
      相关资源
      最近更新 更多