2 ポイント 投稿者 GN⁺ 2025-04-28 | 1件のコメント | WhatsAppで共有
  • CSS Zen Gardenは、同じHTML文書でもCSSベースのデザインだけでまったく異なる視覚体験になり得ることを示すデモプロジェクト
  • デザイン一覧からスタイルシートを選ぶと、HTMLはそのままに外部CSSだけが切り替わり、ページのレンダリングが変わる
  • 参加者はサンプルのHTML/CSSをダウンロードしてローカルで作業するが、提出時に変更できるのはスタイルシートのみ
  • 完成したCSSファイルと関連アセットを自分のWebサーバーにアップロードし、リンクで提出する。選ばれた作品はCSS Zen Gardenのサーバーに配置される
  • 実験的な機能より実用的なCSSが優先され、検証可能なCSSと、IE9+および最新のChrome・Firefox・iOS・Androidブラウザでの動作が求められる

同じHTMLをまったく違って見せるCSS実験

  • CSS Zen Gardenは、CSSの表現力を示すためのデモ
  • ユーザーはデザイン一覧から好きな項目を選び、現在のページにそのスタイルシートを適用できる
  • 中核となる制約は、HTMLを変更せず外部CSSファイルだけを差し替える点にある
    • 同じ文書構造を保ったまま、視覚的な結果だけが変わる
    • デザインとコーディングが、Webの視覚的可能性をどこまで広げられるかを示す
  • 参加とインスピレーションを促し、CSSで実際に実装可能な成果を共有する学習用プロジェクトと見ることができる

参加方法と提出フロー

  • 参加者は強いビジュアルデザインとCSSスキルをもとに、このページを再デザインする
    • サンプルファイルにはコメントがあり、CSS初心者も出発点として活用できる
    • 高度なチュートリアルとヒントはCSS Resource Guideで提供されている
  • 作業はサンプルのHTMLCSSをダウンロードし、ローカルコピーで進められる
  • 提出するには、完成したCSSファイルと関連アセットを自分が管理するWebサーバーにアップロードしたうえで、提出リンクから送る必要がある
    • 未完成の作品の提出は推奨されない
    • 選ばれた提出物はCSS Zen Garden側がダウンロードしてサーバーに配置する
  • 参加の報酬は、認知、インスピレーション、そしてCSSの可能性を示す共有資料への貢献にある

CSS要件とライセンス

  • 要件は最新の実験的機能よりも、機能的で実用的なCSSに重点が置かれている
    • 可能な箇所ではCSS 1 & 2の使用が好まれる
    • CSS 3 & 4は広くサポートされている要素に限定するか、強力な代替策を用意する必要がある
    • CSSは検証を通過する必要がある
    • 最新のユーザーエージェントとモバイル環境まで考慮すると、すべてのプラットフォームでピクセル単位に同一のレイアウトを実現するのは難しい場合がある
    • デザインは少なくともIE9+、最新のChrome、Firefox、iOS、Androidブラウザで動作する必要がある
  • 提出物は独創的なアートワークでなければならず、著作権法を尊重する必要がある
    • 不快感を与え得る素材は最小限にすべき
    • 庭園関連のデザインはすでに十分あるため、独特で興味深い視覚テーマが推奨される
  • グラフィックの著作権は提出者に残るが、CSSはサイトと同じCreative Commons BY-NC-SA 3.0ライセンスで公開し、他の人が学習に活用できるようにする必要がある

1件のコメント

 
GN⁺ 2025-04-28
Hacker Newsの意見
  • これが作られていた時期にWeb開発をしたことがない人には、見えにくい文脈がある。
    CSS以前は、レイアウトを作るためにtable要素をグリッドのように乱用し、画像を細かく切って各セルに入れていた。今ではその程度のことは覚えられているが、当時のCSSへの反発はかなり忘れられているように思う。
    現状維持に満足してCSSを学びたがらないWeb開発者は多く、「CSSでは退屈で四角いデザインしか作れない」という神話もしぶとく残っていた。Dave SheaがCSS Zen Gardenで見事なデザインを集めて見せたことで、その主張は事実上終わった。あまりに完勝だったので、今ではそういう論争があったこと自体まで忘れられているのが面白い。

    • 初期のCSSは今よりはるかに貧弱だった。border-radiusでさえ2011年ごろになってようやく入ったし、比較的シンプルなhttps://90s.dev/のようなサイトでも、現代のCSSでhttps://90s.dev/style.cssを見ると約420行が必要になる。
      ネストや、流れを変えた:hasをかなり使ってもそうだ。当時のCSSには根本的な限界があったため、直感的には作れない形を実装するために、CSSとHTML構造の両方を変えなければならなかった記憶がある。
    • 初期にtableを使っていた理由は、複数ブラウザでCSSだけできちんと合わせるのが悪夢だったからだ。金のかかる悪夢で、HTMLを頻繁に作り直す余裕のある資金潤沢なスタートアップならまだよかった、というだけだった。
    • 正確な時期はぼんやりしているが、出始めのCSSが、より複雑なレイアウトを作るには不十分だった時代があった。flexboxもなく、gridなど言うまでもなかった。
      CSS Zen Gardenは、その時点でCSSでどこまで可能かを示すための存在だったと思う。
    • table要素でグリッドを作ることの何が実際それほど悪かったのか、理解したことがない。一部のアプリケーションでだけ意味のある「セマンティックHTML」の話を除けば、特に思い当たらない。
    • CSSへの反発は覚えていないが、フォントのスタイリングにはCSSを少し使いつつ、レイアウトにはtableを使うサイトが一般的だったのは覚えている。それは反発ではなく実用性だった。
      安定して予測可能なグリッドが必要ならtableレイアウトを使ったし、特に密で複雑なレイアウトではなおさらだった。ナビゲーションだけがtableレイアウトという場合もよくあり、当時の目標はピクセルパーフェクトだった。
      2000年ごろのspacer要素を覚えているだろうか? 結局定着せず、ピクセルGIFのほうが一般的で予測しやすかった。
      2014年にflexboxが普及するまで、CSSのfloatレイアウトは皿回しのようなものだった。空のdivとコンテンツ入りのdivの挙動が違って苦しめられた。その時間は取り戻せないが、少なくとも報酬はもらった。
      初期のCSSが素晴らしい「Zen Garden」的レイアウトを簡単に与えてくれた、という考えは私の経験とは合わない。ただし私は、面白いアートサイトではなく情報メディアサイトを作っていた。
  • このサイトは古い。そして、それは良い意味でだ。
    2000年代の私にとってカルチャーショックで、Microsoft ASP.NETから離れてLinuxでアプリを作るようになった。inline styleパラメータを持つ「server controls」が完全に間違ったやり方、いわば「反インターネット的」なやり方だと気づいた。
    Dojo JSを作ったAlex Russellがあるカンファレンスでそうした視点を示していて、Microsoftのチャネル経由で技術ニュースに触れていた間に、自分がどれほど多くの情報を見逃していたのかに衝撃を受けた。
    数年間、私の道具はWeb.py、HTML、JS、CSS程度で、その後jQuery、Backbone、Underscoreが来た。そしてReactとTypeScriptが、また新しい「フルスタック」を鈍重なものにしたように感じる。

    • そういうアプリをASP.NETで作れなくしていたものが何だったのかは分からない。ASP.NETがそれを妨げていたわけではなく、スタイルシートを作ったりJSファイルを分離したりすることもできた。
      皮肉にも、古いものがまた新しいものになった。Next.js方面ではview stateを再発明しているし、Tailwindはinline stylingを、shadcnはReactコンポーネントを使っていて、ほぼ一周して戻ってきたようなものだ。
    • 今はSvelteがあり、少し「賢い」フルスタックと見なせる。
    • それはまだオンラインに残っている。古い遺物に近いが、https://www.ajaxtoolkit.net/で見られる。drag panelのないエンタープライズソフトウェアなどなかった。
      しばらくはセマンティックなマークアップとCSSが先行していたが、最近のトレンドは確かめる気すらなくなった。「JavaScriptの中のHTML」(JSX)あたりで関心を失った。
    • ASPとPHPから始めたが、ASP.NETはVisual Studio開発者が粗雑なWebアプリを作るのを助ける性格が強く、広い意味でのWebには合っていなかった。
      Linuxへ移る必要もなかった。IT部門がLinuxデスクトップを許可していなかったので、Windowsですべて作り、WindowsとLinuxサーバーの両方にデプロイしていた。
  • CSS Zen Gardenの核心は、セマンティックHTMLを最大限に活用すれば、表現とコンテンツを分離し、完全に独立して扱えるという点だったように感じる。
    今でもZen Garden程度までは可能だが、実際にはCSSの限界の中で動いている。「CSSでこれができるから、こういうデザインを作る」に近く、「こういうデザインが欲しいから、このCSSを使う」という流れではない。
    DOMを直接変えなければ可能にならないスタイル選択も多く、純粋なCSSではできないことがある。W3Cの議論でも、「divをもう1つラップすればいいのに、なぜ新しいCSSプロパティが必要なのか」といった調子を見たことがある。
    画像の挿入や差し替えは簡単だが、スタイリング可能なSVGの差し替えは、SVGノードをHTMLに直接入れなければならないので不可能だ。結局、HTMLとJavaScriptのレベルで表現とコンテンツ構造の判断を混ぜることになり、単純なデザイン変更でもスタック全体に手を入れることになる。

    • CSSコミュニティの約束は、常に構造と表現を分離できるというものだった。
      GUIを30年書いてきて、今ではその線を引く場所が間違っていると確信している。代わりに意図を隔離すべきだ。私のプロジェクトのCompositesがその役割を担っていて、来週公開できるのをとても楽しみにしている。
    • ここでXSLTの登場。
    • 逆に、最近のCSSは非常に強力なので、空中楼閣ではなくメディアの特性を考慮した多くのデザインは、CSSとHTMLだけでもきれいに実装できる。
  • Zen Garden や Eric Meyer のような資料で CSS を学んだ立場からすると、Tailwind のような現代の CSS ツールはアンチパターンのように見える

    • 完全に同意する。Tailwind には本当に問題が多い。
      HTML がスタイル情報で覆い尽くされる。HTML を読むというのはコンテンツと意味を見ることであるべきで、pl-16 pr-8 bg-olive-500 text-gray-700 が「たぶんカードヘッダーだろう」と解読することではないはずだ。
      最近は人々が HTML を読まないとも言えるが、こうしたフレームワークを使う開発者が HTML をひどい混沌にしてしまったら、誰が読むのか。フレームワークのクラスが多すぎると、HTML にはコンテンツよりノイズのほうが多くなり、だから HTML を読むことがなくなり、また開発者がさらに多くのクラスやスタイルを積み上げるという自己強化サイクルになる。
      Web 開発者はスタイルの重複もひどい。.button のようなものの代わりに、text-white rounded bg-gray-aaa のような組み合わせが何百か所にも散らばる。Tailwind の問題なのか開発者の問題なのかは分からないが、大規模プロジェクトでは、似た UI 要素全体のスタイルを変えようとすると、どの要素のどの inline スタイルを探せばいいのかというモグラたたきになる。
    • そういう CSS ツールは、Web 開発を場当たり的に学んだ人たちには魅力的に見えるようだ。最初は頭の中のデザインを作りたくて、「ヘッダー、テキスト、画像」から始め、「どうやって中央揃えにする?」「色はどう変える?」「要素間の余白は?」というふうに学んだ。
      そうすると CSS のアイデアの道具箱はすぐにできるが、CSS をうまく動かすための細部を見落としてしまう。position: absolutetransform で奇妙な問題を回避することはできたが、ブロック整形コンテキストやボックスモデルの細かな部分は知らなかった。
      CSS の知識が、いい加減な CSS 知識の上に貼った絆創膏でしかないなら、燃料を燃やしているだけだ。そのときは、組み合わせ可能なスタイルの道具箱を持ち込み、多くの CSS の落とし穴を避けさせてくれるやり方が魅力的に見えることもある。
      自分の考えを変えたのは、HTML/CSS を基礎から教える短いオンライン書籍形式のシリーズだった。すべてを第一原理から説明し、なぜそうなっているのかを教えてくれたのであって、「div を中央揃えする 10 の方法」だけを投げて終わりではなかった。午後に全部読んで、Web 開発の見方が変わったのだが、本の名前がどうしても思い出せない。「display: block は Word 文書のようなもので、display: flex は人々が期待する挙動に近い」という一文が特に記憶に残っている。
    • Tailwind のコードは本当に見た目が悪い。嫌いだ。登場したころ大規模サイトをいくつも手がけていたが、CSS ファイルの数行とクラス名 1 つの代わりに、数千ページごとに何百ものスタイル属性を付けるという発想は、CSS の利点の半分を逆戻りさせる大きな後退に見えた。
    • 数百人規模の会社の標準としてはうまく機能すると思う。ランディングページであらゆるものを一回限りでスタイリングしたいなら、そうすればいい。
  • Tailwind と CSS-in-JS の暗黒時代に差す、少しの光のようだ。
    20 年ほど前に CSS Zen Garden がどれほど重要だったかは、今では実感しにくい。

    • CSS-in-JS は Styled Components や Emotion のやり方のように、主にコード構成のための解決策だ。CSS の動作の仕方を根本的に変えるものではない。
    • CSS を好きにさせてくれたのは確かだ。だからといって、大規模プロジェクトで Tailwind がなぜ魅力的なのか理解できなくなったわけではない。
    • CSS を初めて学んだとき、彼らの出した本を買った。本当に別の時代だった。
  • 昔、このサイトは自分にものすごい影響を与えた。
    知らない人のために説明すると、同じ HTML コンテンツに対して、CSS と画像だけでデザインを投稿できた。特に印象深かった例は次のとおり。
    https://csszengarden.com/202/
    https://csszengarden.com/189/
    https://csszengarden.com/177/
    https://csszengarden.com/136/
    https://csszengarden.com/206/
    スクロールすると position: fixed の剣が「ページを中央で切り裂く」デザインもあったが、今は一覧にはないようだ。もう 1 つは、ページ最上部が海面で、下にスクロールすると海中の底にタコ、潜水艦、ダイバーのいずれかがいるデザインだったと記憶している。

    • 自分も同じだ。あのデザインを見ると、今のWeb デザインがどれほど退屈になったかを思い出す。
  • そこにデザインを 2 つ載せていて、今でも CSS の再利用許可を求めるメールを受け取る

  • 今日HNでCSS Zen Gardenを見かけて、本当に懐かしかった。あの頃はよかった。
    でも、そろそろ少し愚痴らせてほしい。
    Tailwindやそれに類するCSS「フレームワーク」、そして現代のソフトウェア開発全般でいちばん心配なのは、基盤となるシステムを理解していないことをだんだん誇らしげに捉えるようになっている点だ。
    Tailwindは手早く表面的な解決策を与えてくれる。ユーティリティクラスをページに貼り付ければ、CSSが実際にどう動くのかを学ばなくても「十分それっぽく見える」結果が出る。HTMLがコンテンツよりもCSSクラスのほうが多い混沌としたものになることは気にしない。
    「どう動くかなんて何が重要なの?きれいなページができたじゃないか。成功だ!」という態度だ。
    これはTailwindだけの問題ではなく、業界全体のより大きな流れだ。無知を称賛し、本当の理解を積み上げないまま結果だけを急ぐ。
    いつから、知らないことが自慢になったのか。深さや熟練が任意のもの、さらには望ましくないものとして扱われるのは悲しいことだ。

    • たいていのHTMLがどれほどひどいかを見ると衝撃を受ける。さっきTwitterを見たら、自分のタイムライン上の投稿1つは、テキスト1段落、画像1つ、リンク付きアイコンが約10個あるだけなのに、HTMLだけで254行、21.8kBあり、ネストしたdivが104個、クラスが860個以上あった。
      テキストコンテンツの文字数よりクラス数のほうが多く、クラス名だけで約9kBある。それがタイムライン上のすべての投稿ごとに繰り返されている。
      divを数個、クラスを数個、アイコンごとに1つのクラス、CSSを数行で十分なはずだ。本当に、投稿1つのクラス名の文字数より少ない文字数で、タイムラインのすべての投稿をスタイリングできる。
      プロの開発者たちがどうやってこんなにも馬鹿げた肥大化したHTMLを作れるのか理解できない。
    • ソフトウェア開発とは、時間とともに抽象化レイヤーを積み上げていくことだ。アセンブリはどれくらい得意?
    • 言いたいことは分かるが、Tailwindには当てはまらないと思う。TailwindのクラスはCSSプロパティに直接対応しているので、CSSを理解していなければ実際には大したことはできない。
  • 過去から飛んできたような感じだ。CSS Zen Gardenは好きだったが、その目標と哲学は、Webサイトの主な目的が文書の提供だった世界に合っていた。
    リッチメディアの世界が、2000年代半ば頃にそのWebのビジョンを置き去りにしたように思う。

    • リッチメディアというより、Webが100%マーケティング中心に変わったのだと思う。下へスクロールしても広告ばかりだ。
    • それは深刻なダウングレードだ。
      https://blog.danieljanus.pl/2019/10/07/web-of-documents/
    • 「Webサイトの主な目的が文書の提供だった世界」と言うが、私たちはまだその世界に住んでいる。皮肉ではない。
      いくつかの地図アプリを除けば、Webの大半は今でも何かを読むことであり、これほど多くの余計なものは必要ない。開発者たちが単純さより複雑さを好むから、より複雑になっているだけだ。
    • 「現代メディア」は本当にリッチなのか?情報密度とS/N比はむしろ悪くなっていると思う。
  • Gardenが戻ってきてうれしい。CSSベースのWebデザインが最先端で、人々が深くネストしたtableの代わりに深くネストしたdivを使い始めていた頃、CSS Zen GardenとSpoonoは私のお気に入りのWebサイトだった。
    本もよかった。