opera,safari,FF和IE之间的像素差异

时间:2012-09-04 18:12:05

标签: css firefox google-chrome opera

我有以下代码:

<div id="search">
    <form name="quick_find" action="index.php?main_page=advanced_search_result" method="get">
        <input type="text" name="keyword" size="35" class="rounded" style="width: 320px;" value="what are you looking for?" onfocus="if (this.value == 'what are you looking for?') this.value = '';" onblur="if (this.value == '') this.value = 'what are you looking for?';" />
        <input id="searchSubmit" type="submit" value="" />
    </form>
</div>

input.rounded {
border: 1px solid #ccc;
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
border-radius: 15px;
-moz-box-shadow: 2px 2px 3px #666;
-webkit-box-shadow: 2px 2px 3px #666;
box-shadow: 2px 2px 3px #666;
font-size: 18px;
padding: 2px 7px;
outline: 0;
-webkit-appearance: none;
behavior: url(PIE.htc);
z-index:10;
}

input.rounded:focus {
border-color: #339933;
}

#searchSubmit{
background: transparent url(button_search.gif) no-repeat;
width: 21px;
height: 21px;
border: none;
cursor: pointer;
margin-left: -23px; /* image is 20x20px, so leave little extra */
margin-top: 2px; /* leave some space from the top, so button looks in the middle */
z-index:1;
}

编辑:这是指向提交按钮的链接:http://traditionalirishgifts.com/button_search.gif

但我无法在FF,Opera,IE和Chrome中正确排列提交按钮。我已经尝试摆弄它,但我在我的智慧结束。

解决这个问题的唯一方法是做浏览器黑客攻击,然后我会在不同版本的浏览器之间遇到问题吗?

Opera

Safari

Chrome

Firefox

2 个答案:

答案 0 :(得分:1)

我简化了CSS以使其更易于管理并向您展示我的方法:

http://jsfiddle.net/G8wcP/

<div id="search">
    <form name="quick_find" action="index.php?main_page=advanced_search_result" method="get">
        <input type="text" name="keyword" size="35" class="rounded" value="what are you looking for?" onfocus="if (this.value == 'what are you looking for?') this.value = '';" onblur="if (this.value == '') this.value = 'what are you looking for?';" />
        <input id="searchSubmit" type="submit" value="" />
    </form>
</div>​

#search{ 
    width:207px;
    position:relative;
    display:block;
    border:1px solid #ccc;
}

input.rounded {
    display:block;
    width:180px;
    height:30px;
    border:0;
}

#searchSubmit{
    display:block;
    position:absolute;    
    left:180px;
    top:5px;   
    background: red;
    width: 20px;
    height: 20px;
    cursor: pointer;
}​

您采取的方法可能不会像您已经目睹的那样经得起跨浏览器。

基本上,用边框设置#search div的样式。相对定位输入(文本)元素,然后绝对定位提交元素。如果愿意,你可以相对定位两个元素。

答案 1 :(得分:0)

请参阅http://jsfiddle.net/KUWYY/1/

添加

input{
    vertical-align:middle;
}

并删除

#searchSubmit{
    margin-top: 2px;
}