検索を切り替える
検索
メニューを切り替える
781
20
2
5460
川西図鑑
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ファイルをアップロード
個人設定メニューを切り替える
通知
個人メニューを切り替える
ログインしていません
編集を行うと、IPアドレスが公開されます。
user-interface-preferences
個人用ツール
アカウント作成
ログイン
カテゴリーでさがすのソースを表示
提供: 川西図鑑
このページを共有
その他の操作
←
カテゴリーでさがす
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
この操作は、次のグループに属する利用者のみが実行できます:
管理者
。
このページのソースの閲覧やコピーができます。
<html> <style> /* ======================================== ジャンルグリッド ======================================== */ .genre-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 20px; margin: 2em 0; } /* ======================================== ジャンルカード ======================================== */ .genre-card { background: #fff; border: 2px solid #e5e7eb; border-radius: 16px; padding: 24px; transition: all 0.3s ease; box-shadow: 0 2px 8px rgba(0,0,0,0.06); overflow: hidden; } .genre-card:hover { border-color: #f59e0b; box-shadow: 0 4px 16px rgba(245, 158, 11, 0.15); } /* ======================================== ジャンルタイトル ======================================== */ .genre-title { font-size: 20px; font-weight: 700; color: #111827; margin: 0 0 16px 0; padding-bottom: 12px; border-bottom: 2px solid #f59e0b; } /* ======================================== アクションボタンエリア ======================================== */ .genre-actions { display: flex; flex-direction: column; gap: 10px; margin-bottom: 0; } .genre-actions a { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border: 2px solid #e5e7eb; border-radius: 10px; background: #fff; color: #374151; text-decoration: none; font-weight: 600; font-size: 14px; transition: all 0.2s ease; position: relative; } .genre-actions a::after { content: '›'; font-size: 20px; color: #9ca3af; transition: all 0.2s ease; } .genre-actions a:hover { background: #fef3c7; border-color: #f59e0b; color: #d97706; transform: translateX(2px); } .genre-actions a:hover::after { color: #f59e0b; transform: translateX(2px); } /* トグルボタン専用スタイル */ .genre-toggle { cursor: pointer; } .genre-toggle::after { content: '▼'; font-size: 14px; transition: transform 0.3s ease; } /* 開いている状態 */ .genre-card.is-open .genre-toggle::after { transform: rotate(180deg); } /* ======================================== サブジャンルリスト(カード内・非表示用) ======================================== */ .subgenres { display: none; } /* ======================================== 展開パネル(グリッド間に表示) ======================================== */ .subgenres-expanded { grid-column: 1 / -1; background: #fff; border: 2px solid #f59e0b; border-radius: 16px; padding: 24px; margin: 0; max-height: 0; overflow: hidden; opacity: 0; transition: max-height 0.4s ease, opacity 0.3s ease, padding 0.3s ease, margin 0.3s ease; box-shadow: 0 4px 16px rgba(245, 158, 11, 0.15); } .subgenres-expanded.is-visible { max-height: 2000px; opacity: 1; padding: 24px; margin: -10px 0 10px 0; } .subgenres-expanded ul { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; } .subgenres-expanded li { margin: 0; } .subgenres-expanded a { display: flex; align-items: center; padding: 14px 18px; border: 1px solid #e5e7eb; border-radius: 8px; background: #f9fafb; color: #374151; text-decoration: none; font-size: 14px; font-weight: 500; transition: all 0.2s ease; } .subgenres-expanded a::before { content: '•'; margin-right: 10px; color: #f59e0b; font-weight: bold; font-size: 18px; } .subgenres-expanded a:hover { background: #fff; border-color: #f59e0b; color: #d97706; transform: translateX(4px); } /* ======================================== ダークモード ======================================== */ .skin-theme-clientpref-night .genre-card { background: #2a2a2a; border-color: #3a3a3a; } .skin-theme-clientpref-night .genre-title { color: #f9fafb; border-color: #f59e0b; } .skin-theme-clientpref-night .genre-actions a { background: #1e1e1e; border-color: #3a3a3a; color: #e5e7eb; } .skin-theme-clientpref-night .genre-actions a::after { color: #6b7280; } .skin-theme-clientpref-night .genre-actions a:hover { background: #374151; border-color: #f59e0b; color: #fbbf24; } .skin-theme-clientpref-night .genre-actions a:hover::after { color: #fbbf24; } .skin-theme-clientpref-night .subgenres-expanded { background: #2a2a2a; border-color: #f59e0b; } .skin-theme-clientpref-night .subgenres-expanded a { background: #1e1e1e; border-color: #3a3a3a; color: #e5e7eb; } .skin-theme-clientpref-night .subgenres-expanded a::before { color: #fbbf24; } .skin-theme-clientpref-night .subgenres-expanded a:hover { background: #2a2a2a; border-color: #f59e0b; color: #fbbf24; } /* ======================================== ダークモード(自動) ======================================== */ @media (prefers-color-scheme: dark) { .skin-theme-clientpref-os .genre-card { background: #2a2a2a; border-color: #3a3a3a; } .skin-theme-clientpref-os .genre-title { color: #f9fafb; border-color: #f59e0b; } .skin-theme-clientpref-os .genre-actions a { background: #1e1e1e; border-color: #3a3a3a; color: #e5e7eb; } .skin-theme-clientpref-os .genre-actions a::after { color: #6b7280; } .skin-theme-clientpref-os .genre-actions a:hover { background: #374151; border-color: #f59e0b; color: #fbbf24; } .skin-theme-clientpref-os .genre-actions a:hover::after { color: #fbbf24; } .skin-theme-clientpref-os .subgenres-expanded { background: #2a2a2a; border-color: #f59e0b; } .skin-theme-clientpref-os .subgenres-expanded a { background: #1e1e1e; border-color: #3a3a3a; color: #e5e7eb; } .skin-theme-clientpref-os .subgenres-expanded a::before { color: #fbbf24; } .skin-theme-clientpref-os .subgenres-expanded a:hover { background: #2a2a2a; border-color: #f59e0b; color: #fbbf24; } } /* ======================================== レスポンシブ ======================================== */ @media (max-width: 768px) { .genre-grid { grid-template-columns: 1fr; } .genre-card { padding: 20px; } .genre-title { font-size: 18px; } .genre-actions a { font-size: 13px; padding: 12px 14px; } .subgenres-expanded { padding: 20px; } .subgenres-expanded.is-visible { padding: 20px; } .subgenres-expanded ul { grid-template-columns: 1fr; } .subgenres-expanded a { font-size: 13px; padding: 12px 14px; } } /* ======================================== JavaScriptでのトグル制御用 ======================================== */ .genre-card.is-open .subgenres { max-height: 2000px; opacity: 1; margin-top: 16px; } .genre-card.is-open .genre-toggle::after { transform: rotate(180deg); } </style> <script> // ページ読み込み後に実行 document.addEventListener('DOMContentLoaded', function() { const grid = document.querySelector('.genre-grid'); let currentExpandedPanel = null; // すべてのジャンルで探すボタンにクリックイベントを追加 const toggleButtons = document.querySelectorAll('.genre-toggle'); toggleButtons.forEach(button => { button.addEventListener('click', function(e) { e.preventDefault(); const card = this.closest('.genre-card'); const cardId = card.id; const wasOpen = card.classList.contains('is-open'); // 既存の展開パネルを削除 if (currentExpandedPanel) { currentExpandedPanel.remove(); currentExpandedPanel = null; } // すべてのカードを閉じる document.querySelectorAll('.genre-card').forEach(c => { c.classList.remove('is-open'); }); // クリックしたカードがもともと閉じていた場合のみ開く if (!wasOpen) { card.classList.add('is-open'); // サブジャンルの内容を取得 const subgenresContent = card.querySelector('.subgenres').innerHTML; // カードの位置を取得して、同じ行の最後に展開パネルを挿入 const allCards = Array.from(grid.children).filter(el => el.classList.contains('genre-card')); const cardIndex = allCards.indexOf(card); // グリッドの列数を計算(ウィンドウ幅に基づく) const gridStyle = window.getComputedStyle(grid); const gridTemplateColumns = gridStyle.gridTemplateColumns.split(' ').length; // 同じ行の最後のカードのインデックスを計算 const rowEndIndex = Math.floor(cardIndex / gridTemplateColumns) * gridTemplateColumns + gridTemplateColumns - 1; const insertAfterCard = allCards[Math.min(rowEndIndex, allCards.length - 1)]; // 展開パネルを作成 const expandedPanel = document.createElement('div'); expandedPanel.className = 'subgenres-expanded'; expandedPanel.innerHTML = subgenresContent; // 展開パネルを挿入 insertAfterCard.after(expandedPanel); currentExpandedPanel = expandedPanel; // アニメーション用に少し遅延 setTimeout(() => { expandedPanel.classList.add('is-visible'); }, 10); } }); }); // ウィンドウリサイズ時に展開パネルの位置を再計算 let resizeTimer; window.addEventListener('resize', function() { clearTimeout(resizeTimer); resizeTimer = setTimeout(function() { const openCard = document.querySelector('.genre-card.is-open'); if (openCard) { // 再度開き直す openCard.querySelector('.genre-toggle').click(); openCard.querySelector('.genre-toggle').click(); } }, 250); }); }); </script> </html> = ジャンルから探す = 川西の情報を、ジャンルごとに整理しています。 気になるジャンルを選んでください。 <div class="genre-grid"> <div class="genre-card" id="food"> <h3 class="genre-title">飲食店</h3> <div class="genre-actions"> [[飲食店検索|すべての飲食店を見る {{飲食店件数取得|column=ジャンル|detail=}}件]] <html><a href="#food" class="genre-toggle">ジャンルで探す</a></html> </div> <div class="subgenres"> * [[居酒屋|居酒屋一覧 {{飲食店件数取得|column=ジャンル|detail=居酒屋}}件]] * [[ダイニングバー・バル|ダイニングバー・バル一覧 {{飲食店件数取得|column=ジャンル|detail=ダイニングバー・バル}}件]] * [[創作料理|創作料理一覧 {{飲食店件数取得|column=ジャンル|detail=創作料理}}件]] * [[和食|和食一覧 {{飲食店件数取得|column=ジャンル|detail=和食}}件]] * [[洋食|洋食一覧 {{飲食店件数取得|column=ジャンル|detail=洋食}}件]] * [[イタリアン・フレンチ|イタリアン・フレンチ一覧 {{飲食店件数取得|column=ジャンル|detail=イタリアン・フレンチ}}件]] * [[中華|中華一覧 {{飲食店件数取得|column=ジャンル|detail=中華}}件]] * [[焼肉・ホルモン|焼肉・ホルモン一覧 {{飲食店件数取得|column=ジャンル|detail=焼肉・ホルモン}}件]] * [[韓国料理|韓国料理一覧 {{飲食店件数取得|column=ジャンル|detail=韓国料理}}件]] * [[アジア・エスニック料理|アジア・エスニック料理一覧 {{飲食店件数取得|column=ジャンル|detail=アジア・エスニック料理}}件]] * [[各国料理|各国料理一覧 {{飲食店件数取得|column=ジャンル|detail=各国料理}}件]] * [[カラオケ・パーティ|カラオケ・パーティ一覧 {{飲食店件数取得|column=ジャンル|detail=カラオケ・パーティ}}件]] * [[バー・カクテル|バー・カクテル一覧 {{飲食店件数取得|column=ジャンル|detail=バー・カクテル}}件]] * [[ラーメン|ラーメン一覧 {{飲食店件数取得|column=ジャンル|detail=ラーメン}}件]] * [[お好み焼き・もんじゃ|お好み焼き・もんじゃ一覧 {{飲食店件数取得|column=ジャンル|detail=お好み焼き・もんじゃ}}件]] * [[カフェ・スイーツ|カフェ・スイーツ一覧 {{飲食店件数取得|column=ジャンル|detail=カフェ・スイーツ}}件]] * [[その他グルメ|その他グルメ一覧 {{飲食店件数取得|column=ジャンル|detail=その他グルメ}}件]] </div> </div> <div class="genre-card" id="beauty"> <h3 class="genre-title">美容・健康</h3> <div class="genre-actions"> [[美容・健康一覧|一覧を見る]] <html><a href="#beauty" class="genre-toggle">ジャンルで探す</a></html> </div> <div class="subgenres"> * [[美容室一覧]] * [[理容室一覧]] * [[ネイル一覧]] * [[エステ一覧]] * [[整体・整骨院一覧]] * [[マッサージ一覧]] * [[鍼灸一覧]] * [[フィットネス一覧]] * [[ヨガ・ピラティス一覧]] </div> </div> <div class="genre-card" id="store"> <h3 class="genre-title">店・施設</h3> <div class="genre-actions"> [[店・施設一覧|すべてを見る]] <html><a href="#store" class="genre-toggle">ジャンルで探す</a></html> </div> <div class="subgenres"> * [[小売店一覧]] * [[スーパー一覧]] * [[ドラッグストア一覧]] * [[書店一覧]] * [[雑貨店一覧]] * [[商業施設一覧]] * [[公共施設一覧]] * [[医療機関一覧]] * [[教育施設一覧]] </div> </div> <div class="genre-card" id="person"> <h3 class="genre-title">人</h3> <div class="genre-actions"> [[人の図鑑一覧|すべてを見る]] <html><a href="#person" class="genre-toggle">ジャンルで探す</a></html> </div> <div class="subgenres"> * [[店主一覧]] * [[経営者一覧]] * [[クリエイター一覧]] * [[地域活動家一覧]] * [[職人一覧]] </div> </div> <div class="genre-card" id="campary"> <h3 class="genre-title">団体・企業</h3> <div class="genre-actions"> [[団体・企業一覧|すべてを見る]] <html><a href="#campary" class="genre-toggle">ジャンルで探す</a></html> </div> <div class="subgenres"> * [[地元企業一覧]] * [[NPO・一般社団法人一覧]] * [[自治会・町内会一覧]] * [[プロジェクト一覧]] </div> </div> <div class="genre-card" id="job"> <h3 class="genre-title">仕事</h3> <div class="genre-actions"> [[仕事図鑑一覧|すべてを見る]] <html><a href="#job" class="genre-toggle">ジャンルで探す</a></html> </div> <div class="subgenres"> * [[求人一覧]] * [[アルバイト一覧]] * [[正社員募集一覧]] * [[業務委託・フリーランス一覧]] * [[インターン一覧]] </div> </div> </div> </div> </div>
このページで使用されているテンプレート:
テンプレート:カテゴリー一覧/styles.css
(
ソースを閲覧
)
テンプレート:医療・介護件数取得
(
ソースを閲覧
)
テンプレート:小売・店舗件数取得
(
ソースを閲覧
)
テンプレート:飲食店件数取得
(
ソースを閲覧
)
カテゴリーでさがす
に戻る。
カテゴリーでさがすのソースを表示
提供: 川西図鑑