【问题标题】:How can I change the font-size of a select option? [duplicate]如何更改选择选项的字体大小? [复制]
【发布时间】:2013-06-29 11:43:09
【问题描述】:

我正在尝试设置选择选项下拉列表的样式。是否可以使选项的字体大小与默认值不同? 例如默认:

-- Select Country --  

尺寸为 7pt;和选项之一,

Georgia

尺寸为 13pt。

这是我的下拉列表:

.select_join {
  width: 170px;
  height: 28px;
  overflow: hidden;
  background: url('http://s24.postimg.org/lyhytocf5/dropdown.png') no-repeat right #FEFEFE;
  border: #FEFEFE 1px solid;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  -webkit-box-shadow: inset 0px 0px 10px 1px #FEFEFE;
  box-shadow: inset 0px 0px 10px 1px #FEFEFE;
}
.select_join select {
  background: transparent;
  width: 170px;
  font-size:7pt;
  color:grey;
  border: 0;
  border-radius: 0;
  height: 28px;
  -webkit-appearance: none;
}
.select_join select:focus {
  outline: none;
}
<div style="background-color:pink;height:150px; text-align:center;">
  <br/>
  <div class="select_join" style="margin-left:15px">
    <select name="txtCountry">
      <option>-- Select Country --</option>
      <option value="1">Georgia</option>
      <option value="2">Afghanistan</option>
    </select>
  </div>
</div>

另见我的demo on JSFiddle

不幸的是,它仅适用于 Firefox。难道是其他浏览器不支持&lt;option&gt;元素的样式?

我测试过的浏览器:

  • Chrome:版本 27.0.1453.116 m
  • IE:10
  • 火狐:22.0

【问题讨论】:

    标签: css html-select font-size


    【解决方案1】:

    我们需要一个技巧......

    正常的选择下拉内容不接受样式。但。如果标签中有“大小”参数,则几乎所有 CSS 都会适用。考虑到这一点,我创建了一个实际上等同于普通选择标签的小提琴,而且可以像视觉语言中的 ComboBox 一样手动编辑该值(除非您将 readonly 放在输入标签中) .

    一个简化的例子:

    <style>
    
        /* only these 2 lines are truly required */
        .stylish span {position:relative;}
        .stylish select {position:absolute;left:0px;display:none}
    
        /* now you can style the hell out of them */
        .stylish input    { ... }
        .stylish select   { ... }
        .stylish option   { ... }
        .stylish optgroup { ... }
    
    </style>
    ...
    <div class="stylish">
        <label> Choose your superhero: </label>
        <span>
            <input onclick="$(this).closest('div').find('select').slideToggle(110)">
            <br>
            <select size=15 onclick="$(this).hide().closest('div').find('input').val($(this).find('option:selected').text());">
    
                <optgroup label="Fantasy"></optgroup>
                <option value="gandalf">Gandalf</option>
                <option value="harry">Harry Potter</option>
                <option value="jon">Jon Snow</option>
    
                <optgroup label="Comics"></optgroup>
                <option value="tony">Tony Stark</option>
                <option value="steve">Steven Rogers</option>
                <option value="natasha">Natasha Romanova</option>
    
            </select>
        </span>
        <!--
    
            For the sake of simplicity, I used jQuery here.
            Today it's easy to do the same without it, now
            that we have querySelector(), closest(), etc.
    
        -->
    </div>
    

    一个活生生的例子:

    https://jsfiddle.net/7ac9us70/1052/

    注 1:抱歉,渐变和所有花哨的东西,不,它们不是必需的,是的,我在炫耀,我知道,标签 onlyhuman,标签 notproud。

    注意 2:那些&lt;optgroup&gt; 标签并没有像通常那样封装属于它们的选项;这是故意的。这对样式更好(礼貌的方式会少很多样式),是的,这很容易,并且适用于每个浏览器。

    【讨论】:

    • 太棒了!你知道为什么 size=15 是必需的吗?
    • 它不一定是 15,重要的是它有一个大小 - 这就是使它呈现为列表框的原因,而不是带有按钮的单行字段。
    • 是的,对不起,应该更清楚。使它呈现为列表框的 size 属性是什么?这在任何地方都有记录吗?它是一个 CSS 错误吗? (这意味着它可能会在未来得到修复,依赖它的东西会坏掉)。它只是大小属性,还是其他一些属性(宽度或高度等)也可以工作? (我自己可能很容易通过玩小提琴找到最后一个问题的答案)
    • 不,这是 SELECT 的一个有据可查的特性,它绝对不会消失。我不知道为什么这些人会这样实现它 - 大小意味着列表在显示时应该有多高,但仅仅是“大小”的存在使其默认显示。见这里:developer.mozilla.org/en/docs/Web/HTML/Element/select
    【解决方案2】:

    将 CSS 类添加到 &lt;option&gt; 标记以设置样式:http://jsfiddle.net/Ahreu/

    目前 WebKit 浏览器不支持这种行为,因为它在规范中没有定义。看看这个:How to style a select tag's option element?

    【讨论】:

    • 哦,它不能在 chrome 上运行,对吧?
    • 你是对的,谷歌浏览器对此有一个奇怪的行为。检查我更新的答案。
    • 它可能不支持字体大小调整:(
    • 是的,但你的解决方案是在 firefox 上工作 :) 谢谢
    【解决方案3】:

    告诉选项元素是 13pt

    select option{
        font-size: 13pt;
    }
    

    然后 first 选项元素为 7pt

    select option:first-child {
        font-size: 7pt;
    }
    

    运行演示:http://jsfiddle.net/VggvD/1/

    【讨论】:

    • 谷歌浏览器不支持
    • 您无法在 Google Chrome (AFAIK) 中执行此操作
    • @Atropo 我认为这可能不是一个错误,而是一个想要的决定,可能是为了防止用户写出丑陋的东西:让我们考虑一下每个元素的高度/字体不同的选择,它会是一场噩梦……
    【解决方案4】:

    试试这个

    http://jsfiddle.net/VggvD/2/

    CSS 添加你的代码

    .select_join option{
        font-size:13px;
    }
    

    【讨论】:

    • 你的小提琴表明这不起作用......
    • 谢谢,它正在工作:)
    【解决方案5】:

    检查这个小提琴,

    我刚刚编辑了上面的小提琴,它的工作

    http://jsfiddle.net/narensrinivasans/FpNxn/1/

    .selectDefault, .selectDiv option
    {
        font-family:arial;
        font-size:12px;
    }
    

    【讨论】:

    • 请解释一下这个答案。
    【解决方案6】:
    select[value="value"]{
       background-color: red;
       padding: 3px;
       font-weight:bold;
    }
    

    【讨论】:

    • 请在您的答案中添加一些描述,为什么 OP 应该使用它以及 OP 代码中的问题是什么
    猜你喜欢
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多