2016-10-26 11 views
7

AndroidとiOS用のアプリを作成するためにイオン性イオンを使用しています。アンドロイドのすべてがうまくいきます。 iOSが問題です(もちろん)。iOS 10:クラス変更にCSSスタイルが適用されていません

ng-classを使用して要素にクラス変更を適用しています。私は、HTMLとCSSでSafariのインスペクタでクラスの変更を見ることができます。しかし、私は画面上で変更が表示されません。私が変更を見ることができる唯一の方法は、CSSセレクタを操作する場合(スタイルをオン/オフするなど)です。

ここで角度を持つHTMLです:私が述べたように、私が操作するまで、私は変更を表示することはできませんけれどもCSS は、適用されている IS、

<div class="avatar-view__initial__question question-hide" ng-class="{'question-show': speech.captured === true, 'question-hide': speech.captured === false}">{{question.text}}</div> 

とCSS

.avatar-view__initial__question { 
    text-align: left; 
    background-color: #E9EBEF; 
    font-size: 1.5em; 
    position: relative; 
    background-image: url(../img/icons/icon-ear.svg); 
    background-size: 50px; 
    background-repeat: no-repeat; 
    background-position: 10px center; 
    flex-shrink:1; 
    @extend .css-animate; 

    &.question-show { 
     padding: 20px 10px 20px 60px; 
     height: auto !important; 
    } 
    &.question-hide { 
     height:0 !important; 
     padding:0 10px 0 60px; 
    } 
    } 

インスペクタの任意のスタイル(要素に関する)。

これはバグですか?私は回避することができますか?

更新日私はiOS 9デバイスでこれを試したところ、完全に動作しました。それは10の問題のようです。

更新2私はそれがフレックスボックス問題であるように感じます。私は彼らが画面に列として塗りつぶしてもらいましたが、内容がないときは底面の高さをゼロにしていました。それは面白い演技だった。私はそれが異なって動作するようにHTMLを再フォーマットしました。しかし、他の誰かがこの問題を抱えている場合に備えて、このままにしておきたいと思います。

+0

任意の回避策を試してください:

だから我々はいつでも、このような条件付きでレンダリングされた空のスパンを追加することで、この値が変化したときに再描画強制するだろうか? –

+0

この動作に影響を与えているものは、** WKWebView **を使用しています。あなたが** WKWebView **または** UIWebView **を使用していた@ntgCleaner? –

+0

こんにちは、iOSで直接テストできるように、codepenまたはjsfiddleを提供してください。おかげで – viCky

答えて

0

cacheを無効にしてみてください、私はそれはクラスが正しく変更されているにもかかわらず、iOSの10 WebViewのない再レンダリングテンプレートの問題で理解して何から

+0

残念ながら、それはキャッシュの問題ではありませんでした。私はキャッシュを無効にして同じ効果を得ました。私はそれがバグだと言いたい。私は別の方法で動作するようにコードを再フォーマットしました。 – ntgCleaner

1

をチェックbrowser.justで保存cacheの問題がある可能性があります適用されています。

私たちが達成したいのは、クラス変更時にテンプレートを再レンダリングすることです。オブジェクトメンバspeech.capturedが値を変更するたびにクラスが変更されることはわかっています。

<span *ngIf="speech.captured"></span> 

<div class="avatar-view__initial__question question-hide" ng-class="{'question-show': speech.captured === true, 'question-hide': speech.captured === false}">{{question.text}}</div> 
+0

これはすばらしい解決策のように思えましたが、私はすぐに自分の状況でそれを実装していました。スタイルはまだただ、私の場合、私は要素にクラスを追加し、クラスもスタイルツリーに表示されますが、そのスタイル(効果がビューに適用されていないので、しかし、私の悲しみのための行動は、見知らぬ人にもなっていますビューが適用されていない)、クラスを追加する同じ変数に基づいて作成された問題のスパンが作成されます。私の場合は、結果をより明確に見るために値幅を設定します。 –

+0

その他の詳細私が気づいたのは、この問題はスクロールでしか見えないアイテムにのみ発生するということです。また、ビューはスクロール後に更新されます。 –

0

この

.avatar-view__initial__question { 
    text-align: left; 
    background-color: #E9EBEF; 
    font-size: 1.5em; 
    position: relative; 
    background-image: url(../img/icons/icon-ear.svg); 
    background-size: 50px; 
    background-repeat: no-repeat; 
    background-position: 10px center; 
    flex-shrink:1; 
    @extend .css-animate; 
} 

.avatar-view__initial__question.question-show { 
    padding: 20px 10px 20px 60px; 
    height: auto !important; 
} 
.avatar-view__initial__question.question-hide { 
    height:0 !important; 
    padding:0 10px 0 60px; 
} 
+0

これは質問のCSSとは何が違うのですか?それがなぜ機能するのでしょうか?あなたの答えをより良く説明してください。 –

+0

何が起こっているのか正確には分かりませんが、同じ問題をスタックに入れたら、これを完全に実行して試してみてください。 –

+0

あなたのコードは質問のものとまったく同じですか?投稿されたコードを混乱させるか、それともそれほど意味がありません。あなたは一見をして、あなたのコードがその質問と異なるものを見ていますか? –

関連する問題