diff --git a/Merge/front/src/components/HomeFeed.jsx b/Merge/front/src/components/HomeFeed.jsx
index 0f3c0fe..82e027a 100644
--- a/Merge/front/src/components/HomeFeed.jsx
+++ b/Merge/front/src/components/HomeFeed.jsx
@@ -8,7 +8,6 @@
 import { getUserInfo } from '../utils/auth'
 import { deepRecommend } from '../api/recommend_rhj'
 import postsAPI from '../api/posts_api'
-import MediaPreview from './MediaPreview'
 import '../style/HomeFeed.css'
 
 const categories = [
@@ -60,10 +59,9 @@
               title:  d.title,
               author: `作者 ${d.user_id}`,
               avatar: `https://i.pravatar.cc/40?img=${d.user_id}`,
-              media:  d.media_urls?.[0] || '', // 改为 media，支持图片和视频
+              img:    d.media_urls?.[0] || '',
               likes:  d.heat,
-              content: d.content || '',
-              mediaUrls: d.media_urls || [] // 保存所有媒体URL
+              content: d.content || ''
             }
           } catch {
             return {
@@ -71,10 +69,9 @@
               title: item.title,
               author: item.author || '佚名',
               avatar: `https://i.pravatar.cc/40?img=${item.id}`,
-              media: item.img || '',
+              img: item.img || '',
               likes: item.heat || 0,
-              content: item.content || '',
-              mediaUrls: []
+              content: item.content || ''
             }
           }
         })
@@ -104,10 +101,9 @@
               title:  d.title,
               author: `作者 ${d.user_id}`,
               avatar: `https://i.pravatar.cc/40?img=${d.user_id}`,
-              media:  d.media_urls?.[0] || '', // 改为 media，支持图片和视频
+              img:    d.media_urls?.[0] || '',
               likes:  d.heat,
-              content: d.content || '',
-              mediaUrls: d.media_urls || [] // 保存所有媒体URL
+              content: d.content || ''
             }
           } catch {
             // 拉详情失败时兜底
@@ -116,10 +112,9 @@
               title: item.title,
               author: item.author || '佚名',
               avatar: `https://i.pravatar.cc/40?img=${item.id}`,
-              media: item.img || '',
+              img: item.img || '',
               likes: item.heat || 0,
-              content: item.content || '',
-              mediaUrls: []
+              content: item.content || ''
             }
           }
         })
@@ -149,10 +144,9 @@
               title:  d.title,
               author: `作者 ${d.user_id}`,
               avatar: `https://i.pravatar.cc/40?img=${d.user_id}`,
-              media:  d.media_urls?.[0] || '', // 改为 media，支持图片和视频
+              img:    d.media_urls?.[0] || '',
               likes:  d.heat,
-              content: d.content || '',
-              mediaUrls: d.media_urls || [] // 保存所有媒体URL
+              content: d.content || ''
             }
           } catch {
             // 拉详情失败时兜底
@@ -161,10 +155,9 @@
               title: item.title,
               author: item.author || '佚名',
               avatar: `https://i.pravatar.cc/40?img=${item.id}`,
-              media: item.img || '',
+              img: item.img || '',
               likes: item.heat || 0,
-              content: item.content || '',
-              mediaUrls: []
+              content: item.content || ''
             }
           }
         })
@@ -194,10 +187,9 @@
               title:  d.title,
               author: `作者 ${d.user_id}`,
               avatar: `https://i.pravatar.cc/40?img=${d.user_id}`,
-              media:  d.media_urls?.[0] || '', // 改为 media，支持图片和视频
+              img:    d.media_urls?.[0] || '',
               likes:  d.heat,
-              content: d.content || '',
-              mediaUrls: d.media_urls || [] // 保存所有媒体URL
+              content: d.content || ''
             }
           } catch {
             return {
@@ -205,10 +197,9 @@
               title: item.title,
               author: item.author || '佚名',
               avatar: `https://i.pravatar.cc/40?img=${item.id}`,
-              media: item.img || '',
+              img: item.img || '',
               likes: item.heat || 0,
-              content: item.content || '',
-              mediaUrls: []
+              content: item.content || ''
             }
           }
         })
@@ -269,11 +260,9 @@
               id:     d.id,
               title:  d.title,
               author: `作者 ${d.user_id}`,
-              authorId: d.user_id,
-              avatar: `http://192.168.5.200:8080/static/profile.webp`,
-              media:  d.media_urls?.[0] || '', // 改为 media，支持图片和视频
-              likes:  d.heat,
-              mediaUrls: d.media_urls || [] // 保存所有媒体URL
+              // avatar: `https://i.pravatar.cc/40?img=${d.user_id}`,
+              img:    d.media_urls?.[0] || '', // 用第一张媒体作为封面
+              likes:  d.heat
             }
           })
         )
@@ -315,8 +304,6 @@
     }
   }
 
-  const [previewImg, setPreviewImg] = useState(null)
-
   const handlePostClick = (postId) => {
     navigate(`/post/${postId}`)
   }
@@ -444,20 +431,7 @@
           ) : (
             items.map(item => (
               <div key={item.id} className="feed-card" onClick={() => handlePostClick(item.id)}>
-                {item.media && (
-                  <MediaPreview
-                    url={item.media}
-                    alt={item.title}
-                    className="card-img"
-                    onClick={(url) => {
-                      // 对于图片，显示预览
-                      if (!url.toLowerCase().includes('video') && !url.includes('.mp4') && !url.includes('.webm')) {
-                        setPreviewImg(url)
-                      }
-                    }}
-                    style={{ cursor: 'pointer' }}
-                  />
-                )}
+                {item.img && <img className="card-img" src={item.img} alt={item.title} />}
                 <h3 className="card-title">{item.title}</h3>
                 {item.content && <div className="card-content">{item.content.slice(0, 60) || ''}</div>}
                 <div className="card-footer">
@@ -475,37 +449,6 @@
           )}
         </div>
       )}
-
-      {/* 图片预览弹窗 */}
-      {previewImg && (
-        <div 
-          className="img-preview-mask" 
-          style={{
-            position: 'fixed',
-            zIndex: 9999,
-            top: 0,
-            left: 0,
-            right: 0,
-            bottom: 0,
-            background: 'rgba(0,0,0,0.7)',
-            display: 'flex',
-            alignItems: 'center',
-            justifyContent: 'center'
-          }} 
-          onClick={() => setPreviewImg(null)}
-        >
-          <img 
-            src={previewImg} 
-            alt="大图预览" 
-            style={{
-              maxWidth: '90vw',
-              maxHeight: '90vh',
-              borderRadius: 12,
-              boxShadow: '0 4px 24px #0008'
-            }} 
-          />
-        </div>
-      )}
     </div>
   )
 }
