メニューを切り替える
個人設定メニューを切り替える
個人メニューを切り替える
ログインしていません
編集を行うと、IPアドレスが公開されます。

「カテゴリーでさがす」の版間の差分

提供: 川西図鑑
編集の要約なし
編集の要約なし
98行目: 98行目:


/* 開いている状態 */
/* 開いている状態 */
.genre-card:target .genre-toggle::after {
.genre-card.is-open .genre-toggle::after {
   transform: rotate(180deg);
   transform: rotate(180deg);
}
}


/* ========================================
/* ========================================
   サブジャンルリスト
   サブジャンルリスト(カード内・非表示用)
======================================== */
======================================== */
.subgenres {
.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;
   max-height: 0;
   overflow: hidden;
   overflow: hidden;
   opacity: 0;
   opacity: 0;
   transition: max-height 0.4s ease, opacity 0.3s ease, margin-top 0.3s ease;
   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);
}
}


/* :target で開閉制御 */
.subgenres-expanded.is-visible {
.genre-card:target .subgenres {
   max-height: 2000px;
   max-height: 2000px;
   opacity: 1;
   opacity: 1;
   margin-top: 16px;
  padding: 24px;
   margin: -10px 0 10px 0;
}
}


.subgenres ul {
.subgenres-expanded ul {
   list-style: none;
   list-style: none;
   padding: 0;
   padding: 0;
   margin: 0;
   margin: 0;
   display: grid;
   display: grid;
   gap: 8px;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
   gap: 12px;
}
}


.subgenres li {
.subgenres-expanded li {
   margin: 0;
   margin: 0;
}
}


.subgenres a {
.subgenres-expanded a {
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
   padding: 12px 16px;
   padding: 14px 18px;
   border: 1px solid #e5e7eb;
   border: 1px solid #e5e7eb;
   border-radius: 8px;
   border-radius: 8px;
145行目: 160行目:
}
}


.subgenres a::before {
.subgenres-expanded a::before {
   content: '•';
   content: '•';
   margin-right: 8px;
   margin-right: 10px;
   color: #f59e0b;
   color: #f59e0b;
   font-weight: bold;
   font-weight: bold;
  font-size: 18px;
}
}


.subgenres a:hover {
.subgenres-expanded a:hover {
   background: #fff;
   background: #fff;
   border-color: #f59e0b;
   border-color: #f59e0b;
172行目: 188行目:
}
}


.skin-theme-clientpref-night .genre-actions a,
.skin-theme-clientpref-night .genre-actions a {
.skin-theme-clientpref-night .subgenres a {
   background: #1e1e1e;
   background: #1e1e1e;
   border-color: #3a3a3a;
   border-color: #3a3a3a;
193行目: 208行目:
}
}


.skin-theme-clientpref-night .subgenres a {
.skin-theme-clientpref-night .subgenres-expanded {
  background: #2a2a2a;
  border-color: #f59e0b;
}
 
.skin-theme-clientpref-night .subgenres-expanded a {
   background: #1e1e1e;
   background: #1e1e1e;
  border-color: #3a3a3a;
  color: #e5e7eb;
}
}


.skin-theme-clientpref-night .subgenres a::before {
.skin-theme-clientpref-night .subgenres-expanded a::before {
   color: #fbbf24;
   color: #fbbf24;
}
}


.skin-theme-clientpref-night .subgenres a:hover {
.skin-theme-clientpref-night .subgenres-expanded a:hover {
   background: #2a2a2a;
   background: #2a2a2a;
   border-color: #f59e0b;
   border-color: #f59e0b;
221行目: 243行目:
   }
   }
    
    
   .skin-theme-clientpref-os .genre-actions a,
   .skin-theme-clientpref-os .genre-actions a {
  .skin-theme-clientpref-os .subgenres a {
     background: #1e1e1e;
     background: #1e1e1e;
     border-color: #3a3a3a;
     border-color: #3a3a3a;
242行目: 263行目:
   }
   }
    
    
   .skin-theme-clientpref-os .subgenres a {
   .skin-theme-clientpref-os .subgenres-expanded {
    background: #2a2a2a;
    border-color: #f59e0b;
  }
 
  .skin-theme-clientpref-os .subgenres-expanded a {
     background: #1e1e1e;
     background: #1e1e1e;
    border-color: #3a3a3a;
    color: #e5e7eb;
   }
   }
    
    
   .skin-theme-clientpref-os .subgenres a::before {
   .skin-theme-clientpref-os .subgenres-expanded a::before {
     color: #fbbf24;
     color: #fbbf24;
   }
   }
    
    
   .skin-theme-clientpref-os .subgenres a:hover {
   .skin-theme-clientpref-os .subgenres-expanded a:hover {
     background: #2a2a2a;
     background: #2a2a2a;
     border-color: #f59e0b;
     border-color: #f59e0b;
273行目: 301行目:
   }
   }
    
    
   .genre-actions a,
   .genre-actions a {
   .subgenres 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;
     font-size: 13px;
     padding: 12px 14px;
     padding: 12px 14px;
297行目: 341行目:
// ページ読み込み後に実行
// ページ読み込み後に実行
document.addEventListener('DOMContentLoaded', function() {
document.addEventListener('DOMContentLoaded', function() {
  const grid = document.querySelector('.genre-grid');
  let currentExpandedPanel = null;
 
   // すべてのジャンルで探すボタンにクリックイベントを追加
   // すべてのジャンルで探すボタンにクリックイベントを追加
   const toggleButtons = document.querySelectorAll('.genre-toggle');
   const toggleButtons = document.querySelectorAll('.genre-toggle');
305行目: 352行目:
        
        
       const card = this.closest('.genre-card');
       const card = this.closest('.genre-card');
      const cardId = card.id;
       const wasOpen = card.classList.contains('is-open');
       const wasOpen = card.classList.contains('is-open');
     
      // 既存の展開パネルを削除
      if (currentExpandedPanel) {
        currentExpandedPanel.remove();
        currentExpandedPanel = null;
      }
        
        
       // すべてのカードを閉じる
       // すべてのカードを閉じる
315行目: 369行目:
       if (!wasOpen) {
       if (!wasOpen) {
         card.classList.add('is-open');
         card.classList.add('is-open');
      }
       
     
        // サブジャンルの内容を取得
      // URLハッシュを更新(戻るボタン対応)
        const subgenresContent = card.querySelector('.subgenres').innerHTML;
      if (!wasOpen) {
       
         history.pushState(null, '', '#' + card.id);
        // カードの位置を取得して、同じ行の最後に展開パネルを挿入
      } else {
        const allCards = Array.from(grid.children).filter(el => el.classList.contains('genre-card'));
        history.pushState(null, '', window.location.pathname);
        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);
       }
       }
     });
     });
   });
   });
    
    
   // ページ読み込み時にハッシュがある場合は該当カードを開く
   // ウィンドウリサイズ時に展開パネルの位置を再計算
   if (window.location.hash) {
   let resizeTimer;
    const targetCard = document.querySelector(window.location.hash);
  window.addEventListener('resize', function() {
    if (targetCard && targetCard.classList.contains('genre-card')) {
    clearTimeout(resizeTimer);
      targetCard.classList.add('is-open');
     resizeTimer = setTimeout(function() {
     }
      const openCard = document.querySelector('.genre-card.is-open');
  }
      if (openCard) {
 
        // 再度開き直す
  // ブラウザの戻る/進むボタンに対応
        openCard.querySelector('.genre-toggle').click();
  window.addEventListener('hashchange', function() {
        openCard.querySelector('.genre-toggle').click();
    document.querySelectorAll('.genre-card').forEach(card => {
      card.classList.remove('is-open');
    });
   
    if (window.location.hash) {
      const targetCard = document.querySelector(window.location.hash);
      if (targetCard && targetCard.classList.contains('genre-card')) {
        targetCard.classList.add('is-open');
       }
       }
     }
     }, 250);
   });
   });
});//# sourceURL=foobar.js
});
</script>
</script>
</html>
</html>
388行目: 456行目:
<div class="genre-actions">
<div class="genre-actions">
[[美容・健康一覧|一覧を見る]]
[[美容・健康一覧|一覧を見る]]
<a href="#beauty" class="genre-toggle">ジャンルで探す</a>
<html><a href="#beauty" class="genre-toggle">ジャンルで探す</a></html>
</div>
</div>
<div class="subgenres">
<div class="subgenres">
407行目: 475行目:
<div class="genre-actions">
<div class="genre-actions">
[[店・施設一覧|すべてを見る]]
[[店・施設一覧|すべてを見る]]
<a href="#store" class="genre-toggle">ジャンルで探す</a>
<html><a href="#store" class="genre-toggle">ジャンルで探す</a></html>
</div>
</div>
<div class="subgenres">
<div class="subgenres">
426行目: 494行目:
<div class="genre-actions">
<div class="genre-actions">
[[人の図鑑一覧|すべてを見る]]
[[人の図鑑一覧|すべてを見る]]
<a href="#person" class="genre-toggle">ジャンルで探す</a>
<html><a href="#person" class="genre-toggle">ジャンルで探す</a></html>
</div>
</div>
<div class="subgenres">
<div class="subgenres">
441行目: 509行目:
<div class="genre-actions">
<div class="genre-actions">
[[団体・企業一覧|すべてを見る]]
[[団体・企業一覧|すべてを見る]]
<a href="#campary" class="genre-toggle">ジャンルで探す</a>
<html><a href="#campary" class="genre-toggle">ジャンルで探す</a></html>
</div>
</div>
<div class="subgenres">
<div class="subgenres">
455行目: 523行目:
<div class="genre-actions">
<div class="genre-actions">
[[仕事図鑑一覧|すべてを見る]]
[[仕事図鑑一覧|すべてを見る]]
<a href="#job" class="genre-toggle">ジャンルで探す</a>
<html><a href="#job" class="genre-toggle">ジャンルで探す</a></html>
</div>
</div>
<div class="subgenres">
<div class="subgenres">
463行目: 531行目:
* [[業務委託・フリーランス一覧]]
* [[業務委託・フリーランス一覧]]
* [[インターン一覧]]
* [[インターン一覧]]
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

2026年1月29日 (木) 10:48時点における版

ジャンルから探す

川西の情報を、ジャンルごとに整理しています。 気になるジャンルを選んでください。