2017-08-23 9 views
4

材質設計の角度cliを使用しています。私はsidenavと背景を取り除くしようとしていると私はそれが角2材質:シデナブ背景を取り除く方法

.mat-sidenav-backdrop.mat-sidenav-shown{ 
    background-color: transparent !important; 
} 

しかし、これはいずれかが影響を与えたされていないような単純なものだろうと思いました。私はディスプレイなし、可視性隠しなどを試みました。バックグラウンドのスタイルがタグにインラインで配置されているように見え、重要なものを上書きすると思ったでしょう。しかし、これは動作していません...誰も私の背景タグを取り除く/レンダリング中にjavascriptを介してスタイルを変更する必要はありません任意のアイデアを持っている?

+0

これは正しいクラスセレクタですか?私はそれが材料sidenavのソースのどこにでも使われているのを見ていない。 https://github.com/angular/material2/tree/master/src/lib/sidenav これらは、「.mat-drawer-backdrop」および「.mat-drawer-shown」を参照してオン/オフを切り替えます。その完全に私はちょうど私がそれを使用することはないので、SCSSが動作する方法を誤解している.... – diopside

+2

ええ、私はブラウザで最終結果を検査し、CSSセレクタをつかむ。これは、インスペクタで60%の黒の背景色が含まれています。ブラウザでその設定を無効にすると、うまくいきます... https://material.angular.io/components/sidenav/overviewをチェックしてください –

+0

'' mode = "side"はオプションですか?背景は表示されません。 –

答えて

6

::ng-deepこのケースで素晴らしい作品が、それは将来的には廃止されることがあります。 hereを参照してください:

シャドーピアス子孫コンビネータが廃止され、サポートは主要なブラウザやツールから 削除されています。そのため、 のサポートをAngularにする予定です(/ deep /、>>>および:: ng-deepの3つすべてに対して)。 まで::: ng-deepは、ツール との広範な互換性を優先する必要があります。

ViewEncapsulationを使用することをお勧めします。あなたのコンポーネントで、次のカプセル化を追加してください:

import { ViewEncapsulation } from '@angular/core'; 

@Component({ 
    .... 
    encapsulation: ViewEncapsulation.None 
}) 

あなたのCSSは動作し、カスタムスタイルでスタイルを上書きします。

.mat-sidenav-backdrop.mat-sidenav-shown{ 
    background-color: transparent !important; 
} 
+1

他の項目のためのCSSのいくつかを調整していた、偉大な働いた...すべて今良いようです。 –

+0

@Faisalこれは現時点でのベストプラクティスであるようですが、将来は**何かが廃止される可能性があることは真実ですが、この点を支持する実際の情報源を挙げてください。 (そうでない場合はなぜそれを言及しますか?) – nothingisnecessary

+0

@nothingisnecessary更新された回答を参照してください、私は参照を追加しました。 – Faisal

1

::ng-deepを追加すると、あらかじめ作成されたスタイルシートcssをオーバーライドできます。あなたはまた、完全にDOMから背景を削除するにはdisplay: noneを使用することができます

::ng-deep .mat-sidenav-backdrop.mat-sidenav-shown { 
    background-color: transparent; 
} 

Plunker demo

。この場合、sidenavは背景領域をクリックしても閉じられません。

::ng-deep .mat-sidenav-backdrop.mat-sidenav-shown { 
    display: none; 
} 

Plunker example

関連する問題