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-hant/n/277213.html
微信掃一掃
支付寶掃一掃