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

ReactJS+TypeScript点击按钮修改div类名与CSS属性方法咨询

实现方案

React是状态驱动UI的,你只需要用一个状态变量控制展开状态即可,具体实现步骤如下:

1. 定义状态变量

在你的函数组件内部首先声明状态:

import { useState } from 'react';

// 组件内部代码
const [isExpanded, setIsExpanded] = useState<boolean>(false);

2. 编写点击事件处理函数

// 事件类型TS可自动推断,也可以主动标注增强类型校验
const handleExpand: React.MouseEventHandler<HTMLDivElement> = () => {
  setIsExpanded(true);
};

3. 修改JSX模板

你需要修改3处逻辑:动态绑定类名、条件隐藏按钮、给外层卡片类加动态类名

<section className="FlexContainer-text">
  <p>
    {tutorial.message ||
      tutorial.messages.map((n) => (
        <span>
          {/* 1. 动态给conseil-card-pack加展开类,绑定点击事件 */}
          <div 
            className={`conseil-card-pack ${isExpanded ? 'expanded' : ''}`} 
            onClick={handleExpand}
          >
            {n.message}
          </div>
          {/* 2. 未展开时才显示按钮 */}
          {!isExpanded && (
            <div className="more-button">
              <div className="more-button-text">
                Afficher tous les messages
              </div>
            </div>
          )}
        </span>
      ))}
  </p>
  <div className="conseil-card-title">
    Titre : {tutorial.title}
    {tutorial.isPack ? " Pack oui" : " Pack non"}
  </div>
</section>

<!-- 注意:你外层挂载conseil-card / conseil-cardactive类的标签也要加动态类,示例如下 -->
<div className={`conseil-card ${isExpanded ? 'expanded' : ''}`}>
  <!-- 把上面的section放在当前标签内部 -->
</div>

4. 补充CSS样式

在现有CSS末尾添加以下代码即可实现属性修改:

/* 移除两个卡片类的height限制 */
.conseil-card.expanded, .conseil-cardactive.expanded {
  height: auto;
}

/* 隐藏渐变效果 */
.conseil-card-pack.expanded::after {
  display: none;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:36:03