博客列表 >前端布局实战-仿php中文网移动端首页

前端布局实战-仿php中文网移动端首页

岂几岂几
岂几岂几原创
2020年04月12日 16:54:54811浏览

前端布局实战-仿php中文网移动端首页

1. 实战心得

这次心得写在最前。实现其实听课的同学基本都能实现,而做实战作业最重要的,我认为是总结实现过程中遇到的坑,并为其中的一些疑惑寻找答案。下面是我的一些心得和疑问,请老师帮忙解惑。

  • 一个实战作业,花了半天时间才完成,挺挫败的,里面用到部分老师没有教过的知识,需要去百度,如:标题过长自动隐藏并显示“…”等。
  • 一个头疼的问题,各个区块之间有部分相同的样式,也有自己单独的样式,如何安排才能让css样式代码易读性高一些?当我完成编码后,回头再看自己写的css样式,简直是乱到不想再看……
  • 一个奇怪的现象,用position把<header><footer>分别固定在顶部和底部,在火狐中的预览,有时会出现顶部或底部没有固定在其应在的地方的情况。
  • 发现自己一个类似孔乙己茴字有几种写法的怪癖,文字图标的iconfont样式优先级高于元素选择器,不得不为头部/底部文字图标增加单独的样式类,使用类选择器来控制它们的大小。虽然功能实现了,但是总感觉是“曲线救国”的方式,很不舒服。
  • 一个纠结的想法,在实现过程中,大量使用了flex弹性布局。这种做法是否欠妥?算不算是“滥用”?

2. 代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>php中文网</title>
  7. <link rel="stylesheet" href="static/css/font-icon.css">
  8. <style>
  9. html {
  10. width: 100vw;
  11. height: 100vw;
  12. font-size: 14px;
  13. }
  14. body {
  15. margin: 0;
  16. padding: 0;
  17. display: flex;
  18. flex-flow: column nowrap;
  19. flex: 0 0 auto;
  20. background-color: #f1f1f1;
  21. }
  22. header {
  23. /* 弹性布局 */
  24. display: flex;
  25. /* 主轴水平, 不折行 */
  26. flex-flow: row nowrap;
  27. /* 两端对齐 */
  28. justify-content: space-between;
  29. background-color: black;
  30. color: white;
  31. font-size: 2rem;
  32. height: 45px;
  33. align-items: center;
  34. padding: 0 10px;
  35. position: fixed;
  36. top: 0;
  37. width: 95vw;
  38. }
  39. header .head-icon {
  40. font-size: 1.8rem;
  41. }
  42. header img {
  43. height: 38px;
  44. }
  45. body>section:first-of-type {
  46. margin-top: 45px;
  47. height: 150px;
  48. }
  49. body>section:first-of-type img {
  50. height: 150px;
  51. width: 100vw;
  52. }
  53. body .nav {
  54. padding: 10px;
  55. display: flex;
  56. flex-flow: row wrap;
  57. justify-content: space-between;
  58. align-content: space-between;
  59. background-color: white;
  60. max-height: 172px;
  61. box-sizing: border-box;
  62. }
  63. body .nav .nav-item {
  64. width: 75px;
  65. text-decoration: none;
  66. display: flex;
  67. flex-flow: column nowrap;
  68. align-items: center;
  69. }
  70. body .nav .nav-item img {
  71. width: 60%;
  72. }
  73. body .nav .nav-item span {
  74. text-align: center;
  75. font-weight: bold;
  76. color: #666;
  77. margin-top: 5px;
  78. }
  79. body .recommend,
  80. .newest-course,
  81. .newest-article,
  82. .newest-blog,
  83. .newest-QA {
  84. padding: 10px;
  85. box-sizing: border-box;
  86. }
  87. body .recommend h2,
  88. .newest-course h2,
  89. .newest-article h2,
  90. .newest-blog h2,
  91. .newest-QA h2 {
  92. color: #aaa;
  93. font-size: 18px;
  94. }
  95. body .recommend .course-box,
  96. .newest-course .course-box {
  97. display: flex;
  98. flex-flow: row nowrap;
  99. justify-content: space-between;
  100. flex: 1 1 auto;
  101. width: 100%;
  102. }
  103. body .recommend .course-box .course-item:first-child {
  104. margin-right: 10px;
  105. }
  106. body .recommend .course-box .course-item img {
  107. width: 100%;
  108. }
  109. body .course-list {
  110. display: flex;
  111. flex-flow: column nowrap;
  112. justify-content: flex-start;
  113. width: 100%;
  114. /*
  115. padding: 10px; */
  116. margin-top: 15px;
  117. }
  118. body .course-list .course-item1 {
  119. display: flex;
  120. flex-flow: row nowrap;
  121. flex: 1 1 auto;
  122. width: 100%;
  123. text-decoration: none;
  124. background-color: white;
  125. padding: 10px;
  126. box-sizing: border-box;
  127. }
  128. body .course-list .course-item1:not(:first-child) {
  129. margin-top: 20px;
  130. }
  131. body .newest-article .course-list .course-item1:not(:first-child) {
  132. margin-top: 10px;
  133. }
  134. body .newest-article .course-list .course-item1:last-child {
  135. padding: 0;
  136. text-align: center;
  137. }
  138. body .newest-article .course-list .course-item1 .more {
  139. display: block;
  140. margin: 10px auto;
  141. color: #333;
  142. }
  143. body .course-list .course-item1 img {
  144. width: 40%;
  145. }
  146. body .newest-article .course-list .course-item1 img {
  147. width: 30%;
  148. }
  149. body .course-list .course-item1 .course-desc {
  150. width: 60%;
  151. margin-left: 10px;
  152. /* 强制不换行 */
  153. white-space: nowrap;
  154. overflow: hidden;
  155. /* 加省略号 */
  156. text-overflow: ellipsis;
  157. }
  158. body .newest-article .course-list .course-item1 .course-desc {
  159. width: 70%;
  160. margin-right: 10px;
  161. }
  162. body .course-list .course-item1 .course-desc>p:first-of-type {
  163. margin-top: 0;
  164. font-size: 18px;
  165. color: #666;
  166. overflow: hidden;
  167. /* 加省略号 */
  168. text-overflow: ellipsis;
  169. }
  170. body .course-list .course-item1 .course-desc>p:nth-of-type(2) {
  171. color: #999;
  172. overflow: hidden;
  173. text-overflow: ellipsis;
  174. }
  175. body .course-list .course-item1 .course-desc>p:last-of-type span:first-of-type {
  176. background-color: #333;
  177. color: white;
  178. font-size: 10px;
  179. padding: 3px;
  180. border-radius: 10px;
  181. }
  182. body .newest-article .course-list .course-item1 .course-desc>p:last-of-type span:first-of-type {
  183. font-size: 12px;
  184. margin-left: unset;
  185. background-color: unset;
  186. color: #666;
  187. border-radius: unset;
  188. }
  189. body .course-list .course-item1 .course-desc>p:last-of-type {
  190. display: flex;
  191. flex-flow: row nowrap;
  192. justify-content: space-between;
  193. align-items: center;
  194. }
  195. body .recommend .course-list .course-item1 .course-desc>p:last-of-type {
  196. justify-content: flex-start;
  197. }
  198. body .course-list .course-item1 .course-desc>p:last-of-type span:last-of-type {
  199. font-size: 12px;
  200. margin-left: 5px;
  201. color: #666
  202. }
  203. body .newest-blog .course-list .course-item1,
  204. body .newest-QA .course-list .course-item1 {
  205. display: flex;
  206. flex-flow: row nowrap;
  207. justify-content: space-between;
  208. align-items: center;
  209. margin-top: 10px;
  210. color: #666;
  211. }
  212. body .newest-blog .course-list .course-item1 h4,
  213. body .newest-QA .course-list .course-item1 h4 {
  214. margin: 0;
  215. white-space: nowrap;
  216. overflow: hidden;
  217. /* 加省略号 */
  218. text-overflow: ellipsis;
  219. margin-right: 10px;
  220. }
  221. body .newest-blog .course-list .course-item1:last-child,
  222. body .newest-QA .course-list .course-item1:last-child {
  223. padding: 0;
  224. text-align: center;
  225. }
  226. body .newest-blog .course-list .course-item1 .more,
  227. body .newest-QA .course-list .course-item1 .more {
  228. display: block;
  229. margin: 10px auto;
  230. color: #333;
  231. }
  232. footer {
  233. display: flex;
  234. flex-flow: row nowrap;
  235. flex: 0 0 auto;
  236. justify-content: space-around;
  237. position: fixed;
  238. bottom: 0;
  239. width: 100%;
  240. background: #ddd;
  241. padding: 10px 0;
  242. border-top: 1px solid #aaa;
  243. }
  244. footer .bottom-btn {
  245. display: flex;
  246. flex-flow: column nowrap;
  247. font-size: 14px;
  248. color: #999
  249. }
  250. footer .bottom-icon {
  251. font-size: 1.5rem;
  252. text-align: center;
  253. }
  254. footer .bottom-btn.active {
  255. color: red;
  256. }
  257. </style>
  258. </head>
  259. <body>
  260. <!-- 头部 -->
  261. <header>
  262. <span class="iconfont head-icon"></span>
  263. <img src="static/images/logo.png" alt="php中文网">
  264. <span class="iconfont head-icon"></span>
  265. </header>
  266. <!-- 轮播 -->
  267. <section class="Carousel">
  268. <img src="static/images/lb1.png" alt="">
  269. </section>
  270. <!-- 导航 -->
  271. <section class="nav">
  272. <a class="nav-item" href="#">
  273. <img src="static/images/html.png" alt="">
  274. <span>HTML/CSS</span>
  275. </a>
  276. <a class="nav-item" href="#">
  277. <img src="static/images/JavaScript.png" alt="">
  278. <span>JavaScript</span>
  279. </a>
  280. <a class="nav-item" href="#">
  281. <img src="static/images/code.png" alt="">
  282. <span>服务端</span>
  283. </a>
  284. <a class="nav-item" href="#">
  285. <img src="static/images/sql.png" alt="">
  286. <span>数据库</span>
  287. </a>
  288. <a class="nav-item" href="#">
  289. <img src="static/images/app.png" alt="">
  290. <span>移动端</span>
  291. </a>
  292. <a class="nav-item" href="#">
  293. <img src="static/images/manual.png" alt="">
  294. <span>手册</span>
  295. </a>
  296. <a class="nav-item" href="#">
  297. <img src="static/images/tool2.png" alt="">
  298. <span>工具</span>
  299. </a>
  300. <a class="nav-item" href="#">
  301. <img src="static/images/live.png" alt="">
  302. <span>直播</span>
  303. </a>
  304. </section>
  305. <!-- 推荐课程 -->
  306. <section class="recommend">
  307. <h2>推荐课程</h2>
  308. <div class="course-box">
  309. <a class="course-item">
  310. <img src="static/images/course-item1.jpg" alt="">
  311. </a>
  312. <a class="course-item">
  313. <img src="static/images/course-item2.jpg" alt="">
  314. </a>
  315. </div>
  316. <div class="course-list">
  317. <a href="#" class="course-item1">
  318. <img src="static/images/course-item1-1.jpg" alt="">
  319. <div class="course-desc">
  320. <p>CI框架30分钟极速入门</p>
  321. <p><span>中级</span><span>61263次播放</span></p>
  322. </div>
  323. </a>
  324. <a href="#" class="course-item1">
  325. <img src="static/images/course-item1-1.jpg" alt="">
  326. <div class="course-desc">
  327. <p>CI框架30分钟极速入门</p>
  328. <p><span>中级</span><span>61263次播放</span></p>
  329. </div>
  330. </a>
  331. </div>
  332. </section>
  333. <!-- 最新更新 -->
  334. <section class="newest-course">
  335. <h2>最新更新</h2>
  336. <div class="course-list">
  337. <a href="#" class="course-item1">
  338. <img src="static/images/course-item1-1.jpg" alt="">
  339. <div class="course-desc">
  340. <p>CI框架30分钟极速入门</p>
  341. <p>老的PHPExcel已经停止更新了</p>
  342. <p><span>中级</span><span>61263次播放</span></p>
  343. </div>
  344. </a>
  345. <a href="#" class="course-item1">
  346. <img src="static/images/course-item1-1.jpg" alt="">
  347. <div class="course-desc">
  348. <p>CI框架30分钟极速入门</p>
  349. <p>老的PHPExcel已经停止更新了</p>
  350. <p><span>中级</span><span>61263次播放</span></p>
  351. </div>
  352. </a>
  353. <a href="#" class="course-item1">
  354. <img src="static/images/course-item1-1.jpg" alt="">
  355. <div class="course-desc">
  356. <p>CI框架30分钟极速入门</p>
  357. <p>老的PHPExcel已经停止更新了</p>
  358. <p><span>中级</span><span>61263次播放</span></p>
  359. </div>
  360. </a>
  361. <a href="#" class="course-item1">
  362. <img src="static/images/course-item1-1.jpg" alt="">
  363. <div class="course-desc">
  364. <p>CI框架30分钟极速入门</p>
  365. <p>老的PHPExcel已经停止更新了</p>
  366. <p><span>中级</span><span>61263次播放</span></p>
  367. </div>
  368. </a>
  369. <a href="#" class="course-item1">
  370. <img src="static/images/course-item1-1.jpg" alt="">
  371. <div class="course-desc">
  372. <p>CI框架30分钟极速入门</p>
  373. <p>老的PHPExcel已经停止更新了</p>
  374. <p><span>中级</span><span>61263次播放</span></p>
  375. </div>
  376. </a>
  377. <a href="#" class="course-item1">
  378. <img src="static/images/course-item1-1.jpg" alt="">
  379. <div class="course-desc">
  380. <p>CI框架30分钟极速入门</p>
  381. <p>老的PHPExcel已经停止更新了啊啊啊啊啊啊啊啊啊啊啊啊</p>
  382. <p><span>中级</span><span>61263次播放</span></p>
  383. </div>
  384. </a>
  385. </div>
  386. </section>
  387. <!-- 最新文章 -->
  388. <section class="newest-article">
  389. <!-- 最新文章 -->
  390. <h2>最新文章</h2>
  391. <div class="course-list">
  392. <a href="#" class="course-item1">
  393. <div class="course-desc">
  394. <p>CI框架30分钟极速入门</p>
  395. <p>
  396. <!-- <span>中级</span> --><span>发布时间:2020-04-11</span></p>
  397. </div>
  398. <img src="static/images/course-item1-1.jpg" alt="">
  399. </a>
  400. <a href="#" class="course-item1">
  401. <div class="course-desc">
  402. <p>CI框架30分钟极速入门</p>
  403. <p>
  404. <!-- <span>中级</span> --><span>发布时间:2020-04-11</span></p>
  405. </div>
  406. <img src="static/images/course-item1-1.jpg" alt="">
  407. </a>
  408. <a href="#" class="course-item1">
  409. <div class="course-desc">
  410. <p>CI框架30分钟极速入门</p>
  411. <p>
  412. <!-- <span>中级</span> --><span>发布时间:2020-04-11</span></p>
  413. </div>
  414. <img src="static/images/course-item1-1.jpg" alt="">
  415. </a>
  416. <a href="#" class="course-item1">
  417. <div class="course-desc">
  418. <p>CI框架30分钟极速入门</p>
  419. <p>
  420. <!-- <span>中级</span> --><span>发布时间:2020-04-11</span></p>
  421. </div>
  422. <img src="static/images/course-item1-1.jpg" alt="">
  423. </a>
  424. <a href="#" class="course-item1">
  425. <div class="course-desc">
  426. <p>CI框架30分钟极速入门</p>
  427. <p>
  428. <!-- <span>中级</span> --><span>发布时间:2020-04-11</span></p>
  429. </div>
  430. <img src="static/images/course-item1-1.jpg" alt="">
  431. </a>
  432. <a href="#" class="course-item1">
  433. <div class="course-desc">
  434. <p>CI框架30分钟极速入门</p>
  435. <p>
  436. <!-- <span>中级</span> --><span>发布时间:2020-04-11</span></p>
  437. </div>
  438. <img src="static/images/course-item1-1.jpg" alt="">
  439. </a>
  440. <a href="#" class="course-item1">
  441. <p class="more">更多内容</p>
  442. </a>
  443. </div>
  444. </section>
  445. <!-- 最新博文 -->
  446. <section class="newest-blog">
  447. <!-- 最新博文 -->
  448. <h2>最新博文</h2>
  449. <div class="course-list">
  450. <a href="#" class="course-item1">
  451. <h4>不出现tp6.0页面aaaaaaaaaaaaadddddddddddddddddddddddddddffffffffffffffffffffffff</h4>
  452. <span>2020-04-12</span>
  453. </a>
  454. <a href="#" class="course-item1">
  455. <h4>不出现tp6.0页面aaaaaaaaaaaaadddddddddddddddddddddddddddffffffffffffffffffffffff</h4>
  456. <span>2020-04-12</span>
  457. </a>
  458. <a href="#" class="course-item1">
  459. <h4>不出现tp6.0页面aaaaaaaaaaaaadddddddddddddddddddddddddddffffffffffffffffffffffff</h4>
  460. <span>2020-04-12</span>
  461. </a>
  462. <a href="#" class="course-item1">
  463. <h4>不出现tp6.0页面aaaaaaaaaaaaadddddddddddddddddddddddddddffffffffffffffffffffffff</h4>
  464. <span>2020-04-12</span>
  465. </a>
  466. <a href="#" class="course-item1">
  467. <h4>不出现tp6.0页面aaaaaaaaaaaaadddddddddddddddddddddddddddffffffffffffffffffffffff</h4>
  468. <span>2020-04-12</span>
  469. </a>
  470. <a href="#" class="course-item1">
  471. <p class="more">更多内容</p>
  472. </a>
  473. </div>
  474. </section>
  475. <!-- 最新问答 -->
  476. <section class="newest-QA">
  477. <!-- 最新问答 -->
  478. <h2>最新问答</h2>
  479. <div class="course-list">
  480. <a href="#" class="course-item1">
  481. <h4>不出现tp6.0页面aaaaaaaaaaaaadddddddddddddddddddddddddddffffffffffffffffffffffff</h4>
  482. <span>2020-04-12</span>
  483. </a>
  484. <a href="#" class="course-item1">
  485. <h4>不出现tp6.0页面aaaaaaaaaaaaadddddddddddddddddddddddddddffffffffffffffffffffffff</h4>
  486. <span>2020-04-12</span>
  487. </a>
  488. <a href="#" class="course-item1">
  489. <h4>不出现tp6.0页面aaaaaaaaaaaaadddddddddddddddddddddddddddffffffffffffffffffffffff</h4>
  490. <span>2020-04-12</span>
  491. </a>
  492. <a href="#" class="course-item1">
  493. <h4>不出现tp6.0页面aaaaaaaaaaaaadddddddddddddddddddddddddddffffffffffffffffffffffff</h4>
  494. <span>2020-04-12</span>
  495. </a>
  496. <a href="#" class="course-item1">
  497. <h4>不出现tp6.0页面aaaaaaaaaaaaadddddddddddddddddddddddddddffffffffffffffffffffffff</h4>
  498. <span>2020-04-12</span>
  499. </a>
  500. <a href="#" class="course-item1">
  501. <p class="more">更多内容</p>
  502. </a>
  503. </div>
  504. </section>
  505. <!-- 底部 -->
  506. <footer>
  507. <div class="bottom-btn active">
  508. <span class="iconfont bottom-icon"></span>
  509. <span>首页</span>
  510. </div>
  511. <div class="bottom-btn">
  512. <span class="iconfont bottom-icon"></span>
  513. <span>视频</span>
  514. </div>
  515. <div class="bottom-btn">
  516. <span class="iconfont bottom-icon"></span>
  517. <span>社区</span>
  518. </div>
  519. <div class="bottom-btn">
  520. <span class="iconfont bottom-icon"></span>
  521. <span>我的</span>
  522. </div>
  523. </footer>
  524. </body>
  525. </html>

3. 显示效果

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议