【问题标题】:div background does not show properly in chromediv 背景在 chrome 中无法正确显示
【发布时间】:2012-08-21 01:44:55
【问题描述】:

我正在使用 float: left;和浮动:对;将两个 div 容器排成一行,左边一个是输入栏,右边是一个小背景图片(搜索按钮)。

它在 Opera 和 Firefox、MSIE 9.0+ 中显示良好,但是当我在 chrome 中查看它时,右侧容器的背景图像稍微偏离了位置(向下移动了几个像素)。

我将背景颜色设置为红色以突出显示问题: screenshot

index.php 取出:

<div class="header_inner_right">
    <form id="search_bar" method="post" action="" onsubmit="return checkSearchQuery();">
            <div class="left">
                <input id="search_field" name="q" type="text" value="Search riddim, artist, tune, label and producer" 
                    onfocus="searchFieldValue_onFocus();" onblur="searchFieldValue_onBlur();">
            </div>
            <div class="right">
                <input id="search_button" src="images/search_button.gif" type="submit" value="">
            </div>
    </form>
</div>

index_chrome.css(当 php 脚本检测到 chrome 浏览器时使用):

@charset "ISO-8859-1";

#search_bar {
    width: 450px;
    height: 37px;
    background-color: red
}

#search_bar #search_field {
    border: 0px;
    width: 365px;
    height: 37px;
    padding-left: 20px;
    padding-right: 20px;
    background-image: url(../images/search_field.gif);
    background-repeat: no-repeat;
    font-weight: bold;
    color: #c0c0c0;
    background-color: #ffffff
}

#search_bar #search_button {
    cursor: pointer;
    border: 0px;
    outline: none;
    height: 37px;
    width: 45px;
    background-image: url(../images/search_button.gif);
    background-repeat: no-repeat
}

如何修复并调整放大镜背景图像的y位置,使其与左侧div的背景图像完美对齐并完全隐藏右侧div容器的红色背景?

编辑:http://jsfiddle.net/YcraM/

抱歉,忘记了 JSFiddle!

【问题讨论】:

  • 你能提供一个jsfiddle 适当的资源,以便我们可以在我们的机器上编辑它吗?
  • 您可以使用display:inline-block css 将您的 div 放在一行中。
  • 刚刚添加了JSFiddle链接,对这个问题很好奇,但可能只是因为我缺乏跨浏览器css的经验。

标签: html css image google-chrome background


【解决方案1】:

这可能不是您想听到的答案,但几乎不可能让大多数输入元素在跨浏览器中看起来相同。我敦促您从div 元素中设计提交按钮。示例:

<div class="left">
    <input id="search_field" name="q" type="text" value="Search riddim, artist, tune, label and producer" 
        onfocus="searchFieldValue_onFocus();" onblur="searchFieldValue_onBlur();">
</div>
<div class="right">
    <div id="search_button"></div>
</div>

根据自己的喜好使用 css 为 div 设置样式 - 记得使用 :hover:active 伪类。然后,例如使用 jQuery,使其功能如下:

$('#search_button').on('click', function(e) {
    $(e.currentTarget).closest('form').submit();
});

【讨论】:

  • 好吧,我愿意接受任何解决方案,因为这个问题昨天真的让我很困惑。感谢您的回答,您使用 javascript 和 div-container 的解决方案就像一个魅力。现在剩下的唯一问题是,如果您在 MSIE7 或 MSIE8 中查看网站,我注意到在 search_field LIKE HERE 顶部会出现同样的问题。我可以使用 div 作为输入字段吗?
【解决方案2】:

我已经在 Chrome 21 和 FF 14 中对其进行了测试,似乎设置 line-height:0px; 可以解决问题。

div.right {
    float: right;
    line-height:0px;
}    
div.left {
    float: left;
    line-height:0px;
}

http://jsfiddle.net/YcraM/3/

我没有在其他浏览器中测试过,如果这不是最好的解决方案,请见谅。

【讨论】:

    【解决方案3】:

    您可以将float:right(或左侧)添加到#search_bar #search_button,也可以解决问题

    【讨论】:

    • 谢谢,我现在使用 float: 解决了所有问题:对于 search_field 和 search_button 以及 Codemonkey 建议使用带有 JS 提交而不是输入标签的 div。
    猜你喜欢
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    相关资源
    最近更新 更多