home.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>鸟类观察社区</title>
  7. <link rel="stylesheet" href="https://at.alicdn.com/t/c/font_4006896_9kq3p2p2z4q.css">
  8. <style>
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  14. }
  15. body {
  16. background-color: #f5f5f5;
  17. color: #333;
  18. max-width: 100vw;
  19. overflow-x: hidden;
  20. }
  21. .container {
  22. padding-bottom: 60px; /* 给底部导航留空间 */
  23. min-height: 100vh;
  24. }
  25. /* 顶部搜索栏 */
  26. .search-bar {
  27. padding: 12px 15px;
  28. background-color: #fff;
  29. position: sticky;
  30. top: 0;
  31. z-index: 10;
  32. box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  33. }
  34. .search-container {
  35. display: flex;
  36. align-items: center;
  37. background-color: #f7f7f7;
  38. border-radius: 20px;
  39. padding: 8px 15px;
  40. }
  41. .city-selector {
  42. display: flex;
  43. align-items: center;
  44. padding-right: 10px;
  45. border-right: 1px solid #e0e0e0;
  46. color: #666;
  47. font-size: 14px;
  48. }
  49. .city-selector i {
  50. font-size: 12px;
  51. margin-left: 4px;
  52. }
  53. .search-input {
  54. flex: 1;
  55. padding: 0 10px;
  56. border: none;
  57. background: transparent;
  58. outline: none;
  59. font-size: 14px;
  60. }
  61. .search-input::placeholder {
  62. color: #999;
  63. }
  64. /* 精选照片轮播 */
  65. .photo-carousel {
  66. padding: 15px;
  67. overflow-x: auto;
  68. white-space: nowrap;
  69. -webkit-overflow-scrolling: touch;
  70. }
  71. .photo-carousel::-webkit-scrollbar {
  72. display: none;
  73. }
  74. .photo-item {
  75. display: inline-block;
  76. width: 70vw;
  77. height: 150px;
  78. border-radius: 12px;
  79. margin-right: 10px;
  80. background-size: cover;
  81. background-position: center;
  82. position: relative;
  83. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  84. }
  85. .photo-author {
  86. position: absolute;
  87. left: 10px;
  88. bottom: 10px;
  89. color: white;
  90. font-size: 12px;
  91. text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
  92. background-color: rgba(0, 0, 0, 0.3);
  93. padding: 2px 8px;
  94. border-radius: 10px;
  95. }
  96. /* 金刚区 */
  97. .icon-group {
  98. display: flex;
  99. justify-content: space-around;
  100. padding: 15px 0;
  101. background-color: #fff;
  102. margin-bottom: 10px;
  103. }
  104. .icon-item {
  105. display: flex;
  106. flex-direction: column;
  107. align-items: center;
  108. }
  109. .icon-circle {
  110. width: 40px;
  111. height: 40px;
  112. border-radius: 50%;
  113. background-color: #f0f9eb;
  114. display: flex;
  115. justify-content: center;
  116. align-items: center;
  117. margin-bottom: 5px;
  118. color: #67c23a;
  119. }
  120. .icon-text {
  121. font-size: 12px;
  122. color: #666;
  123. }
  124. /* 公告区域 */
  125. .announcement {
  126. display: flex;
  127. align-items: center;
  128. padding: 10px 15px;
  129. background-color: #fff;
  130. margin-bottom: 10px;
  131. border-radius: 0;
  132. }
  133. .announcement-icon {
  134. color: #f56c6c;
  135. margin-right: 8px;
  136. }
  137. .announcement-text {
  138. font-size: 14px;
  139. color: #333;
  140. flex: 1;
  141. white-space: nowrap;
  142. overflow: hidden;
  143. text-overflow: ellipsis;
  144. }
  145. /* 推荐标签 */
  146. .tag-group {
  147. padding: 10px 15px;
  148. background-color: #fff;
  149. overflow-x: auto;
  150. white-space: nowrap;
  151. -webkit-overflow-scrolling: touch;
  152. }
  153. .tag-group::-webkit-scrollbar {
  154. display: none;
  155. }
  156. .tag-item {
  157. display: inline-block;
  158. padding: 4px 12px;
  159. background-color: #f5f5f5;
  160. border-radius: 15px;
  161. margin-right: 8px;
  162. font-size: 12px;
  163. color: #666;
  164. }
  165. /* 帖子列表 */
  166. .post-list {
  167. padding: 0 15px;
  168. }
  169. .post-item {
  170. background-color: #fff;
  171. border-radius: 12px;
  172. margin-bottom: 15px;
  173. overflow: hidden;
  174. box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  175. }
  176. .post-header {
  177. display: flex;
  178. justify-content: space-between;
  179. align-items: center;
  180. padding: 12px 15px;
  181. }
  182. .user-info {
  183. display: flex;
  184. align-items: center;
  185. }
  186. .avatar {
  187. width: 40px;
  188. height: 40px;
  189. border-radius: 50%;
  190. margin-right: 10px;
  191. background-color: #eee;
  192. background-size: cover;
  193. }
  194. .user-name {
  195. font-size: 14px;
  196. font-weight: 500;
  197. margin-bottom: 2px;
  198. }
  199. .user-role {
  200. font-size: 12px;
  201. color: #999;
  202. }
  203. .follow-btn {
  204. font-size: 12px;
  205. padding: 4px 10px;
  206. border-radius: 15px;
  207. border: 1px solid #67c23a;
  208. color: #67c23a;
  209. background-color: transparent;
  210. }
  211. .follow-btn.followed {
  212. color: #999;
  213. border-color: #ddd;
  214. }
  215. .post-image {
  216. width: 100%;
  217. height: 200px;
  218. background-size: cover;
  219. background-position: center;
  220. }
  221. .post-footer {
  222. display: flex;
  223. justify-content: space-around;
  224. padding: 10px 0;
  225. border-top: 1px solid #f5f5f5;
  226. }
  227. .action-btn {
  228. display: flex;
  229. align-items: center;
  230. color: #666;
  231. font-size: 12px;
  232. }
  233. .action-btn i {
  234. margin-right: 4px;
  235. font-size: 16px;
  236. }
  237. /* 底部导航 */
  238. .bottom-tab {
  239. position: fixed;
  240. bottom: 0;
  241. left: 0;
  242. right: 0;
  243. display: flex;
  244. justify-content: space-around;
  245. background-color: #fff;
  246. padding: 8px 0;
  247. box-shadow: 0 -1px 5px rgba(0, 0, 0, 0.1);
  248. z-index: 100;
  249. }
  250. .tab-item {
  251. display: flex;
  252. flex-direction: column;
  253. align-items: center;
  254. color: #666;
  255. font-size: 10px;
  256. }
  257. .tab-icon {
  258. font-size: 22px;
  259. margin-bottom: 3px;
  260. }
  261. .tab-center {
  262. position: relative;
  263. top: -15px;
  264. }
  265. .center-icon {
  266. width: 50px;
  267. height: 50px;
  268. background-color: #67c23a;
  269. border-radius: 50%;
  270. display: flex;
  271. justify-content: center;
  272. align-items: center;
  273. color: white;
  274. font-size: 24px;
  275. box-shadow: 0 2px 10px rgba(103, 194, 58, 0.5);
  276. }
  277. /* 美化优化 */
  278. .highlight-text {
  279. color: #67c23a;
  280. }
  281. .divider {
  282. height: 1px;
  283. background-color: #f0f0f0;
  284. margin: 10px 15px;
  285. }
  286. </style>
  287. </head>
  288. <body>
  289. <div class="container">
  290. <!-- 顶部搜索栏 -->
  291. <div class="search-bar">
  292. <div class="search-container">
  293. <div class="city-selector">
  294. <span>南昌</span>
  295. <i class="iconfont icon-arrow-down"></i>
  296. </div>
  297. <input type="text" class="search-input" placeholder="一拍即识,守护羽翼精灵">
  298. <i class="iconfont icon-search" style="color: #999;"></i>
  299. </div>
  300. </div>
  301. <!-- 精选照片轮播 -->
  302. <div class="photo-carousel">
  303. <div class="photo-item" style="background-image: url('https://picsum.photos/600/400?random=1');">
  304. <div class="photo-author">@观鸟爱好者</div>
  305. </div>
  306. <div class="photo-item" style="background-image: url('https://picsum.photos/600/400?random=2');">
  307. <div class="photo-author">@自然摄影师</div>
  308. </div>
  309. <div class="photo-item" style="background-image: url('https://picsum.photos/600/400?random=3');">
  310. <div class="photo-author">@生态保护者</div>
  311. </div>
  312. <div class="photo-item" style="background-image: url('https://picsum.photos/600/400?random=4');">
  313. <div class="photo-author">@鸟类研究员</div>
  314. </div>
  315. <div class="photo-item" style="background-image: url('https://picsum.photos/600/400?random=5');">
  316. <div class="photo-author">@旅行达人</div>
  317. </div>
  318. </div>
  319. <!-- 金刚区 -->
  320. <div class="icon-group">
  321. <div class="icon-item">
  322. <div class="icon-circle">
  323. <i class="iconfont icon-bird"></i>
  324. </div>
  325. <div class="icon-text">查鸟</div>
  326. </div>
  327. <div class="icon-item">
  328. <div class="icon-circle">
  329. <i class="iconfont icon-music"></i>
  330. </div>
  331. <div class="icon-text">鸟音</div>
  332. </div>
  333. <div class="icon-item">
  334. <div class="icon-circle">
  335. <i class="iconfont icon-location"></i>
  336. </div>
  337. <div class="icon-text">附近</div>
  338. </div>
  339. <div class="icon-item">
  340. <div class="icon-circle">
  341. <i class="iconfont icon-recommend"></i>
  342. </div>
  343. <div class="icon-text">推荐</div>
  344. </div>
  345. <div class="icon-item">
  346. <div class="icon-circle">
  347. <i class="iconfont icon-star"></i>
  348. </div>
  349. <div class="icon-text">精选</div>
  350. </div>
  351. </div>
  352. <!-- 公告区域 -->
  353. <div class="announcement">
  354. <i class="iconfont icon-notice announcement-icon"></i>
  355. <div class="announcement-text">鄱阳湖观鸟节即将开幕,点击查看活动详情</div>
  356. <i class="iconfont icon-arrow-right" style="color: #999;"></i>
  357. </div>
  358. <!-- 推荐标签 -->
  359. <div class="tag-group">
  360. <div class="tag-item">世界地球日</div>
  361. <div class="tag-item">霞光鸟影</div>
  362. <div class="tag-item">慢门拍摄</div>
  363. <div class="tag-item">候鸟迁徙</div>
  364. <div class="tag-item">生态保护</div>
  365. <div class="tag-item">摄影技巧</div>
  366. </div>
  367. <div class="divider"></div>
  368. <!-- 帖子列表 -->
  369. <div class="post-list">
  370. <div class="post-item">
  371. <div class="post-header">
  372. <div class="user-info">
  373. <div class="avatar" style="background-image: url('https://picsum.photos/100/100?random=6');"></div>
  374. <div>
  375. <div class="user-name">观鸟达人小王</div>
  376. <div class="user-role">鸟类保护志愿者</div>
  377. </div>
  378. </div>
  379. <button class="follow-btn">+关注</button>
  380. </div>
  381. <div class="post-image" style="background-image: url('https://picsum.photos/400/300?random=7');"></div>
  382. <div class="post-footer">
  383. <div class="action-btn">
  384. <i class="iconfont icon-like"></i>
  385. <span>点赞</span>
  386. </div>
  387. <div class="action-btn">
  388. <i class="iconfont icon-comment"></i>
  389. <span>评论</span>
  390. </div>
  391. <div class="action-btn">
  392. <i class="iconfont icon-share"></i>
  393. <span>分享</span>
  394. </div>
  395. </div>
  396. </div>
  397. <div class="post-item">
  398. <div class="post-header">
  399. <div class="user-info">
  400. <div class="avatar" style="background-image: url('https://picsum.photos/100/100?random=8');"></div>
  401. <div>
  402. <div class="user-name">自然摄影师李</div>
  403. <div class="user-role">专业摄影师</div>
  404. </div>
  405. </div>
  406. <button class="follow-btn followed">已关注</button>
  407. </div>
  408. <div class="post-image" style="background-image: url('https://picsum.photos/400/300?random=9');"></div>
  409. <div class="post-footer">
  410. <div class="action-btn">
  411. <i class="iconfont icon-like"></i>
  412. <span>点赞</span>
  413. </div>
  414. <div class="action-btn">
  415. <i class="iconfont icon-comment"></i>
  416. <span>评论</span>
  417. </div>
  418. <div class="action-btn">
  419. <i class="iconfont icon-share"></i>
  420. <span>分享</span>
  421. </div>
  422. </div>
  423. </div>
  424. </div>
  425. </div>
  426. <!-- 底部导航 -->
  427. <div class="bottom-tab">
  428. <div class="tab-item">
  429. <i class="iconfont icon-home tab-icon"></i>
  430. <span>首页</span>
  431. </div>
  432. <div class="tab-item">
  433. <i class="iconfont icon-edit tab-icon"></i>
  434. <span>发帖</span>
  435. </div>
  436. <div class="tab-item tab-center">
  437. <div class="center-icon">
  438. <i class="iconfont icon-camera"></i>
  439. </div>
  440. <span style="margin-top: 8px;">识别</span>
  441. </div>
  442. <div class="tab-item">
  443. <i class="iconfont icon-message tab-icon"></i>
  444. <span>消息</span>
  445. </div>
  446. <div class="tab-item">
  447. <i class="iconfont icon-user tab-icon"></i>
  448. <span>个人</span>
  449. </div>
  450. </div>
  451. <script>
  452. // 简单的交互逻辑
  453. document.querySelectorAll('.follow-btn').forEach(btn => {
  454. btn.addEventListener('click', function() {
  455. if (this.classList.contains('followed')) {
  456. this.classList.remove('followed');
  457. this.textContent = '+关注';
  458. this.style.color = '#67c23a';
  459. this.style.borderColor = '#67c23a';
  460. } else {
  461. this.classList.add('followed');
  462. this.textContent = '已关注';
  463. this.style.color = '#999';
  464. this.style.borderColor = '#ddd';
  465. }
  466. });
  467. });
  468. // 模拟照片轮播自动滚动
  469. setTimeout(() => {
  470. const carousel = document.querySelector('.photo-carousel');
  471. if (carousel) {
  472. carousel.scrollLeft = 100;
  473. }
  474. }, 1000);
  475. </script>
  476. </body>
  477. </html>