Hamster Frameworkを䜿甚したレスポンシブでレスポンシブなタむポグラフィ。 手術や痛みを䌎わないHeの治療

画像


珟代のむンタヌネットは途方もないペヌスで発展しおおり、ナヌザヌの数は毎日増加しおいたす。 わずか10幎前に平均的なナヌザヌがほが「同じ」で、䞀郚のパラメヌタヌがわずかに異なっおいた堎合、この違いはより顕著で顕著になりたす。 この違いは、デバむスず画面サむズの違いで特に顕著です。 毎日のトラフィックには、最小から最倧たでさたざたな画面解像床を持぀非垞に倚くのナヌザヌがいたす。 最適化が䞍十分なサむトでは、ナヌザヌがサむトで費やす時間が少なくなりたす。 したがっお、あらゆるデバむスず解像床でサむトを快適に認識できるようにサむトを最適化するこずは非垞に重芁です。 実践が瀺すように、ほずんどのサむトはさたざたなデバむスに非垞に䞍十分に適応しおおり、倚くの兞型的な問題がありたす。 これらの問題はすべお、いく぀かの倧芏暡なサむトの䟋に関する蚘事の冒頭で怜蚎されたす。 そしお、䟋ずしおハムスタヌフレヌムワヌクのドキュメントを䜿甚しお、適応性のあるレスポンシブなタむポグラフィの緎習ずペヌゞの䜜成を開始したす。


このトピックに興味があるなら、猫ぞようこそ。



考慮される問題は著者の意芋であり、この意芋はこれらのサむトのナヌザヌたたは䜜成者ず異なる堎合がありたす。 著者は、これらのサむトの評刀を傷぀けたり、名誉、尊厳、ビゞネスの評刀を傷぀けたりするこずを目指しおいたせん。 これらの䟋は、開発者がサむトを改善し、゚ンドナヌザヌにより近づけお、芖聎者を拡倧できるようにするために提䟛されおいたす。 たた、著者によるず、最適化のヒントずサむトの䟋は、䞍十分に最適化されおいたせん。 客芳性のために、最小限の亀差点を持぀さたざたな被隓者のサむトの䟋を遞択したした。


以䞋は、圓瀟が協力するサむトのスクリヌンショットです。 最初の2぀のスクリヌンショットは4kモニタヌで撮圱されたした。


サむトのデスクトップバヌゞョン


画面1


画像


画面2


画像


画面3


画像


サむトのモバむル版


画面4


画像


問題



ヒントサむトのプロトタむプを䜜成する堎合、画面を4぀の等しい郚分に分割し、メむンコンテンツ甚に䞭倮の2぀たたは3぀の郚分を遞択する必芁がありたす。 サむトのメむンコンテンツが蚘事の堎合、䞭倮ブロックは画面の2/4-3/4を占める必芁がありたす。 蚘事の各行には、45〜70文字のテキストを含める必芁がありたす。さらに収たる堎合は、特定の画面サむズのフォントサむズを増やす必芁がありたす。 テキストが2次ブロックにある堎合、最適な文字数は35〜55です。 これらの倀は倩井から取られたものではなく、長時間にわたるタむポグラフィの開発ず改善の結果ずしお経隓的に発芋された倀です。 基瀎は、これが、頭を回したり、読曞時に䞍快感を生じさせるこずなく、画面を走り回るこずができる目の最適な距離であるずいうこずでした。 䞋の写真で最も重い目の動きを芖芚的に瀺したした。 察角線が倧きいほど、目を次の行に移動するのが難しくなりたす。 これに぀いおは、専門文献で詳しく説明されおいたす。


画像



ヒントサむトの察象ナヌザヌをハむラむトしたす。 ナヌザヌが䜿甚するメむンコンテンツを決定したす。さたざたな分析ツヌルがこれに圹立ちたすたずえば、怜玢゚ンゞンからのナヌザヌからの䞀般的なク゚リ。 メむンコンテンツは緑色で匷調衚瀺されおいたす。 ルヌルは1぀だけです。メむンコンテンツのブロックずフォントサむズは倧きく、セカンダリコンテンツのサむズはメむンコンテンツのサむズ以䞋です。 堎所に倪字のテキストを远加できたす。 コンテンツを重芖する方法は2぀しかありたせん倧きいサむズ、むタリック䜓デザむンのデザむン、倪字むンタヌフェむスの堎合はマスサむズ、ハむラむト


ヒント2理想的には、適切なフォントサむズを芋぀けるには異なるデバむスが必芁です。 ただし、Firefoxではctrl + mキヌボヌドショヌトカットを䜿甚できたす。 クロムでは、 ctrl + shift + i 、次にctrl + mです。 ブラりザは、サむトの適応性を確認するためのツヌルキットを開きたす。 画面のサむズをゆっくりず倉曎し、サむトで発生する倉曎を芳察したす。 サむトのデスクトップバヌゞョンの堎合、画面からの最適な距離は〜75cm、タブレットの堎合は䌞ばした腕の距離、スマヌトフォンの堎合は距離は䌞ばした腕の玄半分です。 この距離で、フォントサむズが遞択されたす サむズは、この距離でサむトのすべおの衚瀺コンテンツを読みやすいように遞択する必芁がありたす。



小さなフォントサむズでより倚くのブロックを詰め蟌もうずしないでください。 蚭蚈は、明確で理解可胜な構造を備えたシンプルなものでなければなりたせん。 問題は明るい赀で匷調衚瀺されたす。
この堎合、赀いブロックを氎平方向に再配眮し、あるブロックの埌に挿入する必芁がありたす。 サむトのモバむル版では、サむドバヌを削陀するこずをお勧めしたす。 たた、緑色で匷調衚瀺されおいるメむンコンテンツに぀いおは、フォントサむズを倧きくする必芁がありたす。 4番目のサむトでは、モバむルバヌゞョンのサむトのフォントは画面幅800ピクセルに察しお非垞に小さくなっおいたす。 このサむズは、倚くのサむトの䞭で最小です。 私の意芋では、このサむズは320〜480ピクセルの画面幅に最適です。


比范的最適化されたサむト



RTでは、サむトのモバむルバヌゞョンに泚目する䟡倀がありたす。これは最高の1぀です。 残念ながら、これらのサむトはただ4k解像床にあたり適しおいたせん。 芚えおおくべき䞻なこずは、特に芖力が䜎䞋する日の終わりに、サむトはどんなデバむスでも快適に読むこずができるずいうこずです。


読者は次のように蚀うこずができたす。-「それだけです。問題はわかっおいたす。すぐに修正したす。」 急いではいけないず答えるこずができたす。 そしお、以䞋では、知芚の心理的特城の1぀を説明したす。 私は圌女を悪い習慣ず呌びたす。


悪い癖


人がトりモロコシをこすっお䞍快感を匕き起こす靎を2幎間履いた堎合、人は習慣を身に付けたす。 今、あなたが圌に快適で良い靎を䞎えたら、圌は単に答えたす-「どんなひどい、䞍快な靎を私にくれたしたか私に返しおください!!!」。 これは、圌らがこの習慣に非垞に執着しおいるずいう事実のためであり、圌らがこの習慣を繰り返す機䌚を急激に奪われた堎合、圌らは自分自身の䞀郚を倱ったかのように䞍快に感じたす。 たずえば、特定の問題を迅速に解決する方法はありたすが、この理由から、心理療法は特にいく぀かのセッションで䜜業を䌞ばしたす。 特に才胜がある私は、この痛みを取り戻し、より良い生掻を完党に攟棄するためにあらゆる努力をするこずができたす。 同じ理由で、サむトの新しいバヌゞョンを展開するすべおの詊みは、倚くの堎合、䞍満を持぀ナヌザヌによっお満たされたす。サむトが非垞に倧きい堎合、ただ誇倧広告がありたす。 そしおこの時点で、「新しいサむトのデザむンが奜きですか」ずいう皮類のアンケヌトを行うべきではありたせん。 答えは単なる指暙ではありたせん。 そしお、ナヌザヌの䞍満のために、間違いを犯しやすくなりたす-叀いバヌゞョンのサむトを返すこずです。


ナヌザヌが新しいデザむンに埐々に慣れおいくように、すべおの倉曎をゆっくり行うこずをお勧めしたす。


さお、理論で私たちは完了し、最も甘いもの-緎習を始めるこずができたす。


実甚郚


ペヌゞのレむアりト Hamster framework documentation


たた、ドキュメントには、慣れるのに圹立぀远加の理論的な資料がありたす。 たた、蚘事で䜕かが明確でない堎合は、ドキュメントで倚くのこずが説明されおいたす。


ここで利甚可胜な゜ヌスコヌド Github


ハムスタヌフレヌムワヌクの動䜜を説明するだけの堎合、これはマクロず関数の蚀語であり、埌で簡単にcssコヌドず任意の枬定単䜍に倉換できたす。 そしお、プリプロセッサず比范しお最も重芁なプラスは、CSSの可読性が最倧であり、どのプロパティを䜿甚するか、そしおコンパクトでシンプルな構文を知っおいるこずです。


たず、node.jsがむンストヌルされおいない堎合は、 https //nodejs.org/en/からダりンロヌドしおむンストヌルする必芁がありたす。


プロゞェクトの䜜業ディレクトリを䜜成したす。 コン゜ヌルを起動し、次のコマンドを䜿甚しお䜜業ディレクトリに移動したす。


cd  

新しいプロゞェクトを䜜成したす。


 npm init 

必芁なnpm拡匵機胜をむンストヌルしたす。


 npm install gulp gulp-sourcemaps gulp-postcss@6.4.0 precss postcss-hamster --save-dev 

gulp-postcss@6.4.0-このバヌゞョンをむンストヌルする必芁がありたす。公開時に最新バヌゞョンにバグがあり、 むンポヌトが正しく機胜しなかったためです。


ディレクトリにgulpfile.jsを䜜成したす-これはプロゞェクトで実行するメむンファむルです。


 var gulp = require("gulp"), sourcemaps = require("gulp-sourcemaps"), postcssgulp = require("gulp-postcss"), precss = require("precss"), hamster = require("postcss-hamster"); gulp.task("css", function () { var processors = [precss({ "lookup": false }), hamster]; return gulp.src("./src/style.css") .pipe(sourcemaps.init()) .pipe(postcssgulp(processors)) .pipe(sourcemaps.write(".")) .pipe(gulp.dest("./css")); }); gulp.task("default", ["css"]); 

次に、srcディレクトリにbase.cssファむルを䜜成したす


 /*@normalize;*/ @reset; @box-sizing-reset; nav { user-select:none; } body { font-family: @font-family; color: @font-color; background-color: #dee6ea; font-weight: @font-weight; height: 100%; position: relative; } @ruler; 

@reset -Eric Meyerの「Reset CSS」2.0を䜜成したす
@ normalize-ノヌマラむズを曞き蟌みたす。
奜きなものを遞択しおください。


@ box-sizing-reset-ボックスサむズのリセットを行いたす。 それが䜕であり、なぜそれが必芁なのかわからない堎合は、次のリンクをご芧ください  https : //css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/


@ruler-垂盎リズムをデバッグするためのグリッドを远加したす。


@で始たる残りのキヌワヌドは定数であり、varibales.cssファむルで定矩したす。 たた、ハムスタヌフレヌムワヌクの基本蚭定も含たれおいたす。 すべおのハムスタヌフレヌムワヌク蚭定は、 @ hamster {}ブロックに含たれおいたす-これらはグロヌバル蚭定です。 @ihamster {}はロヌカル蚭定です。 @hamster end; ロヌカル蚭定をリセットし、グロヌバルを返したす。 必芁なものに぀いおは、ドキュメントを読むこずができたす。 たた、ドキュメントではすべおのパラメヌタヌに぀いお説明しおいたす。


私たちにずっお最も重芁なのは


font-size-基本フォントサむズ。通垞は、デフォルトでp芁玠ず倚くの小文字芁玠に蚭定されたす。
line-height-行間隔-垂盎リズム。
font- ratio-モゞュラヌスケヌルの係数。


フォントサむズのモゞュラヌスケヌルに基づいお生成されたアルファベットの゚むリアスを䜿甚したす。


 @hamster { /* Base Font settings */ --font-size: 16px; /* line height in pixels like 24px or relative value like 1.5 without em, rem! */ --line-height: 1.35; --font-ratio: 1.2; --remove-comments: true; /* Vertical Rhythm settings */ --unit: rem; --px-fallback: true; --rem-fallback: false; --properties: extend; --ruler-style: switch ruler-debug; --ruler-color: rgba(2, 179, 228, .7); --ruler-icon-colors: #fff #02b3e4; --ruler-icon-position: "position:fixed;top: spacing(1.125);left: spacing(.625);"; --ruler-icon-size: spacing(.75); --ruler-pattern: 1 0 0 0; --ruler-scale: 4; --ruler-thickness: 1; --round-to-nearest-half-line: false; --min-line-padding: 1px; /* Custom Typography constants */ --font-weight: 400; --font-color: #304458; --header-color: #02b3e4; --sheader-color: #DA083D; --background-color: #f5f5f5; --block-color: #F2FBFF; --hover-color: #1bba13; --footer-color: #1C2733; --wrapper-background: #fff; --code-color: #faf9fa; --font-family: Roboto, "Open Sans", "PT Sans", "Segoe UI", "Helvetica Neue", Helvetica, Verdana, Tahoma, Arial, sans-serif; } 

次に、typography.cssファむルを䜜成したす。これは、テキスト芁玠のメむンスタむルが保存されるメむンファむルです。 fs xxlは、xxlずいう名前のテキスト゚むリアスの代わりにフォントサむズを曞き蟌みたす。 ハムスタヌフレヌムワヌクのドキュメントで説明されおいるように、独自の゚むリアスを䜜成できたす。


定矩枈みの゚むリアス。 数倀が倧きいほど、フォントサむズが倧きくなりたす。


 Alias Short Alias Size tiny t -2 small s -1 base b 0 medium m 1 large l 2 xlarge xl 3 xxlarge xxl 4 xxxlarge xxxl 5 

スペヌス関数は、パラメヌタヌで枡された数倀に行の高さを乗算し、受信したサむズを返したす。 すべおの枬定単䜍に぀いお、蚈算は自動的に行われたす。 ハムスタヌフレヌムワヌクには、蚈算甚の関数がいく぀かありたすが、これが最も䞀般的です。 このリンクで機胜の完党なリストを芋぀けるこずができたす。


adjust-font-size -フォントサむズに぀いおは、font-sizeプロパティを蚘述し、行間隔を蚈算したす。 サむズは、px、em、remで蚭定できたす。


 %strong { font-weight: 500; } %hlight { color: @sheader-color; } h1 { text-align: center; font-weight: 600; adjust-font-size: fs xxl; color: #fff; margin-top: spacing(1); margin-bottom: spacing(1); } h2 { @extend %strong; color: @header-color; adjust-font-size: fs xl; margin-top: spacing(2); margin-bottom: spacing(1); padding-left: spacing(1); padding-right: spacing(1); border-left: spacing(.2) solid @header-color; background: @code-color; } h3 { @extend %hlight; adjust-font-size: fs l; margin-top: spacing(2); margin-bottom: spacing(1); } h4 { @extend %hlight; adjust-font-size: fs m; margin-top: spacing(1); } h5 { @extend %hlight; adjust-font-size: fs b; margin-top: spacing(1); } h6 { @extend %hlight; adjust-font-size: fs s; margin-top: spacing(1); } strong { @extend %strong; } p { adjust-font-size: fs b; @hyphens; margin-bottom: spacing(1); } a { color: @header-color; &:hover { color: @font-color; } } ul, ol { adjust-font-size: fs b; list-style-position: inside; margin-bottom: spacing(1); } ul { list-style: disc inside; } ol { list-style: decimal inside; } ul a, ol a { text-decoration: none; } code, pre { font-family: "Roboto Mono", Inconsolata, monospace; margin: 0; padding: 0; text-align: left; tab-size: 4; hyphens: none; @forcewrap; } 

メむンのstyle.cssファむルを䜜成し、残りのファむルをその䞭に含めたす。


 @import "variables.css"; @import "base.css"; @import "typography.css"; 

これで、コン゜ヌルに安党に入力できたす。


 gulp 

cssディレクトリの出力で、スタむルを含むstyle.cssファむルを取埗したす。 単䜍は任意です。私たちはrem蚭定で遞択したした。


 h1 { text-align: center; font-weight: 600; font-size: 2.0736rem; line-height: 2.7rem; color: #fff; margin-top: 1.35rem; margin-bottom: 1.35rem; } h2 { color: #02b3e4; font-size: 1.728rem; line-height: 2.7rem; margin-top: 2.7rem; margin-bottom: 1.35rem; padding-left: 1.35rem; padding-right: 1.35rem; border-left: 0.27rem solid #02b3e4; background: #faf9fa; } h3 { font-size: 1.44rem; line-height: 2.7rem; margin-top: 2.7rem; margin-bottom: 1.35rem; } ... 

しかし、1぀は倧きな迷惑ではありたせん-すべおのスタむルは16pxの基本サむズ甚に生成されたした。 そしお、私たちのCSSは適応性も応答性もたったくありたせん。 メディアク゚リを介しおこの状況を修正し、画面サむズごずに異なるサむズを生成したす。 耇補するCSSコヌドは、 @ copyマクロを䜿甚しお「full」ずいう名前の倉数にコピヌされたす。任意の倉数名を指定できたす。 次に、パラメヌタヌで倉数名を指定し、 @ pasteマクロを䜿甚しおこのCSSコヌドを挿入したす。 開始するには、ブラりザがメディアク゚リをサポヌトしおいない堎合、16個のフォントサむズのフォヌルバックのように挿入したす。 メディアク゚リは、すべおのブラりザの玄98をサポヌトしおいたす。 そしお、style.cssファむルのcssは以䞋のようになりたす。


 @import "variables.css"; @import "base.css"; @copy full { @import "typography.css"; } @paste full; @media screen and (max-width: 479px) { @ihamster { --font-size: 14px; --line-height: 1.25; } @baseline html; @ruler; @paste full; @hamster end; } @media screen and (min-width: 480px) and (max-width: 599px) { @ihamster { --font-size: 15px; --line-height: 1.3; } @baseline html; @ruler; @paste full; @hamster end; } @media screen and (min-width: 800px) and (max-width: 1279px) { @ihamster { --font-size: 18px; --line-height: 1.4; } @baseline html; @ruler; @paste full; @hamster end; } @media screen and (min-width: 1280px) and (max-width: 1599px) { @ihamster { --font-size: 19px; --line-height: 1.5; } @baseline html; @ruler; @paste full; @hamster end; } @media screen and (min-width: 1600px) and (max-width: 1919px){ @ihamster { --font-size: 20px; --line-height: 1.55; } @baseline html; @ruler; @paste full; @hamster end; } 

以䞋を開始したす。


 gulp 

出力では、さたざたな画面サむズに合わせお文字䜓裁を調敎したす。 本圓にそんなに単玔じゃないですか これらの操䜜䞭に心配しないでください、サむズのすべおの割合が保存されたす すべおのサむズは、基本サむズを基準ずしお蚈算されたす たずえば、adjust-font-size1.5remず曞くず、フレヌムワヌク自䜓が、蚭定で単䜍ずしお指定された目的の枬定単䜍のサむズを蚈算したす。


実隓的に手動で寞法を遞択するのは少し䞍䟿です。 しかし、私はさらに進んで、ブラりザの衚瀺領域のサむズに基づいお垂盎リズムを自動的に蚈算する䞖界初の機噚を䜜りたした。


これがどのように機胜するかは、 蚘事に蚘茉されおいたす 。


ここで、style.cssは次の圢匏を取りたす。


 @import "variables.css"; @import "base.css"; @copy full { @import "typography.css"; } @paste full; @media screen and (max-width: 799px) { @ihamster { --font-size: 14px; --line-height: 1.25; --to-font-size: 18px; --to-line-height: 1.4; --viewport: 320px 800px; --unit: vw; } @ruler; @paste full; @hamster end; } @media screen and (min-width: 800px) and (max-width: 1919px){ @ihamster { --font-size: 18px; --line-height: 1.4; --to-font-size: 21px; --to-line-height: 1.5; --viewport: 800px 1920px; --unit: vw; } @ruler; @paste full; @hamster end; } @media screen and (min-width: 1920px){ @ihamster { --font-size: 21px; --line-height: 1.5; --to-font-size: 42px; --to-line-height: 1.6; --viewport: 1920px 3840px; --unit: vw; } @ruler; @paste full; @hamster end; } 

 --font-size: 21px; //   ,     1920px --line-height: 1.5; //   ,     1920px --to-font-size: 42px; //   ,     3840px --to-line-height: 1.6; //   ,     3840px --viewport: 1920px 3840px; //      ,        . --unit: vw; //    vw +    calc 

以䞋を開始したす。


 gulp 

ご芧のずおり、cssコヌドによりメディアク゚リの数が枛り、出力ファむルのサむズが小さくなりたした。


 @media screen and (max-width: 799px) { h1 { text-align: center; font-weight: 600; font-size: calc(1.728vw + 23.5008px); line-height: calc(3.2083vw + 24.7333px); color: #fff; margin-top: calc(1.6042vw + 12.3667px); margin-bottom: calc(1.6042vw + 12.3667px); } h2 { color: #02b3e4; font-size: calc(1.44vw + 19.584px); line-height: calc(3.2083vw + 24.7333px); margin-top: calc(3.2083vw + 24.7333px); margin-bottom: calc(1.6042vw + 12.3667px); padding-left: calc(1.6042vw + 12.3667px); padding-right: calc(1.6042vw + 12.3667px); border-left: calc(0.3208vw + 2.4733px) solid #02b3e4; background: #faf9fa; } h3 { font-size: calc(1.2vw + 16.32px); line-height: calc(3.2083vw + 24.7333px); margin-top: calc(3.2083vw + 24.7333px); margin-bottom: calc(1.6042vw + 12.3667px); } ... } @media screen and (min-width: 800px) and (max-width: 1919px){ h1 { text-align: center; font-weight: 600; font-size: calc(0.5554vw + 32.8814px); line-height: calc(1.125vw + 41.4px); color: #fff; margin-top: calc(0.5625vw + 20.7px); margin-bottom: calc(0.5625vw + 20.7px); } h2 { color: #02b3e4; font-size: calc(0.4629vw + 27.4011px); line-height: calc(1.125vw + 41.4px); margin-top: calc(1.125vw + 41.4px); margin-bottom: calc(0.5625vw + 20.7px); padding-left: calc(0.5625vw + 20.7px); padding-right: calc(0.5625vw + 20.7px); border-left: calc(0.1125vw + 4.14px) solid #02b3e4; background: #faf9fa; } h3 { font-size: calc(0.3857vw + 22.8343px); line-height: calc(1.125vw + 41.4px); margin-top: calc(1.125vw + 41.4px); margin-bottom: calc(0.5625vw + 20.7px); } .... } ... 

残念ながら、 vw + calcはブラりザの〜94のみをサポヌトし、さらにブラりザの蚈算にオヌバヌヘッドがありたす。 しかし、これを超えお、珟代のブラりザの将来はvwで安党にサむゞングできたす。


PS。 䞀郚の画面サむズでは、ドキュメントサむトのコンテンツが垂盎リズムグリッドに察しおわずかに倉動するこずに気づいたかもしれたせん。これは、サブピクセルレンダリングテクノロゞヌずすべおのブラりザヌが異なる方法で実装し、倀を異なる方法で䞞めおいるためです。 これは、calcの倀で特に顕著です。 https://johnresig.com/blog/sub-pixel-problems-in-css/


プロゞェクトアセンブリを200ミリ秒たで高速化する堎合は、cssnext postcssモゞュヌルを無効にしおプロゞェクトに接続する堎合、autoprefixerを個別に接続するこずをお勧めしたす。 cssnextの実践が瀺しおいるように、プロゞェクトのビルド速床が少なくずも5倍向䞊したす。


たずめるず。 ご芧のずおり、すべおが非垞に簡単でシンプルであり、最小限のコストで倧量の類䌌したcssコヌドを生成できたす。 機胜はタむポグラフィの生成に限定されたせん。 ボタン、サむドバヌのサむズなど、さたざたな芁玠の適応サむズを生成できたす。 ここに䟋を芋぀けるこずができたす。


あなたはすべおの申し出ず願いをギタヌで衚珟できたす。 たた、プロゞェクトの開発ず開発に参加するこずもできたす。


サポヌト/トヌク Gitter
ドキュメント RU


誰にずっおも簡単なレむアりトず成功したプロゞェクト




よろしく、ハムスタヌフレヌムワヌク開発者



Source: https://habr.com/ru/post/J328812/


All Articles