問題タブ [getcomputedstyle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - javascriptで境界線の幅を取得するより良い方法は?
私はこれを使用します:
値「10」を取得します。
javascriptでもっと短い方法はありますか?
(値を数値で取得)
javascript - Angular 2で計算されたスタイルプロパティの変更を適切に検出するには?
HTML要素を別のコンポーネントの相対位置に配置しようとしているコンポーネントを含むAngular 2アプリを作成しました。正確な座標を計算するには、ブラウザーによってレンダリングされる独自の要素の幅と高さを知る必要があります。
私はwindow.getComputedStyle(this.elementRef.nativeElement)
それらのプロパティを取得するために使用しています。ページがレンダリングされると、ページのレンダリングが完了するまでプロパティが変化し続けることに気付きました。変更について通知を受けて配置を調整するためngAfterViewChecked
に、コンポーネントのメソッドで値を確認します。
ただし、計算されたスタイルのプロパティがまだ変更されているにもかかわらず、私のフックがもう呼び出されていないことがわかったため、レンダリングが新しい計算されたスタイルのプロパティにつながるときは呼び出されないngAfterViewChecked
ようです。Angular フレームワークは、そのような変更を検出するようには設計されていないと思います。
私の最初の試みはngDoCheck
フックを実装することでしたが、これはしばらくしてから計算されたスタイル プロパティが最終的な値になる前に呼び出されないようです。このフックが呼び出される正確なタイミングをまだ完全には理解していないと思います。
setTimeout
で関数を実装するngAfterViewChecked
と、次のようなダミー関数のみを渡したとしても、同じフックが後で再度呼び出されることにつながることが最終的にわかりました。
しかし、率直に言って、なぜそうなるのか理解できません。とフックの関係を誰か説明してくれませんか?setTimeout
ngAfterViewChecked
そして、これはやや汚い回避策ですが、計算されたスタイル属性の変更を検出して処理する適切な「Angular」の方法は何ですか?
コードの抜粋: