问题:
当点击标签时(对于通过将其定位在屏幕外而故意隐藏的单选按钮),浏览器会不期望地跳到页面顶部.
注意:这个问题在不同的浏览器中是不一致的 – 它出现在safari和chrome中,并且它不会出现在firefox或opera中
题:
示例代码:
•HTML
<div class="rdbut"> <label class="colour"> <input id="option-AVGANT1Y2PC" type="radio" name="Multi-licence" value="1 Year 2 PC|+23.99|0" checked="checked" /> <span>£24.99</span></label> </div> <div class="rdbut"> <label class="colour"> <input id="option-AVGANT2Y2PC" type="radio" name="Multi-licence" value="2 Year 2 PC|+34.00|0" checked="checked" /> <span>£35.00</span></label> </div>
•CSS
.rdbut { margin: 0px; } .rdbut label { float: left; width: 65px; margin: 4px; background-color: #EFEFEF; Box-shadow: 0px 1px 3px rgba(50,50,0.25); border: none; overflow: auto; display: inline; } .rdbut label span { text-align: center; font-size: 12px; padding: 3px 8px; display: block; } .rdbut label input { position: absolute; top: -9999px; left: -9999px; } .rdbut input:checked+span { background-color: #404040; color: #F7F7F7; } .rdbut .colour { background-color: #FF8E22; color: #ffffff; }
解决方法
有趣.我不确切地知道它为什么会这样做,但是固化不需要的行为很容易:交换CSS顶部和左侧的无线电输入值以获得可见性:隐藏.
像这样:
<!DOCTYPE html> <html> <head> <Meta charset="utf-8"> <title>Demo</title> <style> #content { width: 500px; } .rdbut { margin:0px; } .rdbut label { float:left; width:65px; margin:4px; background-color:#EFEFEF; border:none; overflow:auto; display:inline; } .rdbut label span { text-align:center; font-size: 12px; padding:3px 8px; display:block; } .rdbut label input { position:absolute; t/op: -9999px; l/eft: -9999px; visibility: hidden; } .rdbut input:checked + span { background-color:#404040; color:#F7F7F7; } .rdbut .colour { background-color:#FF8E22; color:#ffffff; } </style> </head> <body> <div id="content"> <p>"Lorem ipsum" goes here. </p> <div class="rdbut"> <label class="colour"><input id="option-AVGANT1Y2PC" type="radio" name="Multi-licence" value="1 Year 2 PC|+23.99|0" checked="checked" /> <span>£24.99</span></label> </div> <div class="rdbut"> <label class="colour"><input id="option-AVGANT2Y2PC" type="radio" name="Multi-licence" value="2 Year 2 PC|+34.00|0" checked="checked" /> <span>£35.00</span></label> </div> <div class="rdbut"> <label class="colour"><input id="option-AVGANT1Y2PC" type="radio" name="Multi-licence" value="1 Year 2 PC|+23.99|0" checked="checked" /> <span>£24.99</span></label> </div> </div> </body> </html>
在这里更新了JSFiddle:http://jsfiddle.net/XkQ7T/1/.
.顺便说一句,在每个单选按钮上设置检查是没有用的 – 实际上只检查了最后一个.它会使您的代码无效.此外,您需要围绕无线电输入组的表单标签.