You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:如何实现点击Box全屏展开/收缩并显示文本?

实现点击Box展开/收缩的解决方案

要实现这个交互效果,需要结合CSS和JavaScript完成,以下是具体步骤及修改后的代码:

1. 调整HTML结构

新增隐藏容器存放更多文本,同时可以添加多个Box测试交互逻辑:

<div class="games">
  <div class="game-list">
    <img src="https://rideawavedesign.com/wp-content/uploads/2021/06/dnd-dice-level-up-birthday-card-1.jpg" style="width:140px; height: 140px;" />
    <h1 style=" color:#FFFFFF">Chapter 1: </h1>
    <p style=" color:#FFFFFF; font-size: 20px">Step-by-Step</p>
    <!-- 隐藏的更多文本容器 -->
    <div class="more-text">
      <p>这里是章节的详细介绍内容,点击Box后会完整展示出来。</p>
      <p>可以添加多行文本,展开后容器会自动适配高度。</p>
    </div>
  </div>
  <!-- 第二个测试Box -->
  <div class="game-list">
    <img src="https://rideawavedesign.com/wp-content/uploads/2021/06/dnd-dice-level-up-birthday-card-1.jpg" style="width:140px; height: 140px;" />
    <h1 style=" color:#FFFFFF">Chapter 2: </h1>
    <p style=" color:#FFFFFF; font-size: 20px">Advanced Guide</p>
    <div class="more-text">
      <p>第二章的进阶内容,测试点击其他Box时当前展开项会自动收缩。</p>
    </div>
  </div>
</div>

2. 更新CSS样式

添加展开状态的样式、过渡动画,以及更多文本的显示/隐藏逻辑:

.games {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-evenly;
  min-height: 100vh;
  background-color: #1a1a2e; /* 深色背景提升文字可读性 */
}

.game-list {
  margin: 30px;
  padding: 20px;
  height: 275px;
  width: 325px;
  display: flex;
  flex-direction: column;
  align-items: center;
  border: 1px solid gray;
  background: rgba(255, 75, 255, 0.1);
  box-shadow: 0 8px 40px 0 rgba(45, 57, 231, 0.37);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  border-radius: 10px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  transition: all 0.3s ease; /* 平滑过渡所有属性变化 */
  cursor: pointer; /* 提示可点击 */
  overflow: hidden; /* 隐藏展开前溢出的文本 */
}

.game-list:hover {
  transform: scale(1.05);
}

/* 展开状态样式 */
.game-list.expanded {
  width: 90vw; /* 占窗口90%宽度,留边距 */
  height: auto; /* 高度自适应内容 */
  transform: scale(1); /* 取消hover缩放避免冲突 */
  align-items: flex-start; /* 长文本左对齐更友好 */
  padding: 30px;
}

/* 默认隐藏更多文本 */
.more-text {
  display: none;
  margin-top: 20px;
  color: #fff;
  line-height: 1.6;
}

/* 展开时显示更多文本 */
.game-list.expanded .more-text {
  display: block;
}

3. 添加JavaScript交互逻辑

处理点击事件,实现展开/收缩的切换及多Box互斥逻辑:

const gameBoxes = document.querySelectorAll('.game-list');

gameBoxes.forEach(box => {
  box.addEventListener('click', () => {
    const isExpanded = box.classList.contains('expanded');
    
    // 先关闭所有已展开的Box
    gameBoxes.forEach(item => item.classList.remove('expanded'));
    
    // 若当前Box未展开则展开,否则保持关闭
    if (!isExpanded) {
      box.classList.add('expanded');
    }
  });
});

效果说明

  • 鼠标悬停Box时保持原有的1.05倍缩放效果;
  • 点击任意Box,它会扩展至90%窗口宽度,自动适配内容高度并显示隐藏文本;
  • 再次点击同一Box会收缩回原尺寸,点击其他Box时,当前展开的Box会自动收缩,新点击的Box展开。

内容的提问来源于stack exchange,提问作者Ryochi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:42:44