【问题标题】:CSS - align image icon with select boxCSS - 将图像图标与选择框对齐
【发布时间】:2014-06-04 21:06:16
【问题描述】:

编辑
好的,我想我找到了解决方案,在http://www.student.oulu.fi/~laurirai/www/css/middle/ 上找到 我使用了绝对定位技术。
我希望它可以在 IE 中工作,因为我现在无法检查...
CSS 已更新。
END EDIT

我在选择框中有一个语言选择器。

在框的左侧,我想要一个带有活动语言的标志。更改语言时,这将使用 javascript 进行更改。

唯一剩下的就是使用 CSS 将标志与选择框水平对齐 - 跨浏览器。

CSS:

.combo {
    background: silver;
    margin: 10px 0;
    position:relative;
    height: 50px;
}

.combo span {
    position:absolute;top:0;bottom:0;margin:auto;
    display: block; float: left;
    width: 16px; height: 11px;
    background:url('flags.png') no-repeat;
}

.combo select {
    position:absolute;top:0;bottom:0;margin:auto;
    margin-left: 25px;
}

.combo span.flag-es {background-position: -16px 0}
.combo span.flag-fr {background-position: -32px 0}
.combo span.flag-gb {background-position: 0 -11px}
.combo span.flag-it {background-position: -16px -11px}
.combo span.flag-nl {background-position: -32px -11px}

HTML:

<div class="combo">
    <span class="flag-it"></span>
        <select>
            <option value="Italiano" selected>Italiano</option>
            <option value="English">English</option>
            <option value="Français">Français</option>
            <option value="Español">Español</option>
            <option value="Nederlands">Nederlands</option>
    </select>
</div>

【问题讨论】:

  • 你有flags.png的链接吗? 编辑:实际上,可能不需要它。
  • 这看起来怎么样? jsfiddle.net/Aarilight/c9V92 当然,红色将被您的版本中的标志替换。
  • 呃,你只是根据什么设置了一些边距?选择框在任何浏览器中的呈现方式都不同,因此您不能只设置 margin-top。

标签: css select icons


【解决方案1】:

由于您知道旗帜的尺寸,您可以将其放置在其容器高度的 50% 处,然后将其推回其自身高度的一半并留有负边距。您需要对标志使用绝对定位,并定位其容器(除了静态之外的任何内容 - 默认值)。然后,您只需将 select 元素推到右侧 - 标志上的右边距将不起作用,因为它是绝对定位的。

.combo {
    background: silver;
    margin: 10px 0;
    position: relative;
}

.combo span {
    width: 16px; height: 11px;
    background: white url('flags.png') no-repeat;
    position: absolute;
    top: 50%;
    margin-top: -5.5px;
}

.combo select {
    margin-left: 26px; // 16px + 10px
}

在此处查看工作示例:http://jsfiddle.net/9mM2s/1/ 请注意,在小提琴中,我已经注释掉了我认为多余的声明。

【讨论】:

  • 我看到您已经编辑了您的问题,以便在我撰写问题时添加与我的答案相同的解决方案。伟大的思想都一样 :) 干杯!
  • 干杯发呆。您的示例更加精确,因此我将使用它。
  • 顺便说一句,// is not a valid CSS comment。为了简洁起见,我在这个小提琴中使用了它。
猜你喜欢
  • 1970-01-01
  • 2018-11-12
  • 2014-02-05
  • 2016-06-19
  • 2023-03-14
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 2017-08-04
相关资源
最近更新 更多