使用CSS sprites在表单元素上定位背景图像

时间:2012-01-27 20:51:16

标签: html css markup css-sprites sprite

我正在尝试将放大镜作为输入元素的背景。放大镜图标是CSS精灵的一部分,如下所示:

enter image description here

为了定位它,我使用了这些属性:

#search-form input[type="text"] {
    background: url('../images/icons.png') no-repeat left center;
    background-position: 0px -30px;
    border: 1px solid #a9e2ff;
    padding: 3px;
    width: 200px;
    font-size: 1em;
    padding-left: 20px;
}

但背景仍然出现在输入框的顶部,而不是在垂直中间和左边对齐。我也尝试过:

background: url('../images/icons.png') no-repeat left middle;

但这也不起作用。

如果重要,虽然我猜它没有,这是我的表格标记:

<form action="/search" method="get" id="search-form">
    <input type="text" placeholder="Search..." name="s">
</form>

感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

您宣布background-position两次。第一个位于background短手属性的末尾,第二个位于下一行。 解决方案:拆分所有单个background规则,例如(另外,0 -24px是正确的值)

#search-form input[type="text"] {
    background-image: url('http://i.stack.imgur.com/MFpLm.png');
    background-repeat: no-repeat;
    background-position: 0 -24px;
    border: 1px solid #a9e2ff;
    padding: 3px;
    width: 200px;
    font-size: 1em;
    padding-left: 20px;
}

现在你可以面对你的设计的真正问题:如果它们之间没有足够的空间,其他精灵将在输入区域中可见。