Select 使用空格填充以固定宽度显示列<;选择>;

Select 使用空格填充以固定宽度显示列<;选择>;,select,drop-down-menu,whitespace,fixed-width,Select,Drop Down Menu,Whitespace,Fixed Width,我试图通过在文本中填充空格来创建下拉列表中列的效果,如本例所示: <select style="font-family: courier;"> <option value="1">[Aux1+1] [*] [Aux1+1] [@Tn=PP] </option> <option value="2">[Main] [*] [Main Apples Oranges] [@Fu=$p] </option> &l

我试图通过在文本中填充空格来创建下拉列表中列的效果,如本例所示:

<select style="font-family: courier;">
<option value="1">[Aux1+1] [*]  [Aux1+1]              [@Tn=PP] </option>
<option value="2">[Main]   [*]  [Main Apples Oranges] [@Fu=$p] </option>
<option value="3">[Main]   [*]  [Next NP]             [@Fu=n]  </option>
<option value="4">[Main]   [Dr] [Main]                [@Ty=$p] </option>
</select>

[Aux1+1][*][Aux1+1][@Tn=PP]
[Main][*][Main Apples橙子][@Fu=$p]
[Main][*][Next NP][@Fu=n]
[Main][Dr][Main][@Ty=$p]
根据这一点,这是可能的

问题是空格被压缩了,所以列不会对齐。FF、IE6和Chrome的结果相同


我缺少什么?

您需要使用
而不仅仅是普通空格

例如,您可以使用以下选项执行此操作:

<option value="2">[Main]&nbsp;&nbsp;&nbsp;[*]&nbsp;&nbsp;[Main Apples Oranges]&nbsp;[@Fu=$p] </option>
[Main][*][Main Apples橙子][@Fu=$p]

默认情况下,HTML中的空白是收缩的。使用CSS选择单空格字体(如链接到的示例中所示),并将空白设置为预格式化

option {
    font-family: monospace;
    white-space: pre;
}

扩展patmortech的答案,在asp.net中用
而不是
&;nbsp

//Pad the columns
string spaceDecode = Server.HtmlDecode("&nbsp;");
for (int i = 0; i < ddl.Items.Count; i++)
{
    ListItem item = ddl.Items[i];
    item.Text = item .Text.Replace(" ", spaceDecode);
}
//填充列
字符串spaceDecode=Server.HtmlDecode(“”);
对于(int i=0;i
这是否适用于选择选项?我在Firefox 3和IE7中试用过,但似乎没有。该死的,看起来你是对的。不过,使用不间断空格似乎是可行的(
),所以你可以接受@patmortech的建议。我怎么会错过呢?通用HTML规则适用。我实际上是在ASP.Net页面的codebehind中加载dropdownlist,有一个技巧可以正确呈现。代码如下。