diff --git a/src/pages/InterestGroup/InterestGroup.css b/src/pages/InterestGroup/InterestGroup.css
index a52ba5f..1de6510 100644
--- a/src/pages/InterestGroup/InterestGroup.css
+++ b/src/pages/InterestGroup/InterestGroup.css
@@ -1,158 +1,207 @@
 /* 设置整个兴趣小组页面的背景色和布局 */
 .interest-group-container {
-    background-color: #f8f1f1; /* 粉色背景 */
+  background-color: #5F4437; 
+  width: 100%;
+  height: 2000px;
+}
+
+/* 页面标题样式 */
+h1 {
+  text-align: center;
+  color: #5F4437; /* 深棕色 */
+  font-size: 2rem;
+  margin-bottom: 30px;
+}
+
+/* 筛选、搜索和排序容器样式 */
+.filter-search-sort-container {
+  display: flex;
+  justify-content: center;
+  gap: 20px;
+  margin-bottom: 20px;
+}
+
+/* 筛选部分样式 */
+.filter, .sort {
+  margin-bottom: 0;
+  /* 文字在左边，下拉框在右边 */
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  gap: 5px;
+}
+
+.search input {
+  padding: 10px;
+  width: 200px;
+  margin-left: 100px;
+  border-radius: 6px;
+  border: 1px solid #e0c4a1; /* 浅棕色 */
+  background-color: #fff5f5; /* 浅粉色 */
+  color: #5F4437;
+  font-size: 1rem;
+}
+
+.filter select,
+.sort select {
+  padding: 10px;
+  width: 200px;
+  border-radius: 6px;
+  border: 1px solid #e0c4a1; /* 浅棕色 */
+  background-color: #fff5f5; /* 浅粉色 */
+  color: #5F4437;
+  font-size: 1rem;
+}
+
+/* 激活时的输入框样式 */
+.filter select:focus,
+.search input:focus,
+.sort select:focus {
+  border-color: #b38867; /* 较深的棕色 */
+  outline: none;
+}
+
+.group-list {
+  margin-top: 5%;
+  display: flex;
+  flex-wrap: wrap;
+  gap: 20px; /* 控制 item 之间的间距 */
+  justify-content: flex-start; /* 让不足三项时左对齐 */
+}
+
+.group-item {
+  flex: 0 0 calc(33.333% - 20px); /* 每个占1/3减去间距 */
+  box-sizing: border-box;
+  border: 1px solid #e0c4a1;
+  border-radius: 8px;
+  overflow: hidden;
+  background-color: #fff;
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+  transition: transform 0.3s ease-in-out;
+  padding: 15px;
+}
+
+
+.group-item:hover {
+  transform: translateY(-5px); /* 鼠标悬停时小组项上升效果 */
+}
+
+.group-content {
+  display: flex;
+  gap: 15px;
+}
+
+.group-info-right {
+  display: flex;
+  flex-direction: column;
+  align-items: flex-start; 
+  justify-content: flex-start; 
+}
+
+/* 小组描述样式 */
+.group-description {
+  color: #333;
+  font-size: 1rem;
+  line-height: 1.4;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+
+/* 小组标签样式 */
+.group-tags {
+  display: flex;
+  gap: 10px;
+}
+
+.tag {
+  background-color: #f0f0f0;
+  color: #5F4437;
+  padding: 5px 10px;
+  border-radius: 4px;
+  font-size: 0.9rem;
+}
+
+/* 分页按钮 */
+.pagination {
+  text-align: center;
+  margin-top: 30px;
+}
+
+button {
+  padding: 10px 20px;
+  margin: 0 10px;
+  background-color: #5F4437; /* 深棕色 */
+  color: white;
+  border: none;
+  border-radius: 6px;
+  cursor: pointer;
+  font-size: 1rem;
+  transition: background-color 0.3s ease;
+}
+
+button:disabled {
+  background-color: #d6d6d6;
+  cursor: not-allowed;
+}
+
+button:hover {
+  background-color: #b38867; /* 深棕色的 hover 效果 */
+}
+
+/* 错误信息的样式 */
+.error {
+  color: #ff6f61; /* 红色 */
+  text-align: center;
+  margin-top: 20px;
+}
+
+/* 加载中的提示 */
+.loading {
+  color: #5F4437;
+  text-align: center;
+  margin-top: 20px;
+  font-size: 1.2rem;
+}
+
+/* 响应式设计: 确保在小屏幕下布局能适应 */
+@media (max-width: 768px) {
+ .group-item {
+    width: 48%;
+  }
+
+ .filter-search-sort-container {
+    flex-direction: column;
+  }
+
+ .filter select,
+ .search input,
+ .sort select {
     width: 100%;
-  }
-  
-  /* 页面标题样式 */
-  h1 {
-    text-align: center;
-    color: #5c3f31; /* 深棕色 */
-    font-size: 2rem;
-    margin-bottom: 30px;
-  }
-  
-  /* 筛选部分样式 */
-  .filter, .search, .sort {
-    margin-bottom: 20px;
-    text-align: center;
-  }
-  
-  .filter select,
-  .search input,
-  .sort select {
-    padding: 10px;
-    width: 200px;
-    border-radius: 6px;
-    border: 1px solid #e0c4a1; /* 浅棕色 */
-    background-color: #fff5f5; /* 浅粉色 */
-    color: #5c3f31;
-    font-size: 1rem;
-  }
-  
-  /* 激活时的输入框样式 */
-  .filter select:focus,
-  .search input:focus,
-  .sort select:focus {
-    border-color: #b38867; /* 较深的棕色 */
-    outline: none;
-  }
-  
-  /* 小组列表样式 */
-  .group-list {
-    display: flex;
-    flex-wrap: wrap;
-    gap: 20px;
-    justify-content: space-between;
-  }
-  
-  /* 每个小组的容器 */
-  .group-item {
-    width: 30%;
-    border: 1px solid #e0c4a1; /* 浅棕色边框 */
-    border-radius: 8px;
-    overflow: hidden;
-    background-color: #fff;
-    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
-    transition: transform 0.3s ease-in-out;
-  }
-  
-  .group-item:hover {
-    transform: translateY(-5px); /* 鼠标悬停时小组项上升效果 */
-  }
-  
-  /* 小组封面图样式 */
-  .group-cover {
-    width: 100%;
-    height: 180px;
-    object-fit: cover;
-    transition: opacity 0.3s ease;
-  }
-  
-  /* 小组信息区域 */
-  .group-info {
-    padding: 15px;
-    background-color: #f8f1f1; /* 浅粉色背景 */
-  }
-  
-  .group-info h2 {
-    font-size: 1.2em;
-    color: #5c3f31;
     margin-bottom: 10px;
   }
-  
-  /* 小组描述部分 */
-  .group-info p {
-    font-size: 1rem;
-    color: #5c3f31;
+}
+
+@media (max-width: 480px) {
+ .group-item {
+    width: 100%;
   }
-  
-  /* 分页按钮 */
-  .pagination {
-    text-align: center;
-    margin-top: 30px;
+
+ .filter select,
+ .search input,
+ .sort select {
+    width: 100%;
+    font-size: 0.9rem;
   }
-  
-  button {
-    padding: 10px 20px;
-    margin: 0 10px;
-    background-color: #5c3f31; /* 深棕色 */
-    color: white;
-    border: none;
-    border-radius: 6px;
-    cursor: pointer;
-    font-size: 1rem;
-    transition: background-color 0.3s ease;
-  }
-  
-  button:disabled {
-    background-color: #d6d6d6;
-    cursor: not-allowed;
-  }
-  
-  button:hover {
-    background-color: #b38867; /* 深棕色的 hover 效果 */
-  }
-  
-  /* 错误信息的样式 */
-  .error {
-    color: #ff6f61; /* 红色 */
-    text-align: center;
-    margin-top: 20px;
-  }
-  
-  /* 加载中的提示 */
-  .loading {
-    color: #5c3f31;
-    text-align: center;
-    margin-top: 20px;
-    font-size: 1.2rem;
-  }
-  
-  /* 响应式设计: 确保在小屏幕下布局能适应 */
-  @media (max-width: 768px) {
-    .group-item {
-      width: 48%;
-    }
-  
-    .filter select,
-    .search input,
-    .sort select {
-      width: 100%;
-      margin-bottom: 10px;
-    }
-  }
-  
-  @media (max-width: 480px) {
-    .group-item {
-      width: 100%;
-    }
-  
-    .filter select,
-    .search input,
-    .sort select {
-      width: 100%;
-      font-size: 0.9rem;
-    }
-  }
-  
\ No newline at end of file
+}
+
+.interest-group-card {
+  background-color: #e9ded2;
+  border-radius: 16px;
+  max-width: 70%;
+  max-height: 100%;
+  /* 卡片居中 */
+  margin: 0 auto;
+  margin-top: 40px;
+  /* padding: 24px 32px; */
+  padding: 3% 3%
+}    
\ No newline at end of file
diff --git a/src/pages/InterestGroup/InterestGroup.jsx b/src/pages/InterestGroup/InterestGroup.jsx
index 8a8d67b..eb9ed41 100644
--- a/src/pages/InterestGroup/InterestGroup.jsx
+++ b/src/pages/InterestGroup/InterestGroup.jsx
@@ -97,97 +97,128 @@
     }
   };
 
+  const handleSearch = () => {
+    // 触发搜索逻辑，通过修改 name 状态重新请求数据
+    setPage(1);
+  };
+
   return (
     <div className="interest-group-container">
       {/* Header 组件放在页面最上方 */}
       <Header />
+      <div className="interest-group-card">
+        {/* <h1>兴趣小组列表</h1> */}
+        {/* 水平排列的筛选、搜索和排序容器 */}
+        <div className="filter-search-sort-container">
+          {/* 分类筛选 */}
+          <div className="filter">
+            <label>分类：</label>
+            <select onChange={handleCategoryChange} value={category} style={{ width: '150px' }}>
+              <option value="">全部</option>
+              <option value="影视">影视</option>
+              <option value="游戏">游戏</option>
+              <option value="学习">学习</option>
+              <option value="体育">体育</option>
+              <option value="其他">其他</option>
+            </select>
+          </div>
 
-      <h1>兴趣小组列表</h1>
-      {/* 分类筛选 */}
-      <div className="filter">
-        <label>分类：</label>
-        <select onChange={handleCategoryChange} value={category}>
-          <option value="">全部</option>
-          <option value="影视">影视</option>
-          <option value="游戏">游戏</option>
-          <option value="学习">学习</option>
-          <option value="体育">体育</option>
-          <option value="其他">其他</option>
-        </select>
-      </div>
+          {/* 排序 */}
+          <div className="sort">
+            <label>排序：</label>
+            <select onChange={handleSortChange} value={sortBy} style={{ width: '150px' }}>
+              <option value="member_count">按成员数排序</option>
+              <option value="name">按名称排序</option>
+              <option value="category">按分类排序</option>
+            </select>
+          </div>
 
-      {/* 搜索框 */}
-      <div className="search">
-        <label>搜索：</label>
-        <input
-          type="text"
-          value={name}
-          onChange={handleSearchChange}
-          placeholder="输入小组名称搜索"
-        />
-      </div>
-
-      {/* 排序 */}
-      <div className="sort">
-        <label>排序：</label>
-        <select onChange={handleSortChange} value={sortBy}>
-          <option value="member_count">按成员数排序</option>
-          <option value="name">按名称排序</option>
-          <option value="category">按分类排序</option>
-        </select>
-      </div>
-
-      {/* 加载中提示 */}
-      {loading && <p>加载中...</p>}
-
-      {/* 错误提示 */}
-      {error && <p className="error">{error}</p>}
-
-      {/* 小组列表 */}
-      {!loading && !error && (
-        <div className="group-list">
-          {groups.map((group) => (
-            <div className="group-item" key={group.group_id}>
-              <img
-                src={group.cover_image}
-                alt={group.name}
-                className="group-cover"
-              />
-              <div className="group-info">
-                <h2>{group.name}</h2>
-                <p>{group.description}</p>
-                <p>成员数：{group.member_count}</p>
-                <p>分类：{group.category}</p>
-                {/* 加入小组按钮 */}
-                <button
-                  onClick={() => handleJoinGroup(group.group_id)}
-                  disabled={joinStatus[group.group_id] === '加入成功'}
-                >
-                  {joinStatus[group.group_id] === '加入成功' ? '已加入' : '加入小组'}
-                </button>
-                {/* 显示加入状态 */}
-                {joinStatus[group.group_id] && <p>{joinStatus[group.group_id]}</p>}
-              </div>
-            </div>
-          ))}
+          {/* 搜索框 */}
+          <div className="search">
+            <input
+              type="text"
+              value={name}
+              onChange={handleSearchChange}
+              placeholder="输入小组名称搜索"
+            />
+            <button onClick={handleSearch} style={{ backgroundColor: '#BA929A', color: 'white' , padding: '5px 10px'}}>搜索</button>
+          </div>
         </div>
-      )}
 
-      {/* 分页 */}
-      <div className="pagination">
-        <button onClick={() => handlePageChange(page - 1)} disabled={page <= 1}>
-          上一页
-        </button>
-        <span>第 {page} 页 / 共 {totalPages} 页</span>
-        <button
-          onClick={() => handlePageChange(page + 1)}
-          disabled={page >= totalPages}
-        >
-          下一页
-        </button>
+        {/* 加载中提示 */}
+        {loading && <p>加载中...</p>}
+
+        {/* 错误提示 */}
+        {error && <p className="error">{error}</p>}
+
+        {/* 小组列表 */}
+        {!loading && !error && (
+          <div className="group-list">
+            {groups.map((group) => (
+              <div className="group-item" key={group.group_id}>
+                <div className="group-content">
+                  <img
+                    style={{ width: '40%', height: '40%'}}
+                    src={group.cover_image}
+                    alt={group.name}
+                    className="group-cover"
+                  />
+                  <div
+                    className="group-info-right"
+                    style={{
+                      display: 'flex',
+                      flexDirection: 'column',
+                      alignItems: 'flex-start',
+                      gap: '4px', // 控制元素之间的垂直间距
+                    }}
+                  >
+                    <h3 style={{ margin: 0 }}>{group.name}</h3>
+                    <p style={{ color: '#BA929A', margin: 0 }}>{group.member_count}人加入了小组</p>
+                    <button
+                      onClick={() => handleJoinGroup(group.group_id)}
+                      disabled={joinStatus[group.group_id] === '加入成功'}
+                      style={{
+                        background: 'none',
+                        color: '#007bff',
+                        padding: 0,
+                        marginTop: '4px',
+                        /*左对齐*/
+                        textAlign: 'left',
+                        marginLeft: '0',
+                        cursor: joinStatus[group.group_id] === '加入成功' ? 'default' : 'pointer',
+                      }}
+                    >
+                      {joinStatus[group.group_id] === '加入成功' ? '已加入' : '+加入小组'}
+                    </button>
+                  </div>
+
+                </div>
+                <div className="group-description">
+                  <p>{group.description}</p>
+                </div>
+                <p>分类：{group.category}</p>
+        
+              </div>
+            ))}
+          </div>
+        )}    
+
+        {/* 分页 */}
+        <div className="pagination">
+          <button onClick={() => handlePageChange(page - 1)} disabled={page <= 1}>
+            上一页
+          </button>
+          <span>第 {page} 页 / 共 {totalPages} 页</span>
+          <button
+            onClick={() => handlePageChange(page + 1)}
+            disabled={page >= totalPages}
+          >
+            下一页
+          </button>
+        </div>
       </div>
     </div>
   );
 };
 
-export default InterestGroup;
+export default InterestGroup;
\ No newline at end of file
