RetinaディスプレイでのCSSスプライトの応答性を高め、[より少なく]

画像

なぜスプライトが必要なのですか?



css-spritesの長所短所は Habréで何度も説明ているので、なぜこれが必要なのかを簡単に説明します。



人生がラズベリーのように見えないような問題文



多くの要素でcss-spritesを使用すると、 background-position



でcss-propertiesを作成する問題が発生します。 彼らはたくさん書く必要があり、時にはたくさん書く必要があります。 もちろん、スプライトを生成するための多くのサービスは私たちを助けます-彼らは、スプライトとともに、座標を持つcss / less / sassファイルを提供します。 ただし、ほとんどの場合、すべてがピクセルに厳密に関連付けられています。



電話、タブレット、新しいRetinaラップトップで72ppi用に準備されたスプライトを使用すると、画像がぼやけてしまい、見苦しくなります...



クロスブラウザー互換性、クロスプラットフォームおよびクロスサムシングに関する免責事項

このメソッドでcss3を使用するのは、標準の72よりも高いppiのディスプレイのみです。同様のディスプレイが比較的最近登場し、IE 7.0-IE8.0およびFirefoxまたはOperaの同様の古いバージョンは存在しません。 モバイルセグメントでも、すべてが正常に動作し、 メディアクエリのサポートがどこにでも実装されます



少ないスニペットの形成を始めましょう



作業中のプロジェクトで使用することを強制する人は誰もいません。すべてを通常のcssにコンパイルできます。 Macには同様のプログラムがたくさんあり、 WinLessはWindowsに役立ちます。

ここで、スプライトの特別なケースを考えます-素晴らしいリソースicomoon.ioによって生成されたアイコンを持つスプライト



網膜用のスプライトを設定する必要がある場合、単純なcssで何をしますか? おそらく、高解像度のスプライトの使用を拒否するでしょう。 おそらく、彼らは高いPPIを持つデバイスにのみそれを接続します。

しかし、ここでは、サイズに合わせてこのスプライトをスケーリングする問題に直面しています。 そして、これは、 transform: scale(x);



を除いてtransform: scale(x);



解決できないので、スプライトを再描画し、すべてのbackground-position



書き換える必要があります。 そして、すべてがうまくいきますが、時にはアイコンの数がスケールから外れてしまうので、実際に普遍的な解決策が欲しいです。



私はそれらを持っています



それでは始めましょう:



実用化へのコメント



  1. ジェネレータープログラムで3つの異なるスプライトを一度に生成する必要はありません。 1つ(非常に網膜の画面用)を生成し、貴重なcssファイルを取得してから、グラフィカルエディターを介して通常のデバイス(網膜ではない)用のスプライトの縮小バージョンを作成できます。
  2. 私のプロジェクトでは、「 px



    」を使用していません。 代わりに、値「 rem



    」をsize



    変数に割り当てます。 これにより、アイコンのサイズを必要に応じて自由に変更できます。タブレットからサイトを開く場合、これらの同じrem



    がもう少し大きくなります。 たとえば、タブレットのフォントサイズを少し大きく設定します。

     @media (min-width: 768px) and (max-width: 1366px) { html {font-size: 120%;} }
          
          







このテクニックを使用する場合







PS:LANのスペル、構文、語彙のエラーについて書いてください。

PPS:この材料は、チャンバーに測定値と重量を追加することを目的としておらず、使用されている例は完全ではありません。 この記事のグルのない/ sassは、特別なものを見つけることはありませんが、初心者には便利です。



All Articles