为复选框列表设置样式的最佳方法是什么

Mar*_*rcS 21 css checkbox markup

我想要实现的是这样的布局

some label  [ ] checkbox 1
            [ ] checkbox 2
            [ ] checkbox 3
            [ ] checkbox 4

[]代表一个复选框

什么标记和CSS最适合用于此?我知道这对表很容易,我想知道这是否可能与divs

Mag*_*nar 27

我会使用这个标记:

<div id="checkboxes">
  <label>some label</label>
  <ul>
    <li><input type="checkbox"> checkbox 1</li>
    <li><input type="checkbox"> checkbox 2</li>
    <li><input type="checkbox"> checkbox 3</li>
    <li><input type="checkbox"> checkbox 4</li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

和这些风格:

#checkboxes label {
  float: left;
}
#checkboxes ul {
  margin: 0;
  list-style: none;
  float: left;
}
Run Code Online (Sandbox Code Playgroud)

表不是邪恶的,但它们经常被用于错误的原因.它们会产生更大的html文件(对性能和带宽不利),通常具有更混乱的html结构(对可维护性不利).至于表格数据,它们非常好.

  • @MarcS:看到你的答案是正确的标记.将`div`替换为`fieldset`,将`label`替换为`legend`并在所有`input`s中添加一些`label`.`legend`(或者更确切地说:`fieldset`)定义了一对一的关系,`lable`定义了一对一的关系. (2认同)

You*_*You 21

这个非常语义的HTML:

<fieldset class="checkboxgroup">
    <p>some label</p>
    <label><input type="checkbox"> checkbox 1</label>
    <label><input type="checkbox"> checkbox 2</label>
    <label><input type="checkbox"> checkbox 3</label>
    <label><input type="checkbox"> checkbox 4</label>
</fieldset>
Run Code Online (Sandbox Code Playgroud)

这个相当简单的CSS:

.checkboxgroup{
    width: 20em;
    overflow: auto;
}
.checkboxgroup p{
    width: 7em;
    text-align: right;
}
.checkboxgroup label{
    width: 12em;
    float: right;
}
Run Code Online (Sandbox Code Playgroud)

根据需要调整宽度.

这样做的正确方法实际上是p用一个legend元素替换我的HTML中的元素,但如果没有一些非常丑陋的CSS,这将不会按照你想要的方式设置样式.

  • +1使用`fieldset`并提及`legend`."不要使用表格进行布局"并不意味着"使用除表格之外的任何元素",:). (3认同)

Sea*_*ght 5

<div style="float: left;">
    some label
</div>

<div style="float: left;">
    <input type="checkbox" />&#160;checkbox 1<br />
    <input type="checkbox" />&#160;checkbox 2<br />
    <input type="checkbox" />&#160;checkbox 3<br />
    <input type="checkbox" />&#160;checkbox 4
</div>
Run Code Online (Sandbox Code Playgroud)


Erv*_*Erv 5

在我看来,它比表格更具有某种列表(但你没有列出整个图片).对我而言,它看起来像一个定义列表,所以我会使用它(如果不是我会坚持无序列表示例Magnar解决方案,添加标签.

定义列表版本:

 <dl id="checkboxes">
        <dt>same label or term</dt>
        <dd><input type="checkbox" id="chk1" /><label for="chk1">checkbox 1</label></dd>
        <dd><input type="checkbox" id="chk2" /><label for="chk2">checkbox 2</label></dd>
        <dd><input type="checkbox" id="chk3" /><label for="chk3">checkbox 3</label></dd>
        <dd><input type="checkbox" id="chk4" /><label for="chk4">checkbox 4</label></dd>
  </dl>
Run Code Online (Sandbox Code Playgroud)