次のように、CSSを使用してデフォルトでHTML要素を非表示にしておく必要があるユースケースがありました。
HTML:
<div class="item">
</div>
CSS:
.item {
display: none;
}
ただし、次のようにページが読み込まれた後、ng-showを使用して要素の可視性を切り替える必要があります。
<div class="item" ng-show="show_element">
</div>
ただし、$scope.show_element
がtrueに設定されている場合、要素は表示されません。つまり、cssプロパティがAngularJSのng-showをオーバーライドしています。 ng-showをより優先する方法はありますか?
また、あなたが私が守れると思うかもしれません$scope.show_element
最初はfalseとして非表示にします。しかしその場合、ページが読み込まれているときにUXの観点からは良くない要素がほんの少ししか見えません。
あなたのケースでそれを機能させる1つの方法は、ng-class
要素を表示する必要がある場合は、正しい表示プロパティでクラスを適用できます。つまり、display: block
そして遅い場合bootstrapあなたはng-cloak
ここでドキュメントを確認してください https://docs.angularjs.org/api/ng/directive/ngCloak
別の簡単な代替手段
style="{{show_element?'display:block !important':'display:none !important'}}"
ロード時にフラッシュが発生しないようにアイテムを非表示にしようとしているだけの場合は、.item
クラスをdisplay:none
に設定する代わりに、.ng-hide
をng-show
がオンの要素に追加します。
AngularJSディレクティブng-show
は、DOM要素に.ng-hide
のクラスを追加または削除することで機能します。 .ng-hide
クラスはルールdisplay: none !important;
を適用します
<div class="ng-hide" ng-show="showElement">...</div>