Correction status:qualified
Teacher's comments:前端 就是比较麻烦, 要记得多, 没办法,发量越来越少
下一篇文章是对魅族手机版页面进行的仿制
下面是仿制PHP中文网手机版首页index.html页面的代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="http://blog.buimo.com/demo/phpcn/static/css/init.css"> <link rel="stylesheet" href="http://blog.buimo.com/demo/phpcn/static/css/style.css"> <title>php中文网手机端-首页</title> </head> <body> <!--布局原则: 宽宽自适应, 高度是固定--> <!--固定定位: 顶部--> <div class="top"> <img src="http://blog.buimo.com/demo/phpcn/static/images/user-pic.jpeg" alt=""> <div class="logo"> <img src="http://blog.buimo.com/demo/phpcn/static/images/logo.png" alt=""> </div> <img src="http://blog.buimo.com/demo/phpcn/static/images/user-nav.jpg" alt=""> </div> <!--banner轮播图,这里用图片暂时代替--> <div class="banner"> <img src="http://blog.buimo.com/demo/phpcn/static/images/banner.jpg" alt=""> </div> <!--导航区--> <div class="nav"> <ul> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/html.png" alt=""><br>HTML/CSS</a> </li> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/JavaScript.png" alt=""><br>JavaScript</a> </li> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/code.png" alt=""><br>服务端</a> </li> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/sql.png" alt=""><br>数据库</a> </li> </ul> <ul> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/app.png" alt=""><br>移动端</a> </li> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/manual.png" alt=""><br>手册</a> </li> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/tool2.png" alt=""><br>工具</a> </li> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/live.png" alt=""><br>直播</a> </li> </ul> </div> <!--课程区--> <h3>推荐课程</h3> <div class="courses"> <ul> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/tjkc1.jpg" alt=""></a> </li> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/tjkc2.jpg" alt=""></a> </li> </ul> <div> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/tjkc3.jpg" alt=""></a> <p> <a href="">CI框架30分钟极速入门</a> <br> <span>中级</span><span>49748次播放</span> </p> </div> <div> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/tjkc4.jpg" alt=""></a> <p> <a href="">2018前端入门_HTML5</a> <br> <span>初级</span><span>210066次播放</span> </p> </div> </div> <h3>最新更新</h3> <div class="new-courses"> <div class="course"> <div class="course-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/z1.jpg" alt=""></a> </div> <div class="course-info"> <a href="">Laravel 5.8 中文文档手册</a> <div class="course-main"> <p>《Laravel 5.1/5.8速查表:https://www.php.cn/phpkj/laravel/cheatsheet58.html 》 手册简介:Laravel 5.8 在 Laravel 5.7 的基础上继续进行优化,包括引入新的 Eloquent 关联关系(has-one-through)、优化邮箱验证、基于约定的授权策略类自动注册、 DynamoDB 缓存及 Session 驱动、优化任务调度器的时区配置、支持分配多个认证 guard 到广播频道、PSR-16 缓存驱动规范等等。 </p> <span>中级</span><span>7286次播放</span> </div> </div> </div> <div class="course"> <div class="course-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/z2.jpg" alt=""></a> </div> <div class="course-info"> <a href="">JavaScript极速入门</a> <div class="course-main"> <p>本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......</p> <span>初级</span><span>7093次播放</span> </div> </div> </div> <div class="course"> <div class="course-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/z3.jpg" alt=""></a> </div> <div class="course-info"> <a href="">第七期_直播体验课</a> <div class="course-main"> <p>php中文网第七期线上***今晚(2019.7.1)正式开课啦~~!为了让广大PHP开发爱好者,了解本期的课程,特安排了直播开放课,感兴趣的小伙伴不要错过哟! 晚 20:00-22:00直播 ,报名qq:88526(猪哥)。七期线上班详情:http://www.php.cn/k.html</p> <span>初级</span><span>6671次播放</span> </div> </div> </div> <div class="course"> <div class="course-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/z4.jpg" alt=""></a> </div> <div class="course-info"> <a href="">CSS3 极速入门</a> <div class="course-main"> <p>html和css是组成WEB前端开发最核心的部分,所以结合之前的html课程,我们再来学习本章节的css,将会获得更好的学习体验。课程内容非常有节奏的安排,知识点简单明了,让你从头到尾学习毫无压力……快来学习吧……</p> <span>初级</span><span>6630次播放</span> </div> </div> </div> <div class="course"> <div class="course-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/z5.jpg" alt=""></a> </div> <div class="course-info"> <a href="">HTML5 极速入门</a> <div class="course-main"> <p>在本套课程中,你将学习如何使用 HTML 来创建站点,完成静态网页布局,非常适合HTML5零基础入门,整个轻松明快,简洁生动,让你快速走入HTML5的世界,体会语义化开发的魅力!</p> <span>初级</span><span>5602次播放</span> </div> </div> </div> <div class="course"> <div class="course-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/z6.jpg" alt=""></a> </div> <div class="course-info"> <a href="">nodejs开发基础教程</a> <div class="course-main"> <p>Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。Node.js 使JavaScript 可以在浏览器之外上运行。非常适合前端人员想学习后端技术的同学。</p> <span>初级</span><span>4856次播放</span> </div> </div> </div> </div> <h3>最新文章</h3> <div class="new-article"> <div class="article"> <div class="article-info"> <a href="">php自定义错误处理器</a> <br> <span>发布时间:2019-09-11</span> </div> <div class="article-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/w1.jpg" alt=""></a> </div> </div> <div class="article"> <div class="article-info"> <a href="">Composer简明教程</a> <br> <span>发布时间:2019-09-11</span> </div> <div class="article-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/w2.jpg" alt=""></a> </div> </div> <div class="article"> <div class="article-info"> <a href="">php字符串几个常用的操作函数</a> <br> <span>发布时间:2019-09-11</span> </div> <div class="article-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/w3.jpg" alt=""></a> </div> </div> <div class="article"> <div class="article-info"> <a href="">Sublime Text3 安装svn插件遇到的问题</a> <br> <span>发布时间:2019-09-11</span> </div> <div class="article-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/w4.jpg" alt=""></a> </div> </div> <div class="article"> <div class="article-info"> <a href="">如何解绑宝塔账号</a> <br> <span>发布时间:2019-09-11</span> </div> <div class="article-img"> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/images/w5.jpg" alt=""></a> </div> </div> <div class="article-more"> <a href="">更多内容</a> </div> </div> <!-- 最新博文 --> <h3>最新博文</h3> <div class="new-blog"> <div class="blog-info"> <a href="">mysql查询时间戳和日期的转换</a> <span>2019-09-07</span> </div> <div class="blog-info"> <a href="">小程序实现复制文本内容</a> <span>2019-09-06</span> </div> <div class="blog-info"> <a href="">js获取url链接中的域名部分</a> <span>2019-09-07</span> </div> <div class="blog-info"> <a href="">小程序实现头像图片裁剪</a> <span>2019-09-03</span> </div> <div class="blog-info"> <a href="">《悦帮到家》小程序</a> <span>2019-09-03</span> </div> <div class="blog-more"> <a href="">更多内容</a> </div> </div> <!-- 最新问答 --> <h3>最新问答</h3> <div class="new-wenda"> <div class="wenda-info"> <a href="">localhost打不开?</a> <span>2019-09-11</span> </div> <div class="wenda-info"> <a href="">php之免费常用快递物流api查询接口的使用教程</a> <span>2019-09-10</span> </div> <div class="wenda-info"> <a href="">控制台</a> <span>2019-09-10</span> </div> <div class="wenda-info"> <a href="">为什么我播放不了</a> <span>2019-09-10</span> </div> <div class="wenda-info"> <a href="">求免费的物流查询接口或者源码</a> <span>2019-09-10</span> </div> <div class="wenda-more"> <a href="">更多内容</a> </div> </div> <!--底部--> <div class="clear"></div> <div class="footer"> <ul> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/font-icon/zhuye.png" alt=""><br><span>主页</span></a> </li> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/font-icon/video.png" alt=""><br><span>视频</span></a> </li> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/font-icon/luntan.png" alt=""><br><span>社区</span></a> </li> <li> <a href=""><img src="http://blog.buimo.com/demo/phpcn/static/font-icon/geren.png" alt=""><br><span>我的</span></a> </li> </ul> </div> </body> </html>
下面是init.css 文件的代码:
body { min-width: 320px; max-width: 768px; margin: 0 auto; background: #edeff0; overflow-y: initial; position: relative; /*不要出现水平滚动条*/ overflow-x: hidden; /*设置点击链接跳转时出现高亮,设置为透明: ios / ipad*/ -webkit-tap-highlight-color: transparent; }
下面是style.css 文件的代码:
.top { position: fixed; top: 0; width: 100%; height: 42px; background-color: #444444; min-width: 320px; max-width: 768px; left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); } .top { display: flex; } .top img:first-of-type, .top img:last-of-type { width: 25px; height: 25px; margin-top: 8px; } .top img:first-of-type { border-radius: 50%; margin-left: 5px; } .top .logo { text-align: center; flex: 1; } .top .logo img { width: 94px; height: 45px; margin-top: -1px; } /*轮播图*/ .banner { display: flex; } .banner img { width: 100%; height: 160px; } /*导航区*/ .nav { height: 170px; background-color: white; box-sizing: border-box; } .nav ul { margin: 0; padding: 6px; } .nav ul li { list-style-type: none; text-align: center; height: 75px; } .nav ul li img { width: 45px; height: 45px; } .nav ul li a { text-align: center; color: gray; text-decoration: none; } .nav ul { display: flex; } .nav ul li { flex: 1; } /*推荐课程区*/ h3 { color: gray; display: block; margin-top: 30px; } .courses { height: 326px; color: gray; } .courses ul { margin: 0; padding: 0; list-style: none; /*flex布局*/ display: flex; } .courses ul li { padding: 5px; } .courses ul img { width: 100%; height: 90px; } .courses div { background-color: white; padding: 10px; margin-top: 10px; height: 90px; /*flex布局*/ display: flex; justify-content: flex-start; } .courses div img { width: 100%; height: 90px; } .courses div a { text-decoration: none; color: gray; flex: 0.45; } .courses div p { flex: 0.55; margin-left: 15px; } .courses div p span:first-of-type { font-size: 0.8rem; background-color: black; color: white; border-radius: 30%; padding: 0 2px; } .courses div p span:last-of-type { font-size: 0.7rem; } /* 最新课程css */ .new-courses .course { display: flex; overflow: hidden; justify-content: flex-start; width: 100%; height: 110px; background-color: white; padding: 10px; margin-top: 10px; box-sizing: border-box; } .new-courses .course .course-img { flex: 0.45; width: 100%; height: 90px; min-width: 0; } .new-courses .course .course-img img { width: 100%; height: 90px; } .new-courses .course .course-info { flex: 0.55; min-width: 0; height: 90px; width: 100%; margin-left: 15px; } .new-courses .course .course-info .course-main { position: relative; } .new-courses .course .course-info .course-main p { font-size: 0.7rem; color: gray; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .new-courses .course .course-info a { text-decoration: none; color: gray; } .new-courses .course .course-info .course-main span:first-of-type { font-size: 0.8rem; background-color: black; color: white; border-radius: 30%; padding: 0 2px; } .new-courses .course .course-info .course-main span:last-of-type { font-size: 0.7rem; color: gray; position: absolute; right: 10px; bottom: 1px; } /* 最新文章CSS */ .new-article {} .new-article .article { display: flex; justify-content: flex-start; width: 100%; height: 90px; background-color: white; padding: 10px; margin-top: 10px; box-sizing: border-box; } .new-article .article .article-info { flex: 0.65; margin-left: 10px; } .new-article .article .article-info a { font-size: 14px; font-weight: bold; color: #888; text-decoration: none; display: block; /* margin-bottom: 5px; */ padding-top: 5px; } .new-article .article .article-info span { font-size: 14px; color: #888; display: block; margin-top: -15px; } .new-article .article .article-img { flex: 0.35; } .new-article .article .article-img img { width: 100%; height: 70px; } .new-article .article-more, .new-blog .blog-more, .new-wenda .wenda-more { margin-top: 10px; width: 100%; } .new-article .article-more a, .new-blog .blog-more a, .new-wenda .wenda-more a { display: block; background-color: white; color: #888; text-decoration: none; text-align: center; font-size: 14px; width: 100%; height: 30px; line-height: 30px; } /* 最新博文及最新问答CSS */ .new-blog .blog-info, .new-wenda .wenda-info { background-color: white; position: relative; width: 100%; height: 45px; margin-top: 10px; } .new-blog .blog-info a, .new-wenda .wenda-info a { text-decoration: none; font-size: 14px; font-weight: bold; color: #888; display: block; margin-left: 10px; padding: 10px 0; } .new-blog .blog-info span, .new-wenda .wenda-info span { font-size: 14px; color: #888; display: block; position: absolute; right: 10px; bottom: 15px; } /*底部样式*/ body { /* height: 4000px; */ } /* 使得最底部的内容不会被footer遮盖住 */ .clear { width: 100%; height: 70px; } .footer { position: fixed; bottom: 0; width: 100%; height: 42px; min-width: 320px; max-width: 768px; left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); border-top: 1px solid #ccc; background-color: #eee; padding: 10px 0; } .footer ul { display: flex; margin: 0; padding: 0; list-style-type: none; text-align: center; } .footer ul li img { width: 20px; height: 20px; } .footer ul li a { color: gray; text-decoration: none; font-size: 14px; } .footer ul li { flex: 1; }
运行后效果如下图所示:
总结:
手机端页面需要清楚的知道各设备匹配的宽度,需要对body设置最小和最大的宽度,还要清楚的知道css中transform如何去使用,在自适应的页面中,我们只需要对高度进行固定,宽度设置百分比即可。flex布局中,对图片这种标签,需要设置一个最小的宽度,不然会对它进行挤压。对于文本过多可以使用overflow: hidden;white-space: nowrap;text-overflow: ellipsis;进行截取。