CSS中的相对定位在Safari和Firefox中完全不同?

时间:2012-10-22 17:02:48

标签: css forms positioning radio relative

我是CSS的新手,并且一直在尝试创建一个网页表单,其中单选按钮在文本字段旁边对齐。但是,在Firefox中,收音机盒看起来很好,但是当我在Safari中检查时,收音机盒位于文本字段的中间。

CSS看起来像这样:

   input#answers
{
     display: block;
    height: 31px;
    left: 87px;
    position: relative;
    top: 0px;
    width: 350px;
}

input[type="radio"]
{
    display: inline- block;
    height: 20px;
    left: 249px;
    position: relative;
    top: -30px;
    vertical-align: middle;
}

和这样的HTML:

    <form id="quizCreator" name="quizCreator" method="post" action="quiz.maker.php">
    <label><span><img src="images/quizcreatorText.ques.png" hspace="79px" vspace="70px" class="titles"  /></span>      <br />
      <input type="text" name="question" id="question" />
    </label>
    <label><img src="images/quizcreatorText.ans.png" hspace="79px" vspace="70px" class="titles" id="ans" />      <br />
      <input type="hidden" name="creator" value="myform" />
      <br />
      <input type="text" name="answer1" id="answers" />
    </label>
    <label>
      <input type="radio" name="radio" id="radio1" value="radio1" />
    </label>

    <label>
      <input type="text" name="answer2" id="answers" />
    </label>
    <label>
      <input type="radio" name="radio" id="radio3" value="radio2" />
    </label>

    <label>
      <input type="text" name="answer3" id="answers" />
  </label>  
    <label>
     <input name="radio" type="radio" class="radio" id="radio3" value="radio3" />
  </label>  

    <label>
      <input type="text" name="answer4" id="answers" />
    </label>
    <label>
      <input name="radio" type="radio" id="radio4" value="radio4" />
    </label>
    <span><input  type="image" src="images/quiznameText.next.png"  name="nextPage" id="nextPage"  class="nxtbutton" /></span>
</form>

我尝试过使用相对定位和边距,但是虽然它修复了Safari中的问题,但Firefox看起来却错了。有没有办法让它们都能按照我想要的一组代码工作? (那么MSIE呢?)

1 个答案:

答案 0 :(得分:0)

你不应该使用相对定位。

正确的结构是这样的(不确定你是否想要之前或之后的文本):

<div class="answers">
<ul>
    <li><label>your text</label><input type="radio" /></li>
    ...repeat...
</ul>
</div>

CSS:

.answers ul, .answers li {
    list-style-type:none;
    margin:0;
    padding:0;
}

.answers li {
    clear:both
}

.answers label {
    display:block;
    float:left;
    width:100px;
}

.answers input {
     display:block;
     float:left;
}