博客列表 >使用flex完成PHP中文网(移动端)的布局--PHP线上培训第十期1227

使用flex完成PHP中文网(移动端)的布局--PHP线上培训第十期1227

高的PHP十期培训学习笔记
高的PHP十期培训学习笔记原创
2020年01月02日 09:40:25519浏览

通过flex来完成一个移动端首页的布局练习

目标效果图(因为页面太大,缩小截图有点问题,可以看下面的分析图)

页面结构分析

按照结构分析图来写HTML架构

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>使用flex完成PHP中文网(移动端)的布局</title>
  6. <link rel="stylesheet" href="index.css">
  7. <link rel="stylesheet" href="static/font/iconfont.css">
  8. </head>
  9. <body>
  10. <!--头部-->
  11. <header>
  12. <a href=""><img src="static/images/user.jpg" alt=""></a>
  13. <a href=""><img src="static/images/logo.png" alt=""></a>
  14. <a href=""><i class="iconfont icon-ai-list"></i></a>
  15. </header>
  16. <!-- 轮播图-->
  17. <div class="banner">
  18. <img src="static/images/banner.jpg" alt="">
  19. </div>
  20. <!-- 导航菜单-->
  21. <nav>
  22. <ul>
  23. <li>
  24. <a href="">
  25. <img src="static/images/html.png" alt="">
  26. <span>HTML/CSS</span>
  27. </a>
  28. </li>
  29. <li>
  30. <a href="">
  31. <img src="static/images/JavaScript.png" alt="">
  32. <span>JavaScipt</span>
  33. </a>
  34. </li>
  35. <li>
  36. <a href="">
  37. <img src="static/images/code.png" alt="">
  38. <span>服务器端</span>
  39. </a>
  40. </li>
  41. <li>
  42. <a href="">
  43. <img src="static/images/sql.png" alt="">
  44. <span>数据库</span>
  45. </a>
  46. </li>
  47. </ul>
  48. <ul>
  49. <li>
  50. <a href="">
  51. <img src="static/images/app.png" alt="">
  52. <span>移动端</span>
  53. </a>
  54. </li>
  55. <li>
  56. <a href="">
  57. <img src="static/images/manual.png" alt="">
  58. <span>手册</span>
  59. </a>
  60. </li>
  61. <li>
  62. <a href="">
  63. <img src="static/images/tool2.png" alt="">
  64. <span>工具</span>
  65. </a>
  66. </li>
  67. <li>
  68. <a href="">
  69. <img src="static/images/live.png" alt="">
  70. <span>直播</span>
  71. </a>
  72. </li>
  73. </ul>
  74. </nav>
  75. <!--主体-->
  76. <main>
  77. <!-- 推荐课程-->
  78. <div class="kecheng">
  79. <h3>推荐课程</h3>
  80. <div>
  81. <a href=""><img src="static/images/tl1.jpg" alt=""></a>
  82. <a href=""><img src="static/images/tl2.jpg" alt=""></a>
  83. </div>
  84. <div>
  85. <div>
  86. <a href=""><img src="static/images/wz1.jpg" alt=""></a>
  87. <div>
  88. <a href="">CI框架30分钟极速入门</a>
  89. <div>
  90. <span>中级</span>
  91. <span>55871次播放</span>
  92. </div>
  93. </div>
  94. </div>
  95. <div>
  96. <a href=""><img src="static/images/wz2.jpg" alt=""></a>
  97. <div>
  98. <a href="">2018前端入门_HTML5</a>
  99. <div>
  100. <span>中级</span>
  101. <span>55871次播放</span>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. <!--最新更新-->
  108. <div class="new">
  109. <h3>最新更新</h3>
  110. <div>
  111. <a href=""><img src="static/images/wz3.jpg" alt=""></a>
  112. <div>
  113. <a href="">2019python自学视频</a>
  114. <span>本课程适合想从零开始学习 Python 编程语言的开发人员。由浅入深的</span>
  115. <div>
  116. <span>初级</span>
  117. <span>3654播放</span>
  118. </div>
  119. </div>
  120. </div>
  121. <div>
  122. <a href=""><img src="static/images/wz4.png" alt=""></a>
  123. <div>
  124. <a href="">PHP开发免费公益直播课</a>
  125. <span>本课程适合想从零开始学习 Python 编程语言的开发人员。由浅入深的</span>
  126. <div>
  127. <span>初级</span>
  128. <span>3654播放</span>
  129. </div>
  130. </div>
  131. </div>
  132. <div>
  133. <a href=""><img src="static/images/wz5.jpg" alt=""></a>
  134. <div>
  135. <a href="">从零开始到WEB响应式布局</a>
  136. <span>本课程适合想从零开始学习 Python 编程语言的开发人员。由浅入深的</span>
  137. <div>
  138. <span>初级</span>
  139. <span>3654播放</span>
  140. </div>
  141. </div>
  142. </div>
  143. <div>
  144. <a href=""><img src="static/images/wz6.png" alt=""></a>
  145. <div>
  146. <a href="">PHP文件基础操作</a>
  147. <span>本课程适合想从零开始学习 Python 编程语言的开发人员。由浅入深的</span>
  148. <div>
  149. <span>初级</span>
  150. <span>3654播放</span>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. <!--最新文章-->
  156. <div class="article">
  157. <h3>最新文章</h3>
  158. <div>
  159. <div>
  160. <a href="">5个PHP开发者应该知道的Composer小技巧</a>
  161. <span>发布时间:2019-12-31</span>
  162. </div>
  163. <a href=""><img src="static/images/wz1.jpg" alt=""></a>
  164. </div>
  165. <div>
  166. <div>
  167. <a href="">解决PHP中Web程序中shell_exec()执行Shell脚本不成功问题</a>
  168. <span>发布时间:2019-12-31</span>
  169. </div>
  170. <a href=""><img src="static/images/wz2.jpg" alt=""></a>
  171. </div>
  172. <div>
  173. <div>
  174. <a href="">PHP执行Linux命令的两个有用的函数exec和shell_exec</a>
  175. <span>发布时间:2019-12-31</span>
  176. </div>
  177. <a href=""><img src="static/images/wz3.jpg" alt=""></a>
  178. </div>
  179. <div>
  180. <div>
  181. <a href="">php实现利用expat方式解析xml文件</a>
  182. <span>发布时间:2019-12-31</span>
  183. </div>
  184. <a href=""><img src="static/images/wz4.png" alt=""></a>
  185. </div>
  186. <h4><a href="">更多内容</a></h4>
  187. </div>
  188. <!-- 最新博文-->
  189. <div class="blog">
  190. <h3>最新博文</h3>
  191. <div>
  192. <a href="">composer安装laravel,nginx服务器路配置解决404问题,创建简单的</a>
  193. <span>2019-12-27</span>
  194. </div>
  195. <div>
  196. <a href="">composer安装laravel,nginx服务器路配置解决404问题,创建简单的</a>
  197. <span>2019-12-27</span>
  198. </div>
  199. <div>
  200. <a href="">composer安装laravel,nginx服务器路配置解决404问题,创建简单的</a>
  201. <span>2019-12-27</span>
  202. </div>
  203. <div>
  204. <a href="">composer安装laravel,nginx服务器路配置解决404问题,创建简单的</a>
  205. <span>2019-12-27</span>
  206. </div>
  207. <h4><a href="">更多内容</a></h4>
  208. </div>
  209. <!-- 最新问答-->
  210. <div class="wd">
  211. <h3>最新问答</h3>
  212. <div>
  213. <a href="">composer安装laravel,nginx服务器路配置解决404问题,创建简单的</a>
  214. <span>2019-12-27</span>
  215. </div>
  216. <div>
  217. <a href="">composer安装laravel,nginx服务器路配置解决404问题,创建简单的</a>
  218. <span>2019-12-27</span>
  219. </div>
  220. <div>
  221. <a href="">composer安装laravel,nginx服务器路配置解决404问题,创建简单的</a>
  222. <span>2019-12-27</span>
  223. </div>
  224. <div>
  225. <a href="">composer安装laravel,nginx服务器路配置解决404问题,创建简单的</a>
  226. <span>2019-12-27</span>
  227. </div>
  228. <h4><a href="">更多内容</a></h4>
  229. </div>
  230. </main>
  231. <!--尾部-->
  232. <footer>
  233. <a href="" ><i class="iconfont icon-shouye"></i>首页</a>
  234. <a href="" ><i class="iconfont icon-bofang"></i>视频</a>
  235. <a href="" ><i class="iconfont icon--shequ"></i>社区</a>
  236. <a href="" ><i class="iconfont icon-renyuanguanli"></i>我的</a>
  237. </footer>
  238. </body>
  239. </html>

运行效果如下(没有添加样式表):

根据页面架构按顺序写样式表

index样式表

  1. @import "public_reset.css";
  2. /*头部*/
  3. header {
  4. /*固定在顶部不动*/
  5. position: fixed;
  6. top: 0;
  7. width: 100%;
  8. max-width: 768px;
  9. height: 44px;
  10. background-color: #282828;
  11. display: flex;
  12. /*垂直居中对齐*/
  13. align-items: center;
  14. /*两端对齐*/
  15. justify-content: space-between;
  16. }
  17. header > a > i {
  18. color: #ffffff;
  19. /*默认字体的1.2倍*/
  20. font-size: 1.2rem;
  21. margin-right: 10px;
  22. }
  23. header > a > img:first-of-type,
  24. header > img:last-of-type {
  25. width: 28px;
  26. height: 28px;
  27. margin: 5px;
  28. }
  29. header > a > img:first-of-type {
  30. border-radius: 50%;
  31. }
  32. header a:nth-of-type(2) img{
  33. width: 92px;
  34. height: 44px;
  35. display: block;
  36. }
  37. /*轮播图*/
  38. .banner {
  39. display: flex;
  40. height: 200px;
  41. margin-top: 44px;
  42. }
  43. /*导航菜单*/
  44. nav {
  45. background-color: #ffffff;
  46. display: flex;
  47. flex-flow: column nowrap;
  48. }
  49. nav img {
  50. width: 48px;
  51. height: 48px;
  52. }
  53. nav > ul {
  54. display: flex;
  55. }
  56. nav > ul > li {
  57. /*分配全部剩余空间*/
  58. flex: 1;
  59. }
  60. nav > ul > li > a {
  61. display: flex;
  62. /*列对齐允许换行*/
  63. flex-flow: column wrap;
  64. /*垂直居中*/
  65. align-items: center;
  66. margin: 10px;
  67. }
  68. nav > ul > li > a {
  69. margin-top: 5px;
  70. }
  71. /*主体*/
  72. main {
  73. display: flex;
  74. flex-direction: column;
  75. }
  76. /*推荐课程*/
  77. /*天龙八部*/
  78. main > .kecheng > div:first-of-type {
  79. display: flex;
  80. }
  81. main > .kecheng > div:first-of-type > a {
  82. margin: 5px;
  83. flex: 1;
  84. }
  85. main > .kecheng > div:first-of-type > a > img {
  86. height: 90px;
  87. }
  88. /*带标题的课程*/
  89. main > .kecheng > div:last-of-type {
  90. display: flex;
  91. flex-flow: column;
  92. }
  93. main > .kecheng > div:last-of-type > div {
  94. background-color: #fff;
  95. margin: 5px;
  96. height: 100px;
  97. display: flex;
  98. }
  99. main > .kecheng > div:last-of-type > div img {
  100. width: 350px;
  101. height: 100px;
  102. }
  103. main > .kecheng > div:last-of-type > div > div {
  104. display: flex;
  105. flex: 1;
  106. flex-direction: column;
  107. margin-top: 10px;
  108. padding-left: 10px;
  109. }
  110. main > .kecheng > div:last-of-type > div > div a {
  111. font-size: 16px;
  112. }
  113. main > .kecheng > div:last-of-type > div > div {
  114. display: flex;
  115. color: #888888;
  116. }
  117. main > .kecheng > div:last-of-type > div > div span:first-of-type {
  118. background-color: #dddddd;
  119. color: #ffffff;
  120. border-radius: 3px;
  121. padding: 0 5px;
  122. }
  123. /*最新更新*/
  124. main > .new {
  125. display: flex;
  126. flex-direction: column;
  127. }
  128. main > .new > div {
  129. display: flex;
  130. justify-content: space-between;
  131. background-color: #fff;
  132. margin: 5px;
  133. height: 100px;
  134. }
  135. main > .new > div img {
  136. width: 350px;
  137. height: 100px;
  138. }
  139. main > .new > div > div {
  140. display: flex;
  141. flex-direction: column;
  142. margin: 5px;
  143. }
  144. main > .new > div > div a {
  145. font-size: 16px;
  146. }
  147. main > .new > div > div span {
  148. color: #666666;
  149. }
  150. main > .new > div > div > div span:first-of-type {
  151. background-color: #dddddd;
  152. color: #ffffff;
  153. border-radius: 3px;
  154. padding: 0 5px;
  155. }
  156. /*最新文章*/
  157. main > .article {
  158. display: flex;
  159. flex-direction: column;
  160. }
  161. main > .article > div {
  162. display: flex;
  163. background-color: #fff;
  164. margin: 5px;
  165. height: 100px;
  166. justify-content: space-between;
  167. }
  168. main > .article > div img {
  169. width: 350px;
  170. height: 100px;
  171. }
  172. main > .article > div > div {
  173. display: flex;
  174. flex-direction: column;
  175. margin: 5px;
  176. }
  177. main > .article > div > div a {
  178. font-size: 16px;
  179. }
  180. main > .article > div > div span {
  181. color: #666666;
  182. }
  183. /*最新博文*/
  184. main > .blog >
  185. {
  186. display: flex;
  187. flex-direction: column;
  188. }
  189. main > .blog > div {
  190. display: flex;
  191. background-color: #fff;
  192. margin: 5px;
  193. padding: 10px;
  194. box-sizing: border-box;
  195. height: 50px;
  196. justify-content: space-between;
  197. align-items: center;
  198. box-shadow: 0 2px 4px #888888;
  199. }
  200. /*最新问答*/
  201. main > .wd >
  202. {
  203. display: flex;
  204. flex-direction: column;
  205. }
  206. main > .wd > div {
  207. display: flex;
  208. background-color: #fff;
  209. margin: 5px;
  210. padding: 10px;
  211. box-sizing: border-box;
  212. height: 50px;
  213. justify-content: space-between;
  214. align-items: center;
  215. box-shadow: 0 2px 4px #888888;
  216. }
  217. h4 {
  218. display: block;
  219. line-height: 10px;
  220. text-align: center;
  221. background: #fff;
  222. padding: 10px 0;
  223. }
  224. /*尾部*/
  225. footer {
  226. display: flex;
  227. justify-content: space-around;
  228. position: fixed;
  229. bottom: 0;
  230. width: 100%;
  231. max-width: 768px;
  232. height: 50px;
  233. border-top: 1px solid #ccc;
  234. margin-top: 10px;
  235. background-color: #ffffff;
  236. }
  237. footer > a {
  238. display: flex;
  239. flex-direction: column;
  240. justify-content: center;
  241. align-items: center;
  242. }

公共样式表

  1. /*初始化浏览器*/
  2. body {
  3. background-color: #cccccc;
  4. /*设置页面宽度*/
  5. max-width: 768px;
  6. /*设置居中*/
  7. margin: 0 auto;
  8. }
  9. a {
  10. color: #282828;
  11. /*去掉字体下划线*/
  12. text-decoration: none;
  13. font-size: 14px;
  14. }
  15. img {
  16. width: 100%;
  17. }
  18. ul, li {
  19. margin: 0;
  20. padding: 0;
  21. }
  22. li {
  23. list-style: none;
  24. }

最终效果

最后总结

1、初学者(尤其是英语不好的)一定要做好笔记和注释,这样记不得时可以翻看前面的笔记
2、在写HTML之前一定要把页面的架构理清,区块划分好,这样写的代码更清晰
3、在写这个页面时出现一个问题,页面中最后的两个区块(最新博文和最新问答)的样式一样,我想使用

  1. main > .blog >,
  2. main > .wd >
  3. {}

这种写法,但运行时不生效(只有一个区块生效),是什么原因?

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
我说的是英语不好,要记好笔记和注释,方便复习;使用英语单词更易以后学习别人的代码,所以一些英语还是要记的