【问题标题】:How to apply CSS to a dropdown selection list?如何将 CSS 应用于下拉选择列表?
【发布时间】:2014-04-18 15:38:29
【问题描述】:

我目前正在使用我创建的表单。该表单具有三个输入,其中前两个是下拉列表,最后一个输入是普通文本字段。这是我的表单 HTML 代码:

<div id="form-main">
    <div id="form-div">

        <form class="form" id="form1">
            <p class="sendingfrom">
                <select name="sendingfrom">
                    <option value="africa">Africa</option>
                    <option value="USA">USA</option>
                    <option value="Australia">Fiat</option>
                    <option value="Fiji">Fiji</option>
                </select>
            </p>

            <p class="sendingto">
                <select name="sendingto">
                    <option value="africa">Africa</option>
                    <option value="USA">USA</option>
                    <option value="Australia">Fiat</option>
                    <option value="Fiji">Fiji</option>
                </select>
            </p>

            <p class="weight">
                <input name="weight" type="text" class="validate[required,custom[onlyLetter],length[0,100]] feedback-input" placeholder="Weight" id="weight" />
            </p>

        </form>
    </div>

</div>

我想通过使用 CSS 来自定义表单的外观。然而,似乎我的 CSS 编码并没有影响下拉框的视觉外观,除了“重量”文本框。这是我应用于表单的 CSS 代码:

#form-div {
    padding-left: 35px;
    padding-right: 35px;
    padding-top: 35px;
    padding-bottom: 50px;
    width: 500px;
    float: left;
    left: 471px;
    position: absolute;
    margin-top: 30px;
    margin-left: -260px;
    -moz-border-radius: 7px;
    -webkit-border-radius: 7px;
    top: -11px;
}

.feedback-input {
    color:#3c3c3c;
    font-family: Helvetica, Arial, sans-serif;
    font-weight:500;
    font-size: 18px;
    border-radius: 0;
    line-height: 22px;
    background-color: #efefef;
    padding: 13px 13px 13px 54px;
    margin-bottom: 10px;
    width:100%;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    -ms-box-sizing: border-box;
    box-sizing: border-box;
    border: 3px solid rgba(0,0,0,0);
}

.feedback-input:focus{
    background: #fff;
    box-shadow: 0;
    border: 3px solid #34495e;
    color: #34495e;
    outline: none;
    padding: 13px 13px 13px 54px;
}

.focused{
    color:#30aed6;
    border:#30aed6 solid 3px;
}

input:hover, textarea:hover, 
input:focus, textarea:focus {
    background-color:#bdc3c7;
}

我确信我在 CSS 编码上遗漏了一些东西,但我不确定如何纠正这个问题。我是 HTML 和 CSS 的新手,我正在努力学习如何进入这两个领域。如果这个问题看起来太微不足道,我深表歉意。如果有人可以帮助我纠正我似乎遇到的错误,将不胜感激。

【问题讨论】:

  • 您为 select 分配的类没有在您的 css 中定义.. 即使您在很多地方都这样做过。我想你不知道 css 中的类..
  • 我建议你先学习一些 CSS 的基础知识。作为新手,您可以访问 w3schools.com。

标签: html css forms list


【解决方案1】:

您需要通过 CSS 定位标签。

查看您的 CSS,您并没有为 select 元素这样做。

  1. 首先(并且很简单)将一个类应用于元素 (例如:class="my-select"

    在上下文中:

    <select name="sendingfrom" class="my-select">
        <option value="africa">Africa</option>
        <option value="USA">USA</option>
        <option value="Australia">Fiat</option>
        <option value="Fiji">Fiji</option>
    </select>
    
  2. 然后通过 CSS 定位它:

    .my-select {
        color: red;
        font-size: 14px;
    }
    

【讨论】:

  • 这没有任何作用:http://jsfiddle.net/w7amD/
  • @webeno 使用 Safari?使用 firefox(或 Internet Explorer)。
  • 我在 iMac 上使用 Chrome(注意:我不是 OP,只是一个好奇的 SO 用户);)
  • ...看起来您至少也必须设置边框才能使任何样式都能正常工作...
【解决方案2】:

设置select 元素的样式是一个棘手的问题。具体行为取决于您想要执行的操作,可能因浏览器而异。

我在整个测试过程中意识到的一件事是,您至少需要在 select 上设置边框属性(或者给它一个类或 id 并引用它),至少。

select {
    color: red;
    border: 1px solid #000;
}

但它仍然不会接受所有内容(主要是颜色、高度、宽度和边框颜色),并且不会应用于选择列表,或者至少不会应用于每个浏览器。

我建议你看看文章 Dropdown Default Styling 详细讨论这个问题。

【讨论】:

  • 这种样式会影响一个页面的所有select语句。
【解决方案3】:

DEMO

the pointer-events property.

在原生下拉箭头上覆盖一个元素,然后在其上禁止指针事件。

dev.W3.org

在 WebKit 和 Gecko 中运行良好。

html

    <!--[if !IE]> -->
    <div class="notIE">
        <!-- <![endif]-->
        <label />
        <select name="sendingfrom" class="my-select">
            <option value="africa">Africa</option>
            <option value="USA">USA</option>
            <option value="Australia">Fiat</option>
            <option value="Fiji">Fiji</option>
        </select>
        <!--[if !IE]> -->
    </div>
    <!-- <![endif]-->

css

select {
    display: inline-block;
    padding: 4px 3px 5px 5px;
    width: 150px;
    outline: none;
    color: blue;
    border: 1px solid #C8BFC4;
    border-radius: 4px;
    box-shadow: inset 1px 1px 2px #ddd8dc;
    background-color: #fff;
}

/*target non IE 9 and IE 10 as pointer events are not supported*/
     .notIE label:after {
        content:'';
        width: 23px;
        height: 23px;
        position: absolute;
        display: inline-block;
        top: 4px;
        right: 4px;
        background: url(http://www.jewellerynetasia.com/portals/0/Images/social-network-service/google-plus.png) no-repeat right center white;
        pointer-events: none;
    }

/*target IE 9 and IE 10:*/
 @media screen and (min-width:0\0) {
    .notIE label:after {
        display:none;
    }
}

border-radius is supported 如图所示。

source

【讨论】:

  • 您可能想要添加关于您做了什么以及为什么这样做的任何解释?顺便说一句,例如(OSX / Chrome),并非您的所有样式都适合我。 border-radius 根本没有应用...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 2016-08-03
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多