解決ie6的瀏覽器css兼容問題

ie6上css碰到的坑

前兩天在給一個項目做東西的時候膊畴,碰到一個有意思的項目,是需要兼容ie6樊销,有一些碰到并且解決的問題饵蒂,給大家寫下來声诸,方便大家以后碰到類似的問題哈~

能幫到你的話,點個贊唄苹享?

1.important支持的不夠好

1.1為什么說不夠好双絮?

important某些情況下不能決定最終的樣式屬性。

1.2代碼得问!代碼6谂省!

我們通過對顏色的控制說明這一切~

<style type="text/css">
    div {
        width: 100px;
        height: 100px;
        border: aliceblue 2px solid;
    }

    .frist {
        background-color: red !important;
        background-color: blue;
    }

    .second {
        background-color: red !important;
    }

    .third {
        background-color: blue;
    }

    .second {
        background-color: blue;
    }
</style>
<div class="frist"></div>
<div class="second third"></div>
<div class="second"></div>

1.3 上圖宫纬!上圖7倌印!

谷歌 ie6
image
image

1.4我們發(fā)現(xiàn)了啥漓骚?

1.在同一個css代碼塊中的important沒那么強力蝌衔,會被后續(xù)的樣式覆蓋;
2.不過如果不再同一個css代碼塊中寫的話蝌蹂,你大爺終究是你大爺~
3.所以我們可以利用這個漏洞噩斟,寫ie6專有的樣式了(偽hack)(慎用,不如用ie6的hack寫法“_”)

2.margin雙倍問題

2.1出現(xiàn)原因

當(dāng)float和margin同時設(shè)置時孤个,就會出現(xiàn)margin雙倍的問題

2.2代碼代碼剃允!

<style type="text/css">
     /** 包裹區(qū) **/
    .area {
        width: 200px;
        height: 200px;
        background-color: #00FFFF;
    }

     /** 底部指示區(qū) **/
    .footer {
        width: 200px;
        height: 100px;
        background-color: royalblue;
    }

     /** 測試,margin 的代碼塊 **/
    .testMargin {
        width: 200px;
        height: 100px;
        float: left;
        margin: 50px;
        background-color: #0079CC;
    }

     /** 50px 指示區(qū) **/
    .checkLine {
        width: 50px;
        float: left;
        height: 100px;
        display: inline-block;
        background-color: #000;
    }

     /** 100px 指示區(qū) **/
    .checkLine2 {
        width: 50px;
        height: 100px;
        display: inline-block;
        background-color: teal;
    }
</style>
<div class="area">
    <div class="testMargin"></div>
</div>
<div class="footer">
    <!-- 50px 指示塊 -->
    <span class="checkLine"></span>
    <!-- 100px 指示塊 -->
    <span class="checkLine2"></span>
</div>

2.3來看看效果

谷歌 ie6
2.3.1.png
image

2.4.怎么解決齐鲤?

方案1:

將div設(shè)置display:inline

.testMargin {
    width: 200px;
    height: 100px;
    float: left;
    display: inline;
    margin: 50px;
    background-color: #0079CC;
}

方案2:

編寫ie6的hack

.testMargin {
    width:200px;
    height:100px;
    float:left;
    margin:50px;
    background-color:#0079CC;
    _margin: 50px 25px;
}

2.5解決結(jié)果

image

3.ie6下圖片的會帶有藍(lán)灰色背景色

3.1 css代碼

<style type="text/css">
    .pngImg {
        border: #FF0000 1px solid;
        width: 200px;
        height: 200px;
    }

    .jpgImg {
        border: black 1px solid;
        width: 200px;
        height: 200px;
    }

    .pngSpan {
        border: blue 1px solid;
        display: inline-block;
        width: 200px;
        height: 200px;
        background: transparent url(https://jhcan333.github.io/can-Share/image/ie6/404.png) no-repeat center top;
        background-size: cover;
        _filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="https://jhcan333.github.io/can-Share/image/ie6/404.png", sizingMethod='scale'); /*IE6有效*/
        _background: none; /*IE6有效*/
    }

    .jpgSpan {
        border: brown 1px solid;
        display: inline-block;
        width: 200px;
        height: 200px;
        background: transparent url(https://jhcan333.github.io/can-Share/image/ie6/404.jpg) no-repeat center top;
        background-size: contain;
        _filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="https://jhcan333.github.io/can-Share/image/ie6/404.jpg", sizingMethod='scale'); /*IE6有效*/
        _background: none; /*IE6有效*/
    }
</style>

3.2 html標(biāo)簽

<span class="pngSpan"></span>
<img class="pngImg" src="https://jhcan333.github.io/can-Share/image/ie6/404.png">
<span class="jpgSpan"></span>
<img class="jpgImg" src="https://jhcan333.github.io/can-Share/image/ie6/404.jpg">

3.3展示效果

1.谷歌瀏覽器

image

2.IE6瀏覽器

image

3.4怎么搞

IE6不支持png背景透明或半透明斥废,所以img標(biāo)簽中的圖片會帶有背景色,需要借助css濾鏡來實現(xiàn)

_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="https://jhcan333.github.io/can-Share/image/404.png",sizingMethod='scale');/*IE6有效*/
_background:none;/*IE6有效*/

在這里给郊,首先把background取消牡肉,然后使用css濾鏡來設(shè)置。其中屬性前面添加”_”下劃線淆九,來表示统锤,只在ie6上使用。

3.5現(xiàn)有的封裝好的方法

<script>
    function correctPNG() {
        var arVersion = navigator.appVersion.split("MSIE")
        var version = parseFloat(arVersion[1])
        if((version >= 5.5) && (document.body.filters)) {
            for(var j = 0; j < document.images.length; j++) {
                var img = document.images[j]
                var imgName = img.src.toUpperCase()
                if(imgName.substring(imgName.length - 3, imgName.length) == "PNG") {
                    var imgID = (img.id) ? "id='" + img.id + "' " : ""
                    var imgClass = (img.className) ? "class='" + img.className + "' " : ""
                    var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
                    var imgStyle = "display:inline-block;" + img.style.cssText
                    if(img.align == "left") imgStyle = "float:left;" + imgStyle
                    if(img.align == "right") imgStyle = "float:right;" + imgStyle
                    if(img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
                    var strNewHTML = "<span " + imgID + imgClass + imgTitle +
                        " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" +
                        "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" +
                        "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
                    img.outerHTML = strNewHTML
                    j = j - 1
                }
            }
        }
    }
    function addHandler (element, type, handler) {
        if (element.addEventListener) { // DOM2級 事件處理程序炭庙,this 指向元素本身跪另。按照添加的順序正向執(zhí)行
            element.addEventListener(type, handler, false);
        } else if (element.attachEvent) { // IE 事件處理程序,this 指向 window煤搜。按照添加的順序反向執(zhí)行
            element.attachEvent("on" + type, handler);
        } else { // DOM0級 事件處理程序。只能綁定一個事件處理程序
            element["on" + type] = handler;
        }
    }
    addHandler(window,'load',correctPNG)
</script>

將這個js引入項目就可以了

4.ie6下的display:inline-block異常問題

4.1表現(xiàn)

本是inline的html元素設(shè)置為inline-block后唧席,會具有inline-block的特性擦盾;
但本是block的html元素設(shè)置為inline-block后嘲驾,會出現(xiàn)不在同行排布的情況;

4.2上代碼

<style type="text/css">
    .span-inline-block {
        background-color: #7FFFD4;
        display: inline-block;
        width: 100px;
        height: 100px;
        margin: 5px;
    }

    .div-inline-block {
        background-color: #00ff00;
        display: inline-block;
        width: 100px;
        height: 100px;
        margin: 5px;
    }
</style>
<span class="span-inline-block"></span>
<span class="span-inline-block"></span>
<span class="span-inline-block"></span>
<span class="span-inline-block"></span>
<div class="div-inline-block"></div>
<div class="div-inline-block"></div>
<div class="div-inline-block"></div>
<div class="div-inline-block"></div>

4.3上圖

1.谷歌

image

2.ie6

image

4.4怎么搞迹卢?

1.若無特殊要求辽故,可以把div改為span
2.可以設(shè)置float屬性。如float為right時腐碱,效果如下
image

5.ie6下min-height和min-width失效

5.1上代碼

<style type="text/css">
    .min-div-class {
        min-width: 200px;
        min-height: 200px;
        background-color: #00FF00;
    }
</style>
<div class="min-div-class"></div>

5.2上對比圖

1.谷歌

image

2.ie6(沒錯誊垢,這是一張空白的圖)

image

5.3 怎嘛整?

直接設(shè)置width症见、height喂走。

6.ie6下的select寧死不從╥﹏╥...軟硬不吃!?(;′Д`?)

6.1what谋作?

本來我把select框的樣式給調(diào)的美美的芋肠,比如這樣

image

結(jié)果在ie6上亂了套,源碼我就不寫了遵蚜,直接寫demo

6.2 demo!我的代碼L亍!吭净!

<style type="text/css">
    .selectArea{
        position: relative;
        width:100px;
        height:24px;
        line-height:20px;
        padding-left: 5px;
        border:1px  solid #0079cc;
        overflow: hidden;
    }
    .testSelect{
        width:150px;
        line-height:30px;
        margin: -3px 0px;
        border:0px solid transparent;
        outline: none;
        background: none;
        appearance: none;
        -moz-appearance: none;
        -webkit-appearance:none;
    }
    .dropdown{
        position: absolute;
        right:5px;
        top:10px;
    }
</style>
<div class="selectArea">
    <select class="testSelect">
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <img class="dropdown" src="https://jhcan333.github.io/can-Share/image/ie6/arrow.png">
</div>

6.3各個瀏覽器展示

谷歌
image
ie8
image
ie6
image

6.4有木有發(fā)現(xiàn)ie6下select不聽話睡汹?

高度~邊框 ~ 完全不好整 ~

6.5如何解決?

Ie6上看起來整齊就好了寂殉,不要什么花里胡哨的東西了~hash走起囚巴! (T_T)

<style type="text/css">
    .selectArea {
        position: relative;
        width: 100px;
        height: 24px;
        line-height: 20px;
        padding-left: 5px;
        border: 1px solid #0079cc;
        overflow: hidden;
        _border: 0px #fff solid;
        _padding: 0px;
        _overflow: auto;
    }

    .testSelect {
        width: 150px;
        line-height: 30px;
        margin: -3px 0px;
        border: 0px solid transparent;
        outline: none;
        background: none;
        appearance: none;
        -moz-appearance: none;
        -webkit-appearance: none;
        _width: 100px;
        _margin: 0px;
    }

    .dropdown {
        position: absolute;
        right: 5px;
        top: 10px;
        _display: none;
    }
</style>

差不多是這個效果了吧~(原生的也還是很整齊的啊)

image
ie6上的css問題就先整理到這里了不撑,歡迎大家評論討論
備注:轉(zhuǎn)載注明出處
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末文兢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子焕檬,更是在濱河造成了極大的恐慌姆坚,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件实愚,死亡現(xiàn)場離奇詭異兼呵,居然都是意外死亡,警方通過查閱死者的電腦和手機腊敲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進(jìn)店門击喂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人碰辅,你說我怎么就攤上這事懂昂。” “怎么了没宾?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵凌彬,是天一觀的道長沸柔。 經(jīng)常有香客問我,道長铲敛,這世上最難降的妖魔是什么褐澎? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮伐蒋,結(jié)果婚禮上工三,老公的妹妹穿的比我還像新娘。我一直安慰自己先鱼,他們只是感情好俭正,可當(dāng)我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著型型,像睡著了一般段审。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闹蒜,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天寺枉,我揣著相機與錄音,去河邊找鬼绷落。 笑死姥闪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的砌烁。 我是一名探鬼主播筐喳,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼函喉!你這毒婦竟也來了避归?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤管呵,失蹤者是張志新(化名)和其女友劉穎梳毙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捐下,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡账锹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坷襟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奸柬。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖婴程,靈堂內(nèi)的尸體忽然破棺而出廓奕,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布懂从,位于F島的核電站授段,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏番甩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一届搁、第九天 我趴在偏房一處隱蔽的房頂上張望缘薛。 院中可真熱鬧,春花似錦卡睦、人聲如沸宴胧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恕齐。三九已至,卻和暖如春瞬逊,著一層夾襖步出監(jiān)牢的瞬間显歧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工确镊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留士骤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓蕾域,卻偏偏與公主長得像拷肌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旨巷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,442評論 2 359

推薦閱讀更多精彩內(nèi)容

  • ? JavaScript 3 1. HTML對象獲取問題 32. const問題 33. event.x與even...
    橫沖直撞666閱讀 3,192評論 0 7
  • 1. 默認(rèn)的內(nèi)外邊距不同 問題: 各個瀏覽器默認(rèn)的內(nèi)外邊距不同 解決: *{margin:0;padding:0;...
    jslxm閱讀 834評論 0 2
  • 一巨缘、如何調(diào)試 IE 瀏覽器? 在IE7以上的版本中可以通過按快捷鍵F12調(diào)出開發(fā)人員調(diào)試框采呐,如下圖IE7以上調(diào)試工...
    dengpan閱讀 550評論 0 2
  • 一若锁、如何調(diào)試 IE 瀏覽器? IE調(diào)試的一般方法(css): 使用高版本IE控制臺(對于IE7以上)IE11的開發(fā)...
    婷樓沐熙閱讀 557評論 0 6
  • 一懈万、問答部分: 1. 如何調(diào)試 IE 瀏覽器? 如果是IE7版本以上可以使用自帶的開發(fā)者工具拴清,按F12,即可打開:...
    小木子2016閱讀 534評論 0 0