問題タブ [reflow]
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 - フォーム入力を (chrome で) クリアすると、この長い遅延の原因は何ですか?
概要
フォーム入力のテキストをクリアすると、Chrome で長い遅延 (数秒) が発生します。これにより、計算されたスタイルのリフローまたは再計算が発生しているようですが、よくわかりません。Chrome の Profiler と Timeline は参考になりませんでした。
遅延の原因は何ですか? どうすればそれを取り除くことができますか? これは私のコードのエラーですか、それとも Chrome のバグですか?
例
http://jsfiddle.net/jmilloy/dHFsQ/
遅延を発生させるには、入力に入力してからテキストを削除します。最後の文字を削除するか、すべてを選択してから削除すると、遅延が発生します。
遅延をなくすには、 、、またはrow4
の代わりに使用します。これで、遅延を引き起こすことなく入力をクリアできます。row1
row2
row3
ノート
遅延は
n
、行数によって異なります。Chrome では発生しますが、Firefox では発生しません。
Linux (Ubuntu/Mint 11) と Windows 7 では発生しますが、OSX では発生しません。誰でも確認できますか?
遅延動作を示すjsfiddleを取得したら、この質問を完全に書き直し、より単純な例で再度書き直しました。
javascript - Javascript は高さ 0 を返します。setTimeout 0 で動作
要素の高さの計算中に奇妙な問題が発生しています。最初は高さ 0 で、元の高さにアニメートします。setTimeout を削除すると、高さは常に 0 になります (プレーンな JavaScript を使用している場合でも)。
これを回避する方法はありますか?
google-chrome - element.offsetWidth を読み取ると再計算/リフローが発生することをどのように視覚化できますか
element.offsetWidth
要素の寸法の再計算 (またはリフロー?)を読み取るとどこにでも書かれています。
ただし、この効果を目に見えるようにするのに苦労しています。
クロムでは、次の 3 つの簡単な手順で表示できるようになると思います。
- Chrome 開発ツールを開く
- 要素タブに移動し、再計算/リフローを発生させたい要素を選択します
- タイムラインタブに移動し、録音を開始します
- コンソールに移動して入力します
$0.offsetWidth
ここで、タイムライン タブに移動すると、リフローが描かれていると思います。しかし、何も見えません。だから私は何か間違っていたに違いない。
responsive-design - 「表紙」の背景画像を使用したレスポンシブ Web サイト
ブレークポイントに次のルールを使用して、エッジ リフローを使用してレスポンシブ サイトを設計しています。
<480px, <768, 1024>
それぞれの幅のブレークポイントごとに異なる背景画像を使用しています。contain
ただし、 for を使用して Reflow に追加するとscale-x
、作成した画像がそのサイズではないように見えます。それらのほとんどは、設計より少なくとも 200 ピクセル短かった。
したがって、私の質問は、各ブレークポイントにどのサイズの背景画像を使用する必要があるか、およびリフローを使用してこれに関するその他のガイダンスや、何か間違ったことをしているという提案です。
通常はcover
むしろ使用しますcontain
が、画像は拡大縮小され、デバイスからデバイスへの必要なものが表示されません。
ありがとう
html - Jquery Mobile NavBar リフロー
こんにちは、私はこのナビゲーションバーを持っています:
デバイスの画面が小さすぎて 3 つのボタンが表示されない場合は、ボタン「メニュー」を追加する必要があります。
このようなもの: http://img30.imageshack.us/img30/8634/o6c5.png
css にルールを追加する必要があることはわかっていますが、方法がわかりません。よろしくお願いします。
javascript - d3js は過度のリフローを防ぐために何らかの手法を使用していますか?
私は、メモリ効率の高い高速な JavaScriptの記述に関する記事を読んでいて、「リフローの最小化」セクションで、次のような個々の DOM 追加操作を行うことについて警告しています。
この関数の後に、著者は次のように書いています。
「各新しい div を要素に直接追加するだけで、 20 回のリフローが発生する可能性があります。」
だから作者はそうは言っていない。私はd3.jsを多用しているので、 githubのソース コードを調べて、コメントreflow
や使用法があるかどうかを確認しましたDocumentFragment
(ただし、これは他の手法で実現できます)。
私の質問は: d3.js がリフローを減らすために何らかの手法を採用しているかどうか、またはその最適化をブラウザーに任せているかどうかを知っている人はいますか?
ありがとう。
performance - ブラウザのリフローまたはリフローしない?
私の質問は簡単です、
要素のオフセット位置を取得しようとすると、chrome devtool タイムラインでリフローが表示されるのはなぜですか?
私はこれを読みました=>
IE では、offsetTop、offsetLeft、offsetWidth、offsetHeight、scrollTop/Left/Width/Height、ClientTop/Left/Width/Height、getComputedStyle()、または currentStyle
上記のすべては基本的にノードに関するスタイル情報を要求するものであり、それを実行するたびにブラウザは最新の値を提供する必要があります。そのためには、スケジュールされたすべての変更を適用し、キューをフラッシュし、弾丸を噛み、リフローを行う必要があります。
そこで、chrome devtool タイムラインを開きましたが、これを試しても再計算スタイル (紫色のもの) が表示されませんでした:
レンダリングを確認する唯一の方法は、要素のスタイルを変更することです:
ウィンドウの上部のスクロールを取得しようとするたびにリフローが発生することを期待していましたが、そうではありません:/
javascript - HTML ドキュメントのリフローの回避
次のような数百の「行」要素があります。
ページに既にレンダリングされた後、 clientHeight を取得する必要があります。「clientHeight」プロパティがリフローを強制することを知っています。これは、非常に多くのリフローがあるため、パフォーマンスが低下します。ただし、それらは既にレンダリングされており、レンダリングされてから高さを照会するまでの間、サイズが変わらないことがわかっています。
高さを照会するときにブラウザーにリフローしないように指示する方法はありますか? さらに、Webkitインスペクタは次のように述べています。
そして、div は絶対配置された祖先内にあります。絶対配置された要素だけをリフローするべきではありませんか?
編集:
したがって、提供された答えは正しいです。このループがあったため、実際にはレイアウトを汚していました。
コードをこれに変更すると、問題が修正されました。