輸入框input和旁邊按鈕對齊的解決方案


問題:

最近在寫一個電商網站的靜態頁面練手,遇到了一個特別奇怪的現象,如下圖:

輸入框和旁邊的搜索框沒法對齊,於是乎百度解決方案,各種說法都有,但是沒有一個是自己認為切實可行的或者是說得比較簡單易懂的。

或許是我理解起來比較慢吧,呵呵。

下面直接進入正題之解決方案:

【本解決方案借鑒了百度首頁搜索框的寫法】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>調試</title>
    <style>
        span{float: left;display: inline-block;height: 40px;}
        input{border: 0 none;}
        .box{width: 300px;height: 300px;background-color: #808000;margin: 33px auto;padding: 30px ;}
        .span1{width: 150px;position: relative;}
        .input{height: 20px;width: 140px;padding: 10px 5px;position: absolute;top: 0;}
        .button{height: 40px;font: normal 18px/40px "微軟雅黑";}
    </style>
</head>
<body>
    <div class="box">
        <span class="span1">
            <input type="text" class="input">
        </span>
        <span class="span2">
            <input type="button" value="搜索"  class="button">
        </span>
    </div>
</body>
</html>

最后輸出的結果:

IE7

IE9和IE8

其他現代瀏覽器:

均可以達到較好的顯示效果。

【下面是代碼分析】

本方案的解決思路是,在input標簽外,套一個spaan標簽,作為input標簽的外殼,

即這種效果,此時的輸入框和搜索按鈕完全被包裹了在span標簽里面,這時候給span一個左浮動;那么不管在文檔流里面他們兩個是怎樣的相對關系,他們都會直直的懟到一起【因為這兩個span是一樣高的】,這樣即可以初步達到對齊的效果了。

然,由於神奇的IE7的存在,這種寫法還不夠。

此時在IE7中的顯示效果是這樣的,左邊的輸入框還是有一個極小的下沉。打開調試工具發現,布局下顯示:

竟然在margin的外側還有一個offset屬性,天啦嚕;以前沒接觸過這個屬性有木有,此時發揮神奇的想象力,將input的父級元素span1的position屬性強行設置為relative,然后將input的position屬性設置為absolute,並將input的top值設置為0,最終成功的解決了IE7下的顯示問題。~~

我想,類似與這樣的兼容性問題以后還會遇到很多很多,只有耐着性子去分析,其實還是可以解決的,其實兼容性的bug說白了也不算什么bug,而是不同瀏覽器在解析上的不同而已,多使用調試工具,看看到底是什么屬性出現了問題,對應的去解決,就可以了。哈哈,解決問題的思路還是比較重要的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM