CSS を介してページに合わせてスケーリングされた複数の画像があるフロントページギャラリーに取り組んでいます。
画像は次から次へとフェードアウトし (重なり合う)、ユーザーがブラウザーのサイズを変更してスペースを使い切ると、サイズが変更されます。
問題は、ほとんどのブラウザーと、最新のコンピューターを除くすべてのコンピューターで、画像のフェードがひどく実行されることです。
ただし、画像が引き伸ばされていない場合、パフォーマンスはほとんどのコンピューターのすべてのブラウザーで完璧です。
以前に設計した他のサイトでこの問題に遭遇し、ソリューションの調査とテストにかなりの時間を費やしましたが、何も見つからないようです.
何か案は?
パフォーマンスとスタイリングのトレードオフを実装しました。画像を 0.7543234 の係数で任意にスケーリングする代わりに、8 などに丸めます。任意のスケーリング係数はパフォーマンスに大きな影響を与えることがわかりました。10 進法スケーリングを使用すると、パフォーマンスが大幅に低下します。
ここにいくつかのjsコードがあります:
var adjustedNewWidth = Math.round((roundNumber( (newWidth / originalImage.width), 1)+0.1)*originalImage.width);
var adjustedNewHeight = Math.round((roundNumber( (newHeight / originalImage.height), 1)+0.1)*originalImage.height);
- newWidth は目的の幅です。
- originalImage.width は、元の画像サイズを保持する配列です (js は非常にスマートであるため、スケーリング後にこれらにアクセスすることはできません)。
- roundNumebr は、最も近い小数点以下の桁数にスケーリングする関数です
function roundNumber(num, dec) {
var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
return result;
}
この後、フェードは約 50% 改善されますが、まだ完全ではありません。うまくいけば、これが誰かを助けることを願っています。