2014-02-28 82 views
3

我在一个网站上有几页,我需要让用户从颜色列表中选择一种颜色。该列表是从数据库加载的,并且可以有任意数量的颜色。控件的确切大小取决于页面。我知道有很棒的插件可用于选择颜色,但是我是基于设计构建的。 (阅读:我不能使用第三方控件)这是表的有效用法吗?有更好的选择吗?

我写了一个在这里使用表的工作解决方案(http://jsfiddle.net/Cfj4T/1/)。在这个例子主要目的是为了证明我可以改变整个颜色的宽度仅通过设置在容器上的宽度选择:

div.select-large { 
    width: 560px; 
} 

div.select-small { 
    width: 280px; 
} 

的问题是:这是一个错误使用表?有没有一种解决方案可以在“a”标签或div元素上使用css?那将是什么样子?

注意 - 该示例由角度生成并复制到JSFiddle中,因此不要太多地读入“a”标签中的额外属性。

所有选项在一个地方: - 如果有人想看到的答案到目前为止,我把他们都变成原来的jsfiddle(http://jsfiddle.net/Cfj4T/6/)。他们工作得很好,所以谢谢大家!

+0

这主要是基于观点的*和*在问题本身中缺乏问题的充分描述(没有给出HTML等)。 –

+0

@ JukkaK.Korpela我真诚地希望提高我的问题质量。也就是说,替换桌子的核心问题不是意见,但有多种选择。就代码而言 - 我提供了一个JSFiddle(IMHO),它比使用代码压倒读者容易一些。对于我所应该包含的内容,您有什么建议吗?至于代码或其他改进我可能拥有的/未来问题质量的方法? –

+0

从答案中可以看出,这是基于意见的:非常强烈的意见,很少或根本没有实际证据以技术理由支持他们。 –

回答

4

不要超过表格数据之外的任何使用<table>

原因是,现在你可以用现代CSS获得表格式布局的所有好处,而且你的文档在语义上是正确的,这对于屏幕阅读器等工具来说是很好的。

用您使用display: tabledisplay: table-cell的元素替换您的表格和表格单元格,您将得到与更好的标记相同的结果。

这里有一个例子的jsfiddle:http://jsfiddle.net/r9AgB/1/

如果你必须支持旧版本浏览器不display: table-cell工作,就取决于所需数量<a>元素设定一个百分比宽度。 CSS支持十进制百分比值(1.234%)。

+0

注意到我不是设计师,“table-cell”布局皱起了眉头,就像表一样? –

+0

不,表格式布局非常有用。它只是使用'

'这个标记是不正确的。各种'display:table'值被添加到CSS中,因为人们只会在HTML中使用表格来获取它们的布局样式。这是两全其美的:) – Nevett

+0

绝对最后一个问题 - 为什么在“a”的css中需要“宽度”? –

3

绝对不是。这是“用表格来布局”的经典案例,这是典型的更好的手段无知的标志 - 不,这是一件坏事,只是意味着你必须要学的东西;)

使用<span>(或<a>)改为display:inline-block。套用一个百分比宽度这些元素,所以你可以继续动态调整容器的宽度(百分比应(100/number_of_spans)可以很轻松地进行计算)

+0

您能否解释*为什么不能,所以这成为所有“我可以使用表格”问题的答案? – Archer

+1

编辑答案 - 是吗? –

+0

@NiettheDarkAbsol我有一个通过角度从数据库加载的数组。你是说计算指令中元素的宽度比表格更清晰(而且更好)?注意:我不是前端开发人员,所以我真的在这里寻求诚实的反馈! –