ピクセルディフェンスワヌドメディアク゚リ

りサギの穎が深いかどうかお芋せしたす。 Webペヌゞのレむアりトに関する出版物を読んでいるずきに、メディアク゚リでピクセルを䜿甚しないこずを繰り返し掚奚しおいたす。 たずえば、以䞋はHabréに関するごく最近の蚘事からの匕甚です。



固定サむズを䜿甚する代わりに、盞察単䜍を䜿甚しおブレヌクポむントを定矩するこずをお勧めしたす。 レむアりトでの盞察的なサむズの䜿甚の䞻題は、すでにハブで繰り返し開瀺されおいたす。 ここに蚘事の郚分的なリストがありたす here 、 here 、 here 。 最も重芁な匕数のみを説明したす。これにより、ブラりザヌはナヌザヌが蚭定したズヌムサむズのレベルに応じおデザむンを倉曎できるようになりたす。



メディアク゚リでピクセルを䜿甚するず、レむアりトに害が及ばないだけでなく、emを䜿甚するよりも利点があるず蚀ったらどうでしょうか。






この蚘事では「ブレヌクポむント」ずいう甚語を䜿甚しおいたす。 プログラマヌにずっお、圌は耳を傟けたす。なぜなら、プログラミングの䞖界ではそれは完党に異なるものを意味するからです。 フロント゚ンド開発の英語圏では、これは確立された明確な甚語です。 ブラりザりィンドりの幅を意味し、それを超えるずペヌゞレむアりトが倉曎されたす。 「メディアク゚リ」ずいう甚語のように、ロシア語に倉圢したせんでした。







ピクセルを介したメディアク゚リはズヌムに干枉したせん



ピクセルに察する「最も重芁な匕数」から始めたしょう。おそらく、叀いブラりザヌでペヌゞが拡倧されるず、メディアク゚リのピクセル倀は機胜したせん。 これは単なる嘘です。 ピクセルメディアク゚リは、すべおの䞀般的なブラりザヌでズヌムを䜿甚するず正垞に機胜したす。 Internet Explorer 8でも



はい、IE 8 はメディアク゚リをサポヌトしおいたせん 。 ただし、プロゞェクトで顕著なRespond.js ポリフィルを䜿甚するず、IE 8はメディアク゚リを完党にサポヌトしおそれを衚瀺したす。 そしお、あなたは䜕を知っおいたすか ズヌムでも正しく動䜜したす。 Ctrlキヌを抌しながらマりスホむヌルを回すず、ペヌゞレむアりトが再構築されたす。 たずえば、IEのズヌムアニメヌションが右偎に衚瀺されおいるサむトでは、次の圢匏のメディアク゚リを䜿甚したした。



@media (min-width: 401px) { #header-first { float: left; width: 47.82609%; margin-right: 4.34783%; }}
      
      





より叀いIEは手元にありたせんでしたが、それは問題ではありたせん-ロシアでのIE7のシェアは0.7のみで、IE6-0.1であり、それは倧郚分が囜家機関によるものです。



そのため、メディアク゚リでピクセルを拒吊する䞻な理由ず呌ばれる問題は、単に存圚したせん。 どうやら、これは口コミで盲目的に䌝えられる単なる䌝説であり、フロント゚ンドの第䞀人者の有力な出版物やブログの出版物に定期的に入りたす。



UPD 2013-10-31 Safariメディアク゚リがズヌムで機胜しないこずがわかりたした。 ただし、どの枬定単䜍を䜿甚しおも機胜したせん。 KrylCWは、これがSafari 7にも圓おはたるこずを確認するのに圹立ちたした。さらに、デヌタによるず、Yandex.Browser for MacOS珟圚のバヌゞョン1.7.1364.220740b6c012でズヌムするずメディアク゚リが機胜したせんが、ズヌム埌に曎新するず機胜したすペヌゞ。



WindowsでYandex.Browserを詊したした珟圚のバヌゞョンは13.10.1500.8765e504cceです。 そこには別の方法がありたすピクセルベヌスのメディアク゚リは正しくズヌムしたすが、盞察的なものはそうではありたせん ペヌゞをズヌムするず、メディアク゚リが正しく機胜したす。 これがステップ175→200で発生するずしたす。 次に、反察方向にズヌムするず、200→175ステップでのメディアク゚リは機胜したせんが、100→90ステップで機胜したす。 そしお、ズヌムを前埌にするず、各サむクルずのギャップが倧きくなりたす



詊しおみたい人のために、圌らは自分自身でテストをリベットしたした ピクセル 、 ems 。





基本フォントサむズを倉曎するず、emsで蚭定されおいる堎合、すべおのブレヌクピオンが「移動」したす



この状況を想像しおください。 チヌフたたはクラむアントがあなたに電話しお蚀いたす。 劻は䜕も読めたせん、倧きくしおください。」 議論するのは無意味です。 悲しいこずに息を吞っお、デザむン郚門のドアを芋お、CSSコヌドを開いお、ベヌスフォントサむズを13pxから16pxに増やしたすそうです、ずにかくベヌスフォントサむズはピクセル単䜍で蚭定されたす。



どうしたの emsで指定されたすべおのブレヌクポむントがシフトされたす。 珟圚、タブレットでは、サむトは1぀の列に衚瀺されおいたす。これは、電話でのみ衚瀺されおいた方法です。 これは次のようになりたす りィンドりの幅を900px未満にし、恐ろしくしたす。 これは嬉しいですか このような状況に陥った堎合、急いですべおのメディアク゚リを曞き盎そうずするか、プロゞェクトでプリプロセッサを䜿甚しない堎合は完党な声で誓うず䞻匵する準備ができおいたす。



はい、 コンテンツファヌストのむデオロギヌを認識しおいたす。どのむデオロギヌに応じお、消費に適したコンテンツの芏暡に応じお、ブレヌクポむントをシフトする必芁がありたす。 これにより、CSSコヌドでブラりザヌを備えた数十億のさたざたなサむズのデバむスを考慮する必芁性から逃れるこずができたす。 代わりに、フォントサむズに関連する単䜍でブレヌクポむントを蚭定し、コンテンツが混雑しすぎたり、広すぎる堎合にサむトを匷制的に再構築したす。



しかし、自分に嘘を぀かないでください。 商甚プロゞェクトを実行するには、最も人気のあるデバむスで厳密に定矩されたレむアりトが必芁です たたはクラむアントが必芁です。 たずえば、ポヌトレヌトモヌドのiPadの1列の携垯電話に衚瀺されるサムネむルは、3列のグリッドに倉わりたす。 フォントサむズを倉曎しおも壊れないようにしたす。 デザむナヌがiPadに暪向きモヌドのサむドバヌを配眮するこずを決定した堎合、サむトで䜿甚されおいるフォントサむズに関係なく、サむドバヌを配眮する必芁がありたす。 狭いサむドバヌのフォントが倧きすぎる堎合は、サむドバヌを取り陀くよりもフォントを枛らす方がいいでしょう。



はい、コンテンツ指向のサむトの堎合、テキストの列の幅は快適な制限を超えおはなりたせん。 しかし、最初に、この幅にはかなり広い範囲がありたす。 45〜75文字の掚奚事項を知っおいたす。぀たり、列の幅を最倧66パヌセントポむントたで簡単に倉曎できたす。 第二に、なぜそのような幅が暙準ず芋なされるのですか 光沢のある雑誌を開くず、15文字幅のテキストの列に出くわすこずが非垞に倚く、これが悪いこずは誰にも起こりたせん。 たずえば、満員のメトロカヌで雑誌を読んでみるず、雑誌を巻くのにずおも䟿利です。 たた、Habréでは、テキストの列の幅は75文字から玄115文字であり、Habrの蚪問者の倧倚数は、テキストがちょうど115文字の幅であるず考えおいたす。



ずころで、ここで抂念の代替に気づきたしたか ピクセルベヌスのメディアク゚リを䜿甚しお、最適なテキスト幅を䜜成するこずもできたす。



そしお最埌に、すでに完成したプロゞェクトのすべおのフォントのサむズを、他のすべおを再蚭蚈するこずなく、どのくらいの頻床で倉曎する必芁がありたすか たた、すべおのフォントがem'ahにあり、クラむアントがメむンテキストのみフォントを増やすこずを芁求した堎合はどうでしょうか。 申し蚳ありたせんが、最埌の質問は蚘事のトピックには適甚されたせん。







emsで定矩された隣接メディアク゚リは重耇しおいたす



䞀方の最倧幅が他方の最小幅ず䞀臎する堎合、䞀察のメディアク゚リを「隣接」ず呌びたす。 倩井から取った䟋を挙げたしょう。



 .container { color: black; background-color: white; }} @media (max-width: 40em) { .container { color: red; }} @media (min-width: 40em) { .container { background-color: red; }}
      
      





正確に40em幅のブラりザでこのサむトを開くず、「ラッキヌ」な人が蚪問者にどのように衚瀺されるず思いたすか



オヌバヌラップは1ピクセルのみですが、そうです。 サむトの蚪問者が突然このような画面の幅を芋぀けた堎合、ペヌゞずデザむンのレむアりトは、完党に読めないほどに歪む可胜性がありたす。



ピクセルを䜿甚する堎合、問題は基本的で完党に信頌できる方法で解決されたす。



 @media (max-width: 600px) { /* ... */ } @media (min-width: 601px) { /* ... */ }
      
      





倚数意芋に盲目的に埓い、emsでメディアク゚リを䜜成し、重耇を芋぀けたずき、同じ方法で問題を解決しようずしたした (min-width: 20,1em)



。 オヌバヌラップはギャップに眮き換えられたした。特定のりィンドり幅では、どちらのメディアク゚リも適甚されたせん。 私は20.01を詊し、次に20.001を詊したした...倧砲のフォヌクを䜿甚しお、小数点以䞋の残りの倀を芋぀けるこずができたした。



私はすぐに、このバランスを取り戻すだけでは十分ではないこずに気付きたした。 基本的なフォントサむズごずに、残りは異なりたす。それ以倖の堎合は、間違いなくギャップたたはオヌバヌラップがありたす。 しかし、SASSの優れたコマンドを持ち、emsの任意の倀の正しい残りを遞択しおmixinを䜜成できるため、私は驚かされたせんでした。 入力でいく぀かのemを取埗し、ベヌスフォントサむズで乗算し、1を远加し、ベヌスフォントサむズで陀算したす。そしお、出力で安党な倀を取埗したす。



この堎所では、この道がどういうわけか...間違っおいるずいう挠然ずした感じがするはずです。 少なくずもそれは私に生じたした。 私は偎から状況を芋おみお、質問をしたした私は実際に䜕をしおいたすか



そしお、これは次の議論に私たちをもたらしたす







メディアク゚リのEmは、2぀のピクセル倀の間の䞭間ですベヌスフォントサむズずブラりザヌりィンドりの幅



前述のように、基本フォントサむズは垞にピクセル単䜍で指定されたす。 それ以倖の堎合、ブラりザはどのフォントサむズが1 emに等しいず芋なされるかを単玔に知りたせん。 基本フォントサむズが指定されおいない堎合、通垞のブラりザは16ピクセルを䜿甚したす。 em'ahで指定されおいる堎合、ブラりザは同じ16ピクセルを乗算したす。 同じこずが他の盞察単䜍にも圓おはたりたす。1ptは4/3 pxで、1センチメヌトルのピクセル数がOSに曞き蟌たれたす。



メディアク゚リの最小幅ず最倧幅は、りィンドりの幅にマッピングされたす。これは、ブラりザでは、敎数の仮想ピクセルで指定されたす。 たずえば、4番目のiPhoneの堎合は320×480で、iPhone 5の堎合は320x568です。



emsでメディアク゚リを蚭定するこずにより、最初にピクセルからemぞの倉換を頭の䞭で行い、次にemからピクセルぞの倉換を行っお、このブレヌクポむントに実際に到達する画面の幅を把握したす。



そのように自分を拷問する必芁はありたせん。 ピクセルを䜿甚するだけです。







ピクセルベヌスのメディアク゚リを䜿甚しおも、「コンテンツファヌスト」アプロヌチを攟棄するこずにはなりたせん。



メディアク゚リでピクセルを䜿甚するずいう事実は、メディアク゚リを蚭蚈する際にコンテンツから掟生する胜力を奪うものではありたせん。



むンタヌネットでメディアク゚リを適切に実行する方法に関する蚘事は倚数ありたすが、このトピックはこの蚘事の範囲倖です。 したがっお、私は自分自身をいく぀かの掚奚事項に限定し、サブタむトルの論文を匷化しようずしたす。



この時点で、蚘事の客芳的な郚分が終了し、控えめな個人的な意芋が始たりたす。他の方法が間違っおいるこずを意味するものではありたせん。



たず、各画面幅に個別のCSSファむルを䜿甚しないでくださいIEサポヌトはポリフィルで提䟛できたす。 サむトペヌゞで䜿甚されるモゞュヌルに埓っおコヌドを構造化し、モゞュヌルごずにメディアク゚リを個別に配眮したす。 これにより、各モゞュヌルの制埡が容易になり、コヌドサポヌトが簡玠化されたす。



第二に、レスポンシブレむアりトを蚭蚈するずきは、コンテンツに基づいお構築したす。 この方法は非垞に単玔です私が発明したのではありたせん。 最初に、最小画面幅に焊点を合わせおモゞュヌルを構成したす。 もちろん、モゞュヌルは「ゎム」でなければなりたせん。 次に、モゞュヌルがお粗末に芋えるたでブラりザりィンドりを拡倧したす。 この時点で、ブレヌクポむントを蚭定し、その幅に反転したす。 サむトの最倧幅に達するたで繰り返したす。



ずころで、サむトの最倧幅を980ピクセルの狭い列に制限しないでください。 倧型モニタヌを䜿甚しおいる堎合は、1920ピクセルの幅でサむトがどれだけ豪華に芋えるかを確認しおください。 小さいモニタヌを䜿甚しおいる堎合は、神のために5000ルヌブルをこすり萜ずし、倧きなものを賌入しおください。 これはあなたのプロフェッショナルツヌルです



第䞉に、プリプロセッサを䜿甚したす。 プロゞェクトにプリプロセッサを実装するこずは、特に初心者にずっおは簡単ではありたせんが、非垞に倚くの手間を省くこずができたす。



任意のプリプロセッサで察応できたすが、 Sassを匷くお勧めしたす。 Sass蚀語自䜓の方が優れおいるからではなく、機胜がほが同等であるためではなく、ラむブラリの゚コシステム党䜓があるためです。 䞀般に「 コンパス拡匵」ず呌ばれるラむブラリは、機胜が非垞に豊富であり、互いに効果的に盞互䜜甚したす。



第四に、倚数の倚様なメディアク゚リに埋もれないようにするために...







画面サむズスケヌルをスラむスにスラむスする



メディアク゚リを操䜜するタスクを容易にするために、 Breakpoint Slicer拡匵機胜を構築したしたこれは、 Breakpointを䜿甚したす -これは、メディアク゚リを操䜜するための非垞に匷力で汎甚的な拡匵機胜です。



ブレヌクポむントスラむサヌのアむデアは非垞に単玔です。 たずえば、400px、600px、800px、1050pxなどの短い間隔でブレヌクポむントを蚭定したす。 モゞュヌルは、これらのスペヌスに順番に番号を付けたす。



  1. 0〜400
  2. 401-600
  3. 601-800
  4. 801-1050
  5. 1051 —∞


次に、Sassコヌドで、メディアク゚リを挿入するのに必芁な間隔を指定したす。





これにより、範囲ごずにモゞュヌルのスタむルを迅速か぀効率的に配垃できたす。 倚数のギャップを䜿甚するこずで、過剰な特異性に陥るこずなく、すべおのクラスのデバむスをカバヌできたす。



Breakpoint Slicerの䜿甚に぀いお質問がある堎合は、バグトラッカヌで遠慮なく質問しおください英語を知っおいる堎合は、英語の方が良いでしょう。



All Articles