ホームページ  >  記事  >  ウェブフロントエンド  >  Facebook 開発者が実際に使用している隠れた CSS トリック

Facebook 開発者が実際に使用している隠れた CSS トリック

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-31 02:17:29734ブラウズ

The Hidden CSS Tricks That Facebook Developers Actually Use

Facebook が、何百万ものデバイスで完璧に動作する、これほどスムーズで応答性の高いインターフェイスをどのようにして作成しているのか疑問に思ったことはありませんか?彼らの技術スタックは複雑ですが、最も印象的な UI 機能の多くは、目立たないように巧妙な CSS テクニックに依存しています。 Facebook の開発者がプラットフォームを構築するために活用している隠れた宝石のいくつかを見てみましょう。

1. コンテンツの可視性: パフォーマンスの変革者

Facebook の最大の課題の 1 つは、ブラウザのパフォーマンスを低下させることなく、何千もの投稿、コメント、インタラクションをレンダリングすることです。彼らの秘密兵器?コンテンツ可視性プロパティ:

.feed-post {
  content-visibility: auto;
  contain-intrinsic-size: 0 400px;
}

この一見単純な宣言は、ブラウザーにオフスクリーン コンテンツのレンダリングをスキップするよう指示し、最初のページ読み込み時間を大幅に短縮します。 contains-intrinsic-size は推定の高さを提供し、ユーザーがスクロールするときにレイアウトが移動するのを防ぎます。 Facebook がこの技術を導入したことにより、重いフィード後のレンダリング時間が最大 50% 短縮されたと報告されています。

2. ブランドの一貫性を保つための可変フォント

Facebook のタイポグラフィは、さまざまなウェイトやサイズにわたって一貫して洗練されているように見えますが、複数のフォント ファイルは読み込まれていません。代わりに、カスタム プロパティを持つ可変フォントを使用します:

:root {
  --fb-font-weight: 400;
  --fb-font-stretch: 100%;
}

.dynamic-text {
  font-variation-settings: 
    'wght' var(--fb-font-weight),
    'wdth' var(--fb-font-stretch);
  transition: font-variation-settings 0.3s ease;
}

.dynamic-text:hover {
  --fb-font-weight: 600;
}

このアプローチにより、バンドルのサイズを小さく保ちながら、フォントのウェイトと幅の間でスムーズなアニメーションが可能になります。それは、リアクションアニメーションとコメント強調効果で特に顕著です。

3. コンテナクエリ: レスポンシブデザインの秘密

Facebook の UI コンポーネントは、小さなモバイル画面から超ワイド モニターまで、どこでも動作する必要があります。彼らの解決策は?コンテナクエリ:

.post-card {
  container-type: inline-size;
  container-name: post;
}

@container post (min-width: 700px) {
  .post-content {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 1rem;
  }
}

@container post (max-width: 699px) {
  .post-content {
    display: flex;
    flex-direction: column;
  }
}

これにより、コンポーネントはビューポートではなく親コンテナのサイズに応答できるようになり、メイン フィード、モーダル、サイドバーなど、あらゆるコンテキストで機能する真のモジュール式デザインが可能になります。

4. スクロールスナップ錯視

Facebook のストーリーとカルーセル コンテンツがいかにスムーズに所定の位置に収まるかに気づいたことがありますか?彼らは、いくつかの追加のトリックを使用してスクロール スナップの位置合わせを使用します。

.story-container {
  scroll-snap-type: x mandatory;
  scrollbar-width: none; /* Hide scrollbar in Firefox */
  -ms-overflow-style: none; /* Hide scrollbar in IE/Edge */
}

.story-container::-webkit-scrollbar {
  display: none; /* Hide scrollbar in Chrome/Safari */
}

.story-item {
  scroll-snap-align: start;
  scroll-snap-stop: always;
  flex: 0 0 auto;
}

これをタッチ ジェスチャ処理と組み合わせることで魔法が生まれます。

.story-container {
  overscroll-behavior-x: contain;
  touch-action: pan-x pinch-zoom;
}

これにより、ブラウザーであっても、ストーリーをスクロールするときに完璧なアプリのような感覚が生まれます。

5. 目に見えないパフォーマンスの向上

Facebook は、アニメーション要素用の新しいスタッキング コンテキストを作成することで、GPU アクセラレーションを戦略的に使用しています。

.animated-element {
  transform: translateZ(0);
  will-change: transform;
  backface-visibility: hidden;
}

ただし、これらのプロパティは必要な場合にのみ適用するように注意しています。

.animated-element {
  @media (prefers-reduced-motion: no-preference) {
    transform: translateZ(0);
    will-change: transform;
  }
}

これにより、ユーザーの好みとデバイスの機能を尊重しながら、スムーズなアニメーションが保証されます。

6. テーマ管理のカスタム プロパティ

Facebook のダーク モードの実装は、HSL カラーを使用した CSS カスタム プロパティを使用することで、特に賢明です。

.feed-post {
  content-visibility: auto;
  contain-intrinsic-size: 0 400px;
}

このアプローチにより、コントラスト比を維持しながら、動的な不透明度の調整とテーマ間のスムーズな移行が可能になります。

7. アスペクト比のトリック

メディアを多用したコンテンツの場合、Facebook は最新の CSS を使用してレイアウトを変更せずにアスペクト比を維持します。

:root {
  --fb-font-weight: 400;
  --fb-font-stretch: 100%;
}

.dynamic-text {
  font-variation-settings: 
    'wght' var(--fb-font-weight),
    'wdth' var(--fb-font-stretch);
  transition: font-variation-settings 0.3s ease;
}

.dynamic-text:hover {
  --fb-font-weight: 600;
}

この進歩的な拡張アプローチにより、古いブラウザに適切にフォールバックしながら、すべてのブラウザで一貫したレイアウトが保証されます。

結論

これらのテクニックは単独では単純に見えるかもしれませんが、その真の力は Facebook がそれらをどのように組み合わせて戦略的に適用するかによって生まれます。重要なポイントは次のとおりです:

  1. パフォーマンスの最適化はユーザーには見えないが、指標では目立つようにする必要があります
  2. 段階的な機能強化により、すべてのプラットフォームで機能が動作するようになります
  3. 最新の CSS 機能は、多くの JavaScript ソリューションを置き換えることができます
  4. GPU アクセラレーションとコンテンツ可視性を戦略的に使用すると、パフォーマンスが大幅に向上します
  5. コンテナ クエリとカスタム プロパティにより、真にモジュール化された保守可能なコードが実現します

これらのテクニックは、パフォーマンスの監視を適切に行い、慎重に使用した場合に最も効果的であることに注意してください。 Facebook の成功は、これらの CSS 機能を使用するだけではなく、最大の効果を得るためにいつ、どこに適用するかを正確に知っていることからもたらされます。

以上がFacebook 開発者が実際に使用している隠れた CSS トリックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。