diff --git a/src/pages/Forum/posts-main/ForumPage.css b/src/pages/Forum/posts-main/ForumPage.css
index 3f26e17..aa0a5c3 100644
--- a/src/pages/Forum/posts-main/ForumPage.css
+++ b/src/pages/Forum/posts-main/ForumPage.css
@@ -1,6 +1,6 @@
 .forum-page {
     color: #fff;
-    background-color: #2d2d2d;
+    background-color: #4A3B34;
     min-height: 100vh;
     font-family: Arial, sans-serif;
   }
@@ -16,6 +16,7 @@
   }
   
   .post-card {
+    text-decoration: none;  /* 移除链接的下划线 */
     background-color: #4A3B34;
     padding: 15px;
     border-radius: 10px;
@@ -93,4 +94,12 @@
   .error-text {
     color: red;
   }
+
+  .toolbar {
+    display: flex;
+    /* justify-content: space-between; 
+    align-items: center;            */
+    padding: 16px 20px;            
+  }
+  
   
\ No newline at end of file
diff --git a/src/pages/Forum/posts-main/ForumPage.jsx b/src/pages/Forum/posts-main/ForumPage.jsx
index 1452782..bf2aa63 100644
--- a/src/pages/Forum/posts-main/ForumPage.jsx
+++ b/src/pages/Forum/posts-main/ForumPage.jsx
@@ -17,8 +17,9 @@
     <div className="forum-page">
       <Header />
       <div className="toolbar">
-        <SearchBar onSearch={handleSearch} />
         <CreatePostButton />
+        <SearchBar onSearch={handleSearch} />
+        
       </div>
       <PostList search={searchQuery} />
     </div>
diff --git a/src/pages/Forum/posts-main/components/CreatePostButton.css b/src/pages/Forum/posts-main/components/CreatePostButton.css
index c118c7a..b40b9e7 100644
--- a/src/pages/Forum/posts-main/components/CreatePostButton.css
+++ b/src/pages/Forum/posts-main/components/CreatePostButton.css
@@ -4,8 +4,16 @@
     margin: 20px 0;
   }
   
-  .create-post-button {
-    display: flex;
-    align-items: center;
+  .create-btn {
+    background-color: #BA929A;
+    color: white;
+    padding: 10px 20px;
+    border-radius: 8px;
+    border: none;
+    cursor: pointer;
+    font-size: 16px;
+    transition: background-color 0.3s ease;
   }
+
+  
   
\ No newline at end of file
diff --git a/src/pages/Forum/posts-main/components/PostList.css b/src/pages/Forum/posts-main/components/PostList.css
index d855c07..59533ff 100644
--- a/src/pages/Forum/posts-main/components/PostList.css
+++ b/src/pages/Forum/posts-main/components/PostList.css
@@ -2,10 +2,12 @@
     display: flex;
     flex-direction: column;
     gap: 16px;
+    padding: 30px;
   }
   
   .post-card {
-    border: 1px solid #eee;
+    background-color: #e9ded2;
+    border: 1px solid #000000;
     padding: 16px;
     border-radius: 8px;
   }
diff --git a/src/pages/Forum/posts-main/components/PostList.jsx b/src/pages/Forum/posts-main/components/PostList.jsx
index 7ad0a86..25b08a8 100644
--- a/src/pages/Forum/posts-main/components/PostList.jsx
+++ b/src/pages/Forum/posts-main/components/PostList.jsx
@@ -115,43 +115,45 @@
         errorMsg ? <p className="error-text">{errorMsg}</p> :
           posts.length === 0 ? <p>暂无帖子。</p> :
             posts.map(post => (
-              <div key={post.id} className="post-card">
-                <div className="post-card-top">
-                  <div className="user-info">
-                    <img className="avatar" src={post.userProfile.avatar_url} alt="头像" />
-                    <span className="nickname">{post.userProfile.nickname}</span>
+              <Link
+                key={post.id}
+                href={`/forum/post/${post.id}`}
+                className="post-card"
+                style={{ backgroundColor: '#e9ded2' }}
+              >
+                <div className="user-info">
+                  <img className="avatar" src={post.userProfile.avatar_url} alt="头像" />
+                  <span className="nickname" style={{ color: '#755e50' }}>{post.userProfile.nickname}</span>
+                </div>
+                {post.cover_image_url && (
+                  <img className="cover-image" src={post.cover_image_url} alt="封面" />
+                )}
+                <h3 style={{ color: '#000000' }}>{post.title}</h3>
+                <div className="post-meta">
+                  <span>发布时间：{new Date(post.createdAt).toLocaleString()}</span>
+                  <div className="post-actions">
+                    {/* 点赞按钮 */}
+                    <button className="icon-btn" onClick={(e) => { e.stopPropagation(); toggleLike(post.id, post.liked, post.user_id); }}>
+                      <GoodTwo theme="outline" size="24" fill={post.liked ? '#f00' : '#fff'} />
+                      <span>{post.likeCount}</span>
+                    </button>
+  
+                    {/* 收藏按钮 */}
+                    <button className="icon-btn" onClick={(e) => { e.stopPropagation(); toggleCollect(post.id, post.collected, post.user_id); }}>
+                      <Star theme="outline" size="24" fill={post.collected ? '#ffd700' : '#fff'} />
+                      <span>{post.collectCount}</span>
+                    </button>
+  
+                    <Link href={`/forum/post/${post.id}`} className="icon-btn" onClick={(e) => e.stopPropagation()}>
+                      <Comment theme="outline" size="24" fill="#fff" />
+                      <span>{post.commentCount}</span>
+                    </Link>
                   </div>
-                  {post.cover_image_url && (
-                    <img className="cover-image" src={post.cover_image_url} alt="封面" />
-                  )}
                 </div>
-                <h3>{post.title}</h3>
-                <p className="post-meta">
-                  发布时间：{new Date(post.createdAt).toLocaleString()}
-                </p>
-                <div className="post-actions">
-                  {/* 点赞按钮 */}
-                  <button className="icon-btn" onClick={() => toggleLike(post.id, post.liked, post.user_id)}>
-                    <GoodTwo theme="outline" size="24" fill={post.liked ? '#f00' : '#fff'} />
-                    <span>{post.likeCount}</span>
-                  </button>
-
-                  {/* 收藏按钮 */}
-                  <button className="icon-btn" onClick={() => toggleCollect(post.id, post.collected, post.user_id)}>
-                    <Star theme="outline" size="24" fill={post.collected ? '#ffd700' : '#fff'} />
-                    <span>{post.collectCount}</span>
-                  </button>
-
-                  <Link href={`/forum/post/${post.id}`} className="icon-btn">
-                    <Comment theme="outline" size="24" fill="#fff" />
-                    <span>{post.commentCount}</span>
-                  </Link>
-                </div>
-                <Link href={`/forum/post/${post.id}`} className="btn-secondary">查看详情</Link>
-              </div>
+              </Link>
             ))
       }
-
+  
       <div className="pagination">
         <button disabled={page === 1} onClick={() => setPage(page - 1)}>上一页</button>
         <span>第 {page} 页 / 共 {totalPages} 页</span>
@@ -162,3 +164,170 @@
 };
 
 export default PostList;
+
+// import React, { useEffect, useState } from 'react';
+// import axios from 'axios';
+// import { Link } from 'wouter';
+// import { GoodTwo, Comment, Star } from '@icon-park/react';
+// import { likePost, unlikePost, collectPost } from '../../posts-detail/api'; 
+// import './PostList.css';
+
+// const API_BASE = process.env.REACT_APP_API_BASE;
+
+// const PostList = ({ search }) => {
+//   const [posts, setPosts] = useState([]);
+//   const [page, setPage] = useState(1);
+//   const [total, setTotal] = useState(0);
+//   const [loading, setLoading] = useState(true);
+//   const [errorMsg, setErrorMsg] = useState('');
+
+//   const size = 10;  // 每页条数
+//   const totalPages = Math.ceil(total / size);
+
+//   useEffect(() => {
+//     const fetchPosts = async () => {
+//       setLoading(true);
+//       setErrorMsg('');
+//       try {
+//         const res = await axios.get(`${API_BASE}/echo/forum/posts`, {
+//           params: { 
+//             page: page,
+//             pageSize: size,
+//             sortBy: 'createdAt',  // 按时间排序
+//             order: 'desc'         // 按降序排序
+//           }
+//         });
+
+//         const postsData = res.data.posts || [];
+//         const userIds = [...new Set(postsData.map(p => p.user_id))];
+
+//         // 获取用户信息
+//         const profiles = await Promise.all(userIds.map(async id => {
+//           try {
+//             const r = await axios.get(`${API_BASE}/echo/user/profile`, {
+//               params: { user_id: id }
+//             });
+//             return { id, profile: r.data };
+//           } catch {
+//             return { id, profile: { nickname: '未知用户', avatar_url: 'default-avatar.png' } };
+//           }
+//         }));
+
+//         const userMap = {};
+//         profiles.forEach(({ id, profile }) => { userMap[id] = profile; });
+
+//         // 更新帖子数据
+//         const postsWithProfiles = postsData
+//           .filter(post => post.title.includes(search))
+//           .map(post => ({
+//             ...post,
+//             userProfile: userMap[post.user_id] || {}
+//           }));
+
+//         setPosts(postsWithProfiles);
+//         setTotal(res.data.total || 0);
+//       } catch (err) {
+//         console.error('加载失败:', err);
+//         setErrorMsg('加载失败，请稍后重试');
+//       } finally {
+//         setLoading(false);
+//       }
+//     };
+
+//     fetchPosts();
+//   }, [page, search]);
+
+//   // 点赞/取消点赞操作
+//   const toggleLike = async (postId, liked, userId) => {
+//     try {
+//       if (liked) {
+//         await unlikePost(postId);  // 取消点赞
+//       } else {
+//         await likePost(postId, userId);  // 点赞
+//       }
+
+//       setPosts(posts =>
+//         posts.map(post =>
+//           post.id === postId
+//             ? { ...post, liked: !liked, likeCount: liked ? post.likeCount - 1 : post.likeCount + 1 }
+//             : post
+//         )
+//       );
+//     } catch (err) {
+//       console.error('点赞失败:', err);
+//     }
+//   };
+
+//   // 收藏/取消收藏操作
+//   const toggleCollect = async (postId, collected, userId) => {
+//     try {
+//       const action = collected ? 'cancel' : 'collect';
+//       await collectPost(postId, userId, action);
+
+//       setPosts(posts =>
+//         posts.map(post =>
+//           post.id === postId
+//             ? { ...post, collected: !collected, collectCount: collected ? post.collectCount - 1 : post.collectCount + 1 }
+//             : post
+//         )
+//       );
+//     } catch (err) {
+//       console.error('收藏失败:', err);
+//     }
+//   };
+//   return (
+//     <div className="post-list">
+//       {loading ? <p>加载中...</p> :
+//         errorMsg ? <p className="error-text">{errorMsg}</p> :
+//           posts.length === 0 ? <p>暂无帖子。</p> :
+//             posts.map(post => (
+//               <Link
+//                 key={post.id}
+//                 href={`/forum/post/${post.id}`}
+//                 className="post-card"
+//                 style={{ backgroundColor: '#e9ded2' }}
+//               >
+//                 <div className="user-info">
+//                   <img className="avatar" src={post.userProfile.avatar_url} alt="头像" />
+//                   <span className="nickname" style={ { color: '#755e50' } }>{post.userProfile.nickname}</span>
+//                 </div>
+//                 {post.cover_image_url && (
+//                   <img className="cover-image" src={post.cover_image_url} alt="封面" />
+//                 )}
+//                 <h3 style={ { color: '#000000' } }>{post.title}</h3>
+//                 <p className="post-meta">
+//                   发布时间：{new Date(post.createdAt).toLocaleString()}
+//                 </p>
+//                 <div className="post-actions">
+//                   {/* 点赞按钮 */}
+//                   <button className="icon-btn" onClick={(e) => { e.stopPropagation(); toggleLike(post.id, post.liked, post.user_id); }}>
+//                     <GoodTwo theme="outline" size="24" fill={post.liked ? '#f00' : '#fff'} />
+//                     <span>{post.likeCount}</span>
+//                   </button>
+  
+//                   {/* 收藏按钮 */}
+//                   <button className="icon-btn" onClick={(e) => { e.stopPropagation(); toggleCollect(post.id, post.collected, post.user_id); }}>
+//                     <Star theme="outline" size="24" fill={post.collected ? '#ffd700' : '#fff'} />
+//                     <span>{post.collectCount}</span>
+//                   </button>
+  
+//                   <Link href={`/forum/post/${post.id}`} className="icon-btn" onClick={(e) => e.stopPropagation()}>
+//                     <Comment theme="outline" size="24" fill="#fff" />
+//                     <span>{post.commentCount}</span>
+//                   </Link>
+//                 </div>
+//               </Link>
+//             ))
+//       }
+  
+//       <div className="pagination">
+//         <button disabled={page === 1} onClick={() => setPage(page - 1)}>上一页</button>
+//         <span>第 {page} 页 / 共 {totalPages} 页</span>
+//         <button disabled={page === totalPages} onClick={() => setPage(page + 1)}>下一页</button>
+//       </div>
+//     </div>
+//   );
+  
+// };
+
+// export default PostList;
diff --git a/src/pages/Forum/posts-main/components/SearchBar.css b/src/pages/Forum/posts-main/components/SearchBar.css
index b74f9d2..60ba679 100644
--- a/src/pages/Forum/posts-main/components/SearchBar.css
+++ b/src/pages/Forum/posts-main/components/SearchBar.css
@@ -3,5 +3,19 @@
     align-items: center;
     gap: 10px;
     margin-bottom: 20px;
+    margin-top: 20px;
+    margin-left: 950px;
   }
-  
\ No newline at end of file
+  
+  .search-btn {
+    margin-right: -3px;
+    background-color: #e9ded2;
+    /* 文字颜色 */
+    color: #4b322b;
+    padding: 8px 10px;     /* 控制按钮的高度和宽度 */
+    font-size: 15px;       /* 控制文字大小 */
+  }
+
+  .search-input {
+    font-size: 15px;       /* 控制文字大小 */
+  }
\ No newline at end of file
