IE8兼容是每位webFrontender的痛點,這裡講介紹本人在兼容ie8常用到的一些兼容方法和屬性,乾貨馬上呈上:
1.不支持background-size屬性
background-size:100% 100%; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='your img url', sizingMethod='scale');
2.透明度兼容寫法
opacity=0.3; filter:alpha(opacity=30);
3.背景色透明度兼容
background-color: rgba(0,0,0,0); filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr=#00000000,endColorstr=#000000000);
r代表red,g代表green,b代表blue,a代表透明度。紅綠藍是三原色,所有顏色都可以由這三種顏色拼合而成。比如rgba(0,0,0,.5)就是透明度為0.5的黑色。現代瀏覽器是支持rgba的,但是在IE8等古董級瀏覽器中是不支持rgba的,IE8隻能勉強支持rgb()函數(即去掉了透明度,只能表示顏色)。

rgba和IE下filter數值轉換
4.placeholder兼容方法
這裡使用js方法來解決
$(function() { function isSupportPlaceholder() { var input = document.createElement('input'); return 'placeholder' in input; } function input(obj, value) { var $input = obj; var value = value; $input.attr({value:value}).css("color","#999999"); $input.focus(function() { if ($input.val() == value) { $(this).attr({value:""}).css("color","#333333"); } }).blur(function() { if ($input.val() == "") { $(this).attr({value:value}).css("color","#999999"); } }); } if(!isSupportPlaceholder()) { $('input').not("input[type='password']").each( function() { var value =$(this).attr("placeholder"); input($(this), value); } ); $('input[type="password"]').each( function() { var pwdField = $(this); var pwdVal = pwdField.attr('placeholder'); var pwdId = pwdField.attr('id'); // 重命名該input的id為原id後跟1 pwdField.after('<input id="' + pwdId +'1" type="text" value='+pwdVal+' autocomplete="off" />'); var pwdPlaceholder = $('#' + pwdId + '1'); pwdPlaceholder.show(); pwdField.hide(); pwdPlaceholder.focus(function(){ pwdPlaceholder.hide(); pwdField.show(); pwdField.focus(); }); pwdField.blur(function(){ if(pwdField.val() == '') { pwdPlaceholder.show(); pwdField.hide(); } }); } ); } });
結語
ie8的坑遠不止這些,一些常用的偽類,flex布局就別想用了,如果網站是B2C的性質,還是老老實實用最原始的布局吧。時間有限,就先寫這些最常用的兼容,本文將不定期更新,根據情況加入其它hack…
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/277213.html