Tailwind UI向けにここ数ヶ月取り組んできた、美しく新しいエージェンシーウェブサイトテンプレート「Studio」をリリースしました。
これはNext.js、MDX、そしてもちろんTailwind CSSで構築されており、新しいNext.jsのApp Routerを使用した最初のテンプレートです。
エージェンシー向けテンプレートのデザインは興味深いプロジェクトです。なぜなら、クリエイティブエージェンシーは通常、自社のウェブサイトで非常に派手でオーダーメイドのアイデアを披露するため、テンプレートを使用することは、自社の能力を示すという目標から考えると、少し奇妙に感じられるからです。
そこで、実際に人々に役立つように、2つの目標を念頭に置いてこれに取り組みました。
- 派手なエージェンシーサイトで見かけるクールなことを人々に教える — 私は常に、私たちのテンプレートは単なるテンプレートとしてだけでなく、教育リソースとしても(そうでなくても)価値があると信じてきました。そのため、このテンプレートを、この種のサイトで見かけるクールなインタラクティブおよびアニメーションの詳細をどのように構築するかを示す機会として活用したいと考えました。
- デザインを販売しないエージェンシー向けに設計する — エンジニアリング作業にのみ焦点を当てているエージェンシーは多く、多くの場合、これらの企業はデザイン面で目立つことに苦労しています。このテンプレートを、デザインワークのスクリーンショットなどに頼らなくても見栄えがするように設計し、コードに焦点を当てているエージェンシーが自社のサイトの出発点として使用できるようにしました。
私たちが考え出したものは、これらの2つの目標を達成できたと思いますし、すべてがどのように実現したか本当に誇りに思っています。
いつものように、ライブプレビューで完全な体験をご確認ください。ブラウザで実際に見てみないと本当に良さがわからないクールなディテールがたくさんあります。
楽しいアニメーション
エージェンシーのウェブサイトの暗黙のルールの1つは、派手でなければならないということです。マウスカーソルを完全に置き換えたり、サイト全体をWebGLでレンダリングしたりするようなことはしませんでしたが、可能な限りアニメーションとインタラクティビティを上品に導入する機会を探しました。
たとえば、スクロールトリガーによるエントランスアニメーションを簡単に行えるように、Framer Motionのいくつかの機能を中心に、軽量で宣言的なコンポーネントベースのAPIを構築しました。
これらのタイプのアニメーションのオーサリング体験は非常に素晴らしいものになりました。FadeIn
またはFadeInStagger
コンポーネントでフェードインさせたいものをラップするだけで、準備完了です。
function Clients() { return ( <div className="mt-24 rounded-4xl bg-neutral-950 py-20 sm:mt-32 sm:py-32 lg:mt-56"> <Container> <FadeIn className="flex items-center gap-x-8"> <h2 className="font-display text-center text-sm font-semibold tracking-wider text-white sm:text-left"> We’ve worked with hundreds of amazing people </h2> <div className="h-px flex-auto bg-neutral-800" /> </FadeIn> <FadeInStagger faster> <ul role="list" className="mt-10 grid grid-cols-2 gap-x-8 gap-y-10 lg:grid-cols-4"> {clients.map(([client, logo]) => ( <li key={client}> <FadeIn> <Image src={logo} alt={client} unoptimized /> </FadeIn> </li> ))} </ul> </FadeInStagger> </Container> </div> );}
また、ロゴにも素敵な小さなアニメーションを追加しました。ホバーするとマークが単色で塗りつぶされるものです。
この小さなディテールは小さく見えますが、興味深いことに、クライアントサイドナビゲーションなしでは実際には実行できません。なぜなら、ロゴをクリックしてホームページに戻るとアニメーションが再実行されるからです。Next.jsのようなフレームワークを使用することで、URLが変わっても、ホバー中にロゴを塗りつぶした状態を維持でき、ずっと快適に感じられます。
メニュードロワーのアニメーションも非常に素晴らしく、開くとページ全体が下に押し下げられます。
よく見ると、ロゴとボタンも単純に色が変わるだけではありません。実際には、スライドダウンするシートの位置によって正確に制御されており、シートの端がロゴと交差しているとき、ロゴは実際には部分的に白と部分的に黒になっています。
私が本当に気に入っているもう1つのディテールは、ケーススタディページの画像用に考案したインタラクションです。
サイト全体をモノクロに感じさせたかったのですが、常にモノクロ画像を表示するのは適切ではないと感じました。そこで、画像を最初はモノクロで表示し、スクロール時に画像が画面の中央に近づくにつれて彩度がアニメーションで戻ってくるという処理を考案しました。また、ホバー時にはフルカラー画像を表示します。
また、前庭動眼反射障害を持つ人々や、これらの種類の大規模なアニメーションに敏感な人々に配慮した方法で、これらのアニメーションをすべて実装するように注意しました。Framer MotionのuseReducedMotion
フックとTailwindのmotion-safe
バリアントを使用して、ナビゲーションメニューのアニメーションを条件付きで無効にしたり、スクロール駆動のエントランスアニメーションを不透明度のみに制限して、画面上で物が動かないようにしたりしています。
開発者中心のケーススタディとブログワークフロー
Studioには、ケーススタディとブログ記事の両方のサポートが含まれており、他のテンプレートを使用したことがある方ならお察しの通り、MDXをプロジェクトに統合する口実としてこれを利用しました。
こちらは、基本的なケーススタディがどのようなものかの例です。主にMarkdownで記述され、一般的なメタデータと、コンテンツに混在するカスタムコンポーネントのサポートが含まれています。
import logo from "@/images/clients/phobia/logomark-dark.svg";import imageHero from "./hero.jpg";import imageJennyWilson from "./jenny-wilson.jpeg";export const caseStudy = { client: "Phobia", title: "Overcome your fears, find your match", description: "Find love in the face of fear — Phobia is a dating app that matches users based on their mutual phobias so they can be scared together.", summary: [ "Find love in the face of fear — Phobia is a dating app that matches users based on their mutual phobias so they can be scared together.", "We worked with Phobia to develop a new onboarding flow. A user is shown pictures of common phobias and we use the microphone to detect which ones make them scream, feeding the results into the matching algorithm.", ], logo, image: { src: imageHero }, date: "2022-06", service: "App development", testimonial: { author: { name: "Jenny Wilson", role: "CPO of Phobia" }, content: "The team at Studio went above and beyond with our onboarding, even finding a way to access the user’s microphone without triggering one of those annoying permission dialogs.", },};export const metadata = { title: `${caseStudy.client} Case Study`, description: caseStudy.description,};## OverviewNoticing incredibly high churn, the team at Phobia came to the conclusion that, instead of having afundamentally flawed business idea, they needed to improve their onboarding process.Previously users selected their phobias manually but this led to some users selecting things theyweren’t actually afraid of to increase their matches.To combat this, we developed a system that displays a slideshow of common phobias duringonboarding. We then use malware to surreptitiously access their microphone and detect when theyhave audible reactions. We measure the pitch, volume and duration of their screams and feed thatinformation to the matching algorithm.The next phase is a VR version of the onboarding flow where users are subjected to a series ofscenarios that will determine their fears. We are currently developing the first scenario, workingtitle: “Jumping out of a plane full of spiders”.## What we did<TagList> <TagListItem>Android</TagListItem> <TagListItem>iOS</TagListItem> <TagListItem>Malware</TagListItem> <TagListItem>VR</TagListItem></TagList><Blockquote author={{ name: "Jenny Wilson", role: "CPO of Phobia" }} image={{ src: imageJennyWilson }}> The team at Studio went above and beyond with our onboarding, even finding a way to access the user’s microphone without triggering one of those annoying permission dialogs.</Blockquote><StatList> <StatListItem value="20%" label="Churn rate" /> <StatListItem value="5x" label="Uninstalls" /> <StatListItem value="2.3" label="App store rating" /> <StatListItem value="8" label="Pending lawsuits" /></StatList>
このテンプレートのすべてのタイポグラフィスタイルは完全にカスタムであり、今回はこれまでとは少し異なるアプローチを取りました。MDXのカスタムコンポーネントとタイポグラフィスタイルが衝突するのを避けるために複雑なCSSを大量に記述する代わりに、Markdownコンテンツのチャンクをラッパー要素でラップできるようにするremark-rehype-wrap
という小さなremarkプラグインを作成しました。
これにより、プレーンなMarkdownコンテンツであるものはすべてtypography
クラスでラップできますが、ドキュメント内のカスタムコンポーネントは、ツリーのそれらの部分を無視するようにCSSを作成しようとするのではなく、単にラップしないようにすることができます。
どちらのアプローチも完全に機能しますが、常に新しいアイデアを試して、何を学べるかを確認するのは楽しいものです。CSSに今後導入される新しいスタイルクエリ機能をベースにしたソリューションが将来どのようなものになるかにも興味があります。
というわけで、これがStudioです!ダウンロードして、分解して、何か新しいトリックを学べるか試してみてください。
他のすべてのテンプレートと同様に、1回限りの購入Tailwind UI all-accessライセンスに含まれています。これは、Tailwind CSSに関する私たちの活動をサポートし、今後何年も素晴らしいものを構築し続けることを可能にする最良の方法です。