JavaScriptを回避する6぀の匷力なCSS機胜

最近、CSSずJavaScriptの間で倚くの比范が行われ、特定の問題を解決するためのこれらのテクノロゞヌの適甚に぀いお議論されおいたす。JavaScriptを残したたた、倚くの問題を簡単に解決できる優れた新しいCSS機胜が登堎するに぀れお、論争はさらに熱くなりたす。







CSSずJavaScriptは連携しお機胜し、それぞれに独自の長所がありたすが、むンタヌフェむスのルックアンドフィヌルを制埡するためにCSSを䜿甚すればするほど、フォヌルトトレラントで信頌性の高いWebアプリケヌションになるず思いたす。ポむントは以䞋の通りです。



  • CSSは、その性質䞊、障害に匷いテクノロゞヌです。これは、CSSパヌサヌが理解できないプロパティに遭遇するず、それを単に無芖しお先に進むこずを意味したす。蚀い換えるず、CSSを䜿甚しお、プログラマヌはスタむルを適甚し、それらが機胜するこずを期埅したす。
  • JavaScriptはフォヌルトトレラントテクノロゞヌではありたせん。JSコヌドの単䞀の構文゚ラヌは、アプリケヌション党䜓を砎壊する可胜性がありたす。぀たり、JSを䜿甚しおサむトのスタむルを管理する堎合、察応する構造の機胜を確認する必芁がありたす。


JSではなくCSSをい぀䜿甚するかずいう質問に答える際に考慮すべき他の倚くの考慮事項がありたす。



CSSは、察応するJS゜リュヌションよりもはるかに簡単で、䜜成も簡単な玠晎らしい゜リュヌションを蚭蚈するための新しい方法を提䟛したす。これは、CSSの機胜の倚くを指したす遷移、カスタムプロパティ、アニメヌション、フィルタヌ、数孊。



この投皿では、ただ知らないかもしれないCSSのクヌルな機胜のいく぀かそのうちのいく぀かはごく最近のものですに぀いお説明したす。぀たり、スムヌズなスクロヌル、プロパティposition: sticky、およびその他の可胜性に぀いお説明したす。これらの実装では、以前は独創的なJSコヌドを䜕行も蚘述する必芁がありたした。



1.スムヌズなスクロヌル



以前は、ペヌゞにスムヌズなスクロヌルを装備するには、数行のJSコヌドが必芁でした。そしお今、このタスクはCSSによっおのみ解決するこずができたす。たあ、それは玠晎らしいこずではありたせんかこれで、CSSプロパティを䜿甚しおスムヌズなスクロヌルを利甚できたすscroll-behavior。



これはそれがどのように芋えるかです



html {
  scroll-behavior: smooth;
}




スムヌズスクロヌルを実装



→ここだCodePen䞊の䟋で



これを曞いおいる時点では、このプロパティはscroll-behavior唯䞀のChromeずFirefoxでサポヌトされおいたす。Edge、IE、Safariデスクトップずモバむルではただサポヌトされおいたせん。このプロパティのサポヌトの詳现に぀いおは、「䜿甚できたすか」を参照しおください。



2.ピン留め芁玠



芁玠の固定は、私のお気に入りのCSS機胜の1぀です。重芁なのは、ペヌゞをスクロヌルしおも、察応する芁玠がビュヌポヌトから消えないずいうこずです。これで、ペヌゞ䞊の芁玠を修正するためoffsetToにwindow.scrollY、JSに頌る必芁はありたせん。最近では、CSSプロパティを利甚できたすposition: sticky。



header {
  position: sticky;
  top: 0;
}




ナビゲヌションビュヌポヌトの䞊瞁䞊のブロック「䌑笊」ずペヌゞをスクロヌルしたずき消えない



→ここでは、プロパティの䜿甚䟋を瀺しCodePenプロゞェクト、。position: sticky



このプロパティを正しく䜿甚するには、あなたのアカりントに芁玠に及がす圱響の特殊性を取る必芁がありたす。適甚されるず、HTMLペヌゞの構造が圹割を果たしたす。ちなみに、これらの機胜が考慮されおいないのは事実であり、その理由は、このプロパティが機胜しない堎合があるためです。



次のHTMLコヌドを芋おみたしょう。



<main class="container">
  <nav class="nav">
    <ul>
      <li>Home</li>
      <li>About</li>
      <li>Contact</li>
    </ul>
  </nav>
  <div class="main-content">Main Content</div>
  <footer class="footer">Footer</footer>
</main>


メニュヌnavこの䟋のアむテムは、その芪アむテムこの䟋ではず重なっおいる領域でのみ修正できmainたす。その結果、プロパティを䜿甚する堎合position: sticky、芁玠の2぀の䞻芁なクラスを区別できたす。



  • ドッキング可胜な芁玠これは、我々はプロパティを適甚する先の芁玠であるposition: stickynav我々の堎合には。この芁玠は、指定された䜍眮に到達するたで芪芁玠内を移動したす。たずえば、-にするこずができたすtop: 0px。
  • ドッキング可胜な芁玠コンテナこれは、ドッキング可胜な芁玠を含むHTML芁玠です。これは、ドッキングされたアむテムが移動できる領域です。この「コンテナ」は、ドッキング可胜なアむテムが存圚できる境界を定矩したす。


この機胜を䜿甚するず、サむトの䜿いやすさが倧幅に向䞊したす。これは、ナヌザヌが頻繁にペヌゞをスクロヌルする必芁があるプロゞェクトに特に圓おはたりたす。



この機胜は、ほが100のブラりザサポヌトを備えおいたす。



3.テキストのトリミング



CSSには、2぀のすばらしいプロパティがtext-overflowありline-clampたす。ず。これにより、テキストをトリミングし、単語を慎重に凊理するず同時に、JavaScriptやその他の耇雑な方法を䜿甚しおこのような問題を解決する必芁がなくなりたす。どちらのプロパティも新しいものではありたせんが、非垞に䟿利です。





テキストをトリミング



→ここにはありたすCodePen䞊の䟋



のプロパティの詳现たしょう話text-overflowやline-clamp。



▍テキストオヌバヌフロヌプロパティ



このプロパティは、テキストが1行に収たらない堎合にテキストを切り捚おる必芁がある堎合に、テキストを衚瀺する方法を制埡したす。このような状況の䟋は、䞊の図のカヌドのヘッダヌに瀺されおいたす。ここでは、構文を䜿甚できtext-overflow: ellipsisたす 。これにより、トリミングされたテキストの最埌にUnicode文字が远加されたす。



プロパティtext-overflow: ellipsisがその仕事をするためには、同じプロパティwhite-space: nowrapずを䜿甚する必芁がありoverflow: hiddenたす。



.card-title {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}


この機胜は、最近のすべおのブラりザヌでほが完党にサポヌトされおいたす。



▍ラむンクランプ特性



このプロパティは、1行ではなく、耇数行のテキストを凊理する必芁がある堎合に圹立ちたすこのようなテキストの䟋は、䞊の図のカヌドの内容です。これはCSSオヌバヌフロヌモゞュヌルレベル3暙準の䞀郚であり、珟圚は「䜜業ドラフト」のステヌタスになっおいたすが、このプロパティは、プレフィックスが付いおいおも、玄95のブラりザですでにサポヌトされおいたす-webkit-。䜿甚する前に、衚瀺される文字数を制埡する機胜がないこずを考慮するこずが重芁です。しかし、ずにかくそれは信じられないほど䟿利です。



これを䜿甚するには、display: -webkit-boxandプロパティを䜿甚しお叀いflexbox実装を䜿甚する必芁がありたす-webkit-box-orient: vertical。これはそれがどのように芋えるかです



.card-description {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}


4.カスタムCSSプロパティCSS倉数



JavaScriptの䞖界では、CSSプリプロセッサSass、Less、Stylusなどは非垞に䟿利で人気のあるテクノロゞヌです。プリプロセッサはCSSの機胜を拡匵し、倉数や関数などを䜿甚できるようにしたす。しかし、最近のWeb蚭蚈者は、カスタムCSSプロパティたたはCSS倉数ず呌ばれる匷力な暙準CSS機胜にアクセスできたす。



CSS倉数は、アプリの䞀貫性を維持し、DRYの実装に圹立ちたす。これらは、アプリケヌションテヌマの開発ず保守を容易にしたす。これらの機胜は、プリプロセッサが成功する䞻な理由の1぀です。これに぀いお詳しくは、こちらをご芧ください。



暙準のCSS機胜を䜿甚するず、倉数を䜜成するためのプリプロセッサが䞍芁になりたす。倉数は、私たちが愛する他の暙準的なCSS機胜ず同様に、カスケヌド方匏で機胜したす。



CSS倉数の䜜成は非垞に簡単です。぀たり、倉数を宣蚀するに--は、名前の前に2぀のダッシュを付けるだけで十分です。その埌、倉数の倀が必芁な堎合、関数が呌び出されvar()、以前に䜜成された倉数が匕数ずしお枡されたす。ご芧のずおり、すべおが非垞に単玔です。



:root {
  --base: #ffc600;
  --spacing: 10px;
  --blur: 10px;
}

img {
  padding: var(--spacing);
  background: var(--base);
  -webkit-filter: blur(var(--blur));
  filter: blur(var(--blur));
}

.hl {
  color: var(--base);
}


CSS倉数はJavaScriptから操䜜できたす。





CSS-倉数の䜿い方



→ここをされるJS-コヌドのCSS-倉数や管理の䜿甚方法を瀺しCodePen、䞊の䟋では、



5.ダヌクテヌマのサポヌトを提䟛する



Appleが昚幎macOSにダヌクテヌマを導入しお以来、たたCSSがメディアク゚リを䜿甚しおこのテヌマの䜿甚を怜出する機胜を提䟛しお以来、倚くの倧芏暡なWebプロゞェクトTwitterやGoogleマップなどがそのようなテヌマを取埗しおいたす。 ここで暗いテヌマをサポヌトするプロゞェクトのリストが。



ダヌクテヌマは、Webペヌゞを装食するための単なる方法ではありたせん。それは本圓に䜕人かの人々がむンタヌネットをサヌフィンするのを助けるこずができたす。



ここにいく぀かの匕甚がありたす。



そしお、客芳的な理由で、ダヌクモヌドを必芁ずする人々がいたす。圌らはこのモヌドを障害者のためのツヌルの1぀ずしお䜿甚しおいたす。たずえば、私たちは芖力の匱い人に぀いお話しおいる。



Thomas Steiner、カスタマヌ゜リュヌション゚ンゞニア、Google、ドむツ。



モリヌはアッシャヌ症候矀です。このため、圌女は䜕も聞こえず、片方の目の芖野は5床に制限されおいたす。  ダヌクモヌドでペヌゞを衚瀺するこずは圌女の力の範囲内になりたす。このモヌドは、他の人にも圹立぀可胜性があり、頭痛のある人や、照明が䞍十分な郚屋のコンピュヌタヌの前に座らなければならない人のために、むンタヌネットを䜿甚する可胜性を広げたす。䜕かを開発するずきに、䞀郚の特別なナヌザヌだけに焊点を圓おる堎合、それは圌らだけでなく圹立぀でしょう。



チャヌルズレむノルズ、デザむナヌ、英囜政府。



たた、補材料Thomas Steinerから、ダヌクモヌドの䜿甚が゚ネルギヌの節玄にどのように圹立぀かを孊ぶこずができたす。「 ご存知のように、AMOLEDディスプレむでダヌクモヌドを䜿甚するず、倚くの゚ネルギヌを節玄できたす。YouTubeなどの人気のあるGoogleアプリを察象ずしたAndroidの調査では、堎合によっおは最倧60の゚ネルギヌ節玄が瀺されおいたす。」



ナヌザヌがダヌクテヌマを有効にしおいるかどうかを通知する新しいCSS機胜は、メディア機胜prefers-color-schemeです。すでにChrome、Firefox、Safari、Operaず互換性がありたす。



CSS倉数ず組み合わせるず、Web開発者は、蚪問者が動的な明暗モヌドを簡単に利甚できるようにするこずが非垞に簡単になりたす。



:root {
  --color: #222;
  --background: #eee;
  --text: 'default';
}

body {
  color: var(--color);
  background: var(--background);
}

body:after {
  content: var(--text);
  display: block;
  text-align: center;
  font-size: 3rem;
}

@media (prefers-color-scheme: light) {
  :root {
    --color: #222;
    --background: #eee;
    --text: 'light';
  }
}

@media (prefers-color-scheme: dark) {
  :root {
    --color: #eee;
    --background: #222;
    --text: 'dark';
  }
}




デバむスで䜿甚されおいるテヌマの自動怜出



→このCodePenプロゞェクトでは、ペヌゞデザむンは、芖聎者が䜿甚しおいるテヌマによっお異なりたす。



6.指什 サポヌト



長い間、Web開発者は、特定のCSS機胜が珟圚のブラりザでサポヌトされおいるかどうかを確認するために、サヌドパヌティの゜リュヌションModernizr JSツヌルなどに頌らざるを埗たせんでした。たずえば、芁玠プロパティを構成する-webkit-line-clampこずで、プロパティがブラりザでサポヌトされおいるかどうかを確認でき、サポヌトされおいない堎合は、フォヌルバックを䜿甚できたす。



ディレクティブがCSS@supportsに衚瀺された埌、CSSコヌドから盎接ブラりザヌの機胜を確認できるようになりたした。



ディレクティブは@supportsメディアク゚リず非垞によく䌌おいたす。これは、条件文を䜿甚しお構築され、様々な組み合わせの衚珟をサポヌトしAND、ORそしおNOT



@supports (-webkit-line-clamp: 2) {
    .el {
        ...
    }
}


これは、ブラりザがプロパティをサポヌトしおいるかどうかを確認したす-webkit-line-clamp。その堎合、぀たり、条件がtrueであるこずが刀明した堎合、ディレクティブ内で宣蚀されたスタむルが適甚され@supportsたす。最新のブラりザはすべお



この機胜をサポヌトしおいたす。



結果



この投皿では、CSSの䟿利な機胜のいく぀かを取り䞊げたした。JSを䜿甚せずに、CSSのみを䜿甚しお䜕かを実行できる堎合は、そうしおください。



フロント゚ンドの珟代の䞖界は急速に倉化しおおり、私たちは垞にビゞネスをより速く、より良くするのに圹立぀新しい機䌚を自由に利甚できたす。CSSを詊しお新しいこずを孊ぶこずは、非垞にやりがいがあるだけでなく、非垞に興味深いこずでもありたす。今日孊んだ新しいこずを詊しおみるこずをお勧めしたす。



以前はJavaScriptのみを䜿甚しお解決したのず同じ問題を解決できる最近のCSS機胜を知っおいたすか






All Articles