明確なそれらのものを達成するためのCSSのHTML要素(ターン)

ます。http://dancewithnet.com/2009/09/06/css-opacity/より転載

はじめに:このプロジェクトは透明であり、この時間は、などのコーナー、プロジェクターを、丸められ、また、クロスブラウザでなければならない - 今、最も一般的なアプリケーションのサイトであると思われ、ちょうどグーグル、Baiduの様々な使用法を急いで、 CSSファイルへの直接のコピーではなく、慎重にちょうどこの記事を見て、その原則を学び、話す慎重にかなり良い、復刻再版!

CSS3は、定義されたドラフト{opacity:<length> | inherit;}透明性の要素を宣言するために、最新のブラウザでサポートされていますが、IEは非常に早い段階で特定のプライベートプロパティによってであるされているfilter達成するために、そのHTML要素の透明性はすでにユビキタス。まず、見てみましょうAレベルのブラウザでサポートされているプログラムの透明要素を達成するためのCSS

 

ブラウザ 最小
バージョン
スキーム
インターネットエクスプローラ 4.0 filter: alpha(opacity=xx);
5.5 filter: progid:DXImageTransform.Microsoft.Alpha(opacity=xx);
8.0 filter: "alpha(opacity=xx)";
filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=xx)";
-ms-filter: "alpha(opacity=xx)";
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";
Firefoxの(のGecko) 0.9(1.7) opacity
オペラ 9.0 opacity
サファリ(WebKitの) 1.2(125) opacity

実際にIE8に、-msフィルタエイリアスフィルタであり、両者の差干支値-msフィルタは、モノまたは二重引用符で囲む必要があり、フィルタは必要なく、IE8、フィルタの前のバージョン属性値は、モノまたは二重引用符を囲まれていない必要があります。

HTML要素は、透明性を達成するために、すなわち、それはレイアウトを持っている必要があり、そのような要素は、読み取り専用属性きhasLayoutを、その値はtrueです。詳細は以下のとおりです。

  1. bodyimgtabletrthtdそして、他の要素がhasLayoutされていますtrue
  2. type同様にtextbuttonfileまたはselectされていますinputhasLayouttrue
  3. セット{position:absolute}の要素のhasLayoutためのtrue
  4. セット{float:left|right}の要素のhasLayoutためのtrue
  5. セット{display:inline-block}の要素のhasLayoutためのtrue
  6. 設定する{height:xx}{width:xx}の要素は、以下の2つの特定の条件のいずれか、でなければならないhasLayout能力true
    1. IE8互換モードと標準の下で(厳密)モードIE8以前ブラウザ、display値であるblockように、demo3ができません。
    2. 要素Quirksモード(互換モード)。
  7. 設定し{zoom:xx}IE8の互換モードまたはIE8ブラウザの要素のそれは前にhasLayoutあるtrueが、標準モードでIE8がトリガされませんhasLayout
  8. セット{writing-mode:tb-rl}の要素ですhasLayouttrue
  9. 要素は、contentEditable属性値true
  10. IE8標準モードでの設定{display:block}要素がhasLayoutされているtrueとして、demo8

詳細についてはhasLayoutを見ることができますInternet Explorerの「HasLayout」の概要を探るレイアウトを持つオン

それ以上の後方互換性のプライベートプロパティのように混沌とした透明HTML要素のためのIEを見てIE透明要素の実現を許可することができるからなど、さまざまな方法持つインスタンスをdemo8するCSSの不透明度DEMO1をにもかかわらず、IEチームが達成することをお勧めします透明性のある方法は次のとおりです。

{
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
  opacity: .5;
}

現在の実装では、単純な使用するのが最適です。このようなdemo4にCSS不透明度として

{
    filter:alpha(opacity=30);
    opacity:.3;
}

実際には最も人気のあるJavaScriptフレームワークのセットスタイルの方法は、この方法では、とIEの設定のために適用されている{zoom:1}要素を許可するようhasLayouttrue、標準モードでIE8がされてzoom起動されないhasLayoutので、それらが設定されている使用hasLayoutするfalse要素を透明標準モードでIE8は、このバグの障害であるYUI(私はすでにYUIチームにこのバグを提出した、彼らはになります次のバージョンの修正、2.8.0の最新は2.9.0を楽しみにして、まだそこにあります)プロトタイプjQueryのMooToolsはそこの最新バージョンは、特定のIE8標準モードをご覧くださいdemo11にdemo9また、IE8でのさまざまな方法の透明なので、JavaScriptを使用しているのでHTML要素はさまざまな状況を考慮する必要があるため、透明性の値を取得、この問題へのYUI完璧なソリューション、jQueryのより少し思慮深いもう少しプロトタイプ、およびMooToolsは、直接であるバグ具体的には、IEでDEMO1 demo8を参照してくださいプレゼンテーション。この点から単語をランク付け、YUIまず、プロトタイプ第二、第三のjQueryの、MooToolsは底部によってフレーム4。

私は単に設定と機能は、不透明度を取得し、あなたは上記のフレームワークのバグの存在を避けることができます実現し、してくださいIE8標準モードでdemo12を参照してください

//は、問題を解決する、CSSの不透明度プロパティ関数を設定IE8の
VARの setOpacity = 関数(EL、I){
   IF(window.getComputedStyleが){ // 非居住のため 
    el.style.opacity = I; 
  } そう IF(文書。 documentElement.currentStyle){ // のIEのための
    IF(!el.currentStyle.hasLayout){ 
      el.style.zoom = 1 ; 
    } 
    IF!(el.currentStyle.hasLayout){ //はIE8ズームに有効ではない、それが再び設定されていますブロックインライン 
      el.style.display =「インラインブロック」; 
    } 
    試み{
       // 既存のフィルタかどうかをテスト
      // http://msdn.microsoft.com/en-us/library/ms532847%28VS.85%29.aspx 
      IF (el.filters){
         IF(el.filters( 'アルファ' )){ 
      el.filters( 'アルファ')不透明度= 100 * I. ; 
    } { 
      el.style.filter + = 'アルファ(不透明度=' * + I + 100 '); 
     } 
       } 
    } キャッチ(E){ 
      el.style.filter = 'アルファ(不透明度=' * + I + 100 ''); 
    } 
  } 
} 

// 関数CSS不透明度プロパティの値が取得
// http://developer.yahoel.com/yui/docs/YAHOO.util.Domから借用します#method_getStyle .htmlを
VARgetOpacity = 関数(EL){
   VARの値。
  もし(window.getComputedStyleが){  = el.style.opacity。
    もし(!の値){  = el.ownerDocument.defaultView.getComputedStyle(EL、NULL)[ '不透明' ]。
    } 
    戻り値。
  } そう であれば(document.documentElement.currentStyle){  = 100 試す { // エラーになりますがない場合はDXImageTransformの 
        値= el.filters [ 'DXImageTransform.Microsoft.Alpha' ] .opacity。
    } キャッチ(E){
         しようと { // そのドキュメントで確認して 
            値= el.filters( 'アルファ' ).opacity。
        } キャッチ(ERR){ 
        } 
    } 
    戻り値/ 100 
  } 
}

 


ます。https://www.cnblogs.com/JoannaQ/archive/2013/02/11/2909953.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33690963/article/details/93057785