home about projects profile
系統與網站開發 2026
女同天菜分類器
// SYS 官方專案 現場展覽

女同天菜分類器

最喜歡當女同ㄌ

by lesbian-is-good

// project_overview

根據照片選擇你心目中的女同志天菜!

// tech_stack
vibecoding web
// keywords
# wlw # web # vibecoding # lesbian
幫這個專案投票!
// project_details

🏳️‍🌈 什麼是女同志?

給第一次認識這個詞的你


她們是誰

女同志(Lesbian),指的是對女性產生情感與愛慕的女性。

這不是選擇,不是流行,也不是階段。
這是一種真實存在的情感傾向,就像異性戀一樣自然。


常見的誤解

誤解 事實
「只是還沒遇到對的男人」 性向不因關係而改變
「一定要有人扮演男生」 兩個人都是女生,不需要誰「當男的」
「這是一時的叛逆」 性向是穩定的自我認同,不是情緒或叛逆
「出櫃就是要讓所有人知道」 出不出櫃、跟誰說,是每個人自己的選擇與步調

T、婆、不分——圈內的多元樣貌

女同志社群裡,有些人會用這些詞描述自己的性別氣質與偏好,但這不是必填欄位:

  • T(Tomboy):外表或氣質偏中性、陽剛
  • 婆(Po):外表或氣質偏女性化
  • 不分:不特別傾向任何一側,或不在乎這個分類

很多人不套用任何標籤,標籤是工具,不是框架。


在台灣

台灣於 2019 年 成為亞洲第一個同婚合法化的國家。
法律是起點,但日常生活中的理解與尊重,需要每一個人一起建立。


💬 你不需要完全理解,才能給予尊重。

💻 天菜分類器是怎麼做的?

一個網頁遊戲背後的技術故事


三種語言,一個網頁

所有你看到的這個網頁,都只用三種東西組成——

🧱 HTML 骨架

負責「放什麼東西、放在哪裡」。

按鈕、圖片、文字、每一個畫面,都是 HTML 寫出來的結構。

<button class="btn btn-yes">我的菜 💘</button>

🎨 CSS 外觀

負責「長什麼樣子」。

顏色、字型、圓角、陰影、動畫,全部由 CSS 控制。

/* 手繪風按鈕:粗邊框 + 偏移陰影 */
.btn {
  border: 3px solid #1a1a1a;
  box-shadow: 5px 5px 0px #1a1a1a;
  border-radius: 50px;
}

⚙️ JavaScript 邏輯

負責「做什麼事」。

點了按鈕要發生什麼、照片怎麼切換、票數怎麼記錄,全是 JS 的工作。

// 點「我的菜」→ 記錄票數、卡片向右飛出
function vote(choice) {
  if (choice === 'yes') recordVote(photo.id, userType);
  card.classList.add('anim-exit-right');
}

照片怎麼存進去的?

你把照片拖進網頁的瞬間,瀏覽器做了這件事:

你的照片檔案
    ↓ FileReader API 讀取
base64 字串(文字形式的圖片)
    ↓ 存入 localStorage
瀏覽器記住了,重新整理也不消失

base64 是一種把任何檔案(圖片、音樂)轉成純文字的方式。

文字可以存進瀏覽器的小型資料庫 localStorage,這樣就不需要伺服器了。


卡片怎麼會「飛」起來?

純粹是 CSS 動畫。

/* 向右飛出 */
@keyframes exitRight {
  to {
    transform: translateX(115%); /* 往右移動超出畫面 */
    opacity: 0;                  /* 同時淡出 */
  }
}

點擊「我的菜」時,JS 只做一件事:幫卡片加上 anim-exit-right 這個 class。

CSS 偵測到這個 class,動畫自動觸發。


統計數據怎麼不會消失?

瀏覽器有一個叫做 localStorage 的空間,就像一個小筆記本:

存進去:localStorage.setItem('票數', JSON.stringify(data))
讀出來:JSON.parse(localStorage.getItem('票數'))

每次有人按「我的菜」,資料就寫一次進這個筆記本。

關掉網頁、重新整理,資料還在——直到你手動清除為止。


不需要伺服器?

一般的網站需要「伺服器」處理資料,就像這樣:

你的電腦 ←→ 網路 ←→ 伺服器(存資料的地方)

這個網頁把資料存在你的瀏覽器裡,完全不需要網路傳輸:

你的電腦(瀏覽器 = 伺服器 + 資料庫,全包了)

所以它只是一個 .html 檔,雙擊就能開,帶著走。


總結:這個小遊戲用到的技術

技術 用途
HTML 四個畫面的結構與按鈕
CSS Keyframes 卡片滑入滑出動畫
CSS Grid 結果縮圖的排列
CSS Variables 統一管理顏色與字型
FileReader API 讀取本地圖片轉 base64
Drag & Drop API 拖曳上傳照片
localStorage 照片與票數的永久儲存
Fisher-Yates 演算法 每局照片隨機洗牌

🛠️ 從想法到網頁,你也可以。

HTML、CSS、JavaScript 都是免費、開放的技術,任何人都能學。

// Comments

載入留言…
// similar_projects

連動筆記

// NO_SUBTITLE

htmlcssjs+1
系統與網站開發
@123
官方現場展覽2

姓不姓由你

// 讓你能解碼名字背後的宿命與運勢的網站。

htmlcssjs+1
系統與網站開發

C++ Here

// 一個新世代的線上 C++ 編輯器,專為競程而生。快速、輕量,功能完整。

AstroPythonTypeScript+7
系統與網站開發
@dong
官方現場展覽19