2017-02-26 15 views
0

CSSのプロパティposition: fixedを持つすべての要素が、要素のコンテナがCSSのtransformプロパティで装飾されている場合、期待どおりに機能しないという事実を誰もが知っていると思います。変形の代替案:CSSのscale()?

私はこの質問に対する具体的な解決策を見つけるために多くのスレッドを通過しました。私は、自体にtransform: scale()プロパティを適用しているので、私はposition:fixedが必要な私のアプリケーションにいくつかの要素があることを意味します。

この問題を解決するためのトリックを見つけることができなかったので、代わりにCSSのtransform: scale()プロパティに代わるものがあるかどうかを尋ねます。 zoomは、まだ多くのブラウザ(特にFirefox)と互換性がないため、答えはありません。

私は両者を動作させるためにどのような変更を行うべきですか?

angular.element($window).on('resize load', function() { 
    var isFirefox = navigator.userAgent.indexOf("Firefox") != -1; 
    var oWidth = angular.element($window).width(); 
    var oHeight = angular.element($window).height(); 
    console.log(oWidth + " " + oHeight); 
    if (oWidth >= 1903) 
     applyCss(100, 100, 1, isFirefox); 
    if (oWidth < 1903 && oWidth > 1441) 
     applyCss(125, 125, 0.8, isFirefox); 
    if (oWidth <= 1441 && oWidth > 1268) 
     applyCss(149.3, 149.3, 0.67, isFirefox); 
    if (oWidth <= 1268) 
     applyCss(166.7, 166.7, 0.6, isFirefox); 
}); 

function applyCss(width, height, scale, isFirefox) { 
    var body = angular.element('body'); 
    body.css({ 
     '-moz-transform' : 'scale(' + scale + ')', 
     '-moz-transform-origin' : 'left top', 
     '-webkit-transform' : 'scale(' + scale + ')', 
     '-webkit-transform-origin' : 'left top', 
     'transform' : 'scale(' + scale + ')', 
     'transform-origin' : 'left top', 
     'width' : width + '%', 
     'height' : height + '%', 
    }); 
    if (isFirefox) //body's position absolute in case of Firefox 
     body.css({ 
      'position' : 'absolute' 
     }); 
} 

スケーリングを達成するために使用しているコード。

+0

私はあなたが体のスケールを変換する理由を尋ねることがありますか?これは、適用される変換を伴うコンテナdiv内のbody要素の内容をラップするのに役立ちます。固定された位置決めされた要素は、本体内に直接配置することができ、それによって変形に影響されない。 – BazzyTK

+0

私はanglejsとルーティングを使用しています。とにかく、その容器の中には、固定された位置の要素さえもすべて入ってくるでしょう。私はそれがとにかく助けになるとは思わない。 –

答えて

0

あなたの部門は100x200です。あなたがしなければならないのは、高さ= 100 * xと幅= 200 * xだけです。もちろん、純粋なCSSでこれを行うことはできますが、コードを書く方が簡単です。

+0

質問を編集しました。スケーリングを達成するために使用しているコードを見てください。幅と高さをスケーリング係数と一緒にパーセンテージで渡す必要があります。この処理のための回避策はありますか? –

+0

私が実際にやっていることは、スケーリング係数を減らして、ブラウザでズームインまたはズームアウトすると、ユーザーが同じuiスケーリングを見ることができるようにボディの幅と高さを増やすことです。 –

+0

これは、1つのタグだけを追加して行うことができます。 –