一、准备工作
1、项目目录
网站根目录是指存放网站的第一层文件夹,内部包含当前网站的所有素材,包含 HTML、CSS、图片、JavaScript等等。
建立文件夹:
- study
- images 文件夹:存放固定使用1的图片素材,例如:logo、样式修饰图等等
- uploads 文件夹:存放非固定使用的图片素材,例如:商品图、宣传图需要上传的图片
- css 文件夹:存放 CSS 文件(link 标签引入)
- base.css:基础公共样式,例如:清除默认样式、设置网页基本样式
- index.css:首页 CSS 样式
- index.html:首页 HTML 文件
base.css 示例:
/* 基础公共样式:清除默认样式 + 设置通用样式 */ * { margin: 0; padding: 0; box-sizing: border-box; } li { list-style: none; } body { font: 14px/1.5 "Microsoft Yahei", "Hiragino Sans GB", "Heiti SC", "WenQuanYi Micro Hei", sans-serif; color: #333; } a { color: #333; text-decoration: none; }
总结:
- 项目目录中,images 文件夹存放 固定使用的图片素材。
- 项目目录中,uploads 文件夹存放 非固定使用的图片素材(需要上传的)
- HTML 中用 link 标签 引入单独的 CSS 文件
2、版心效果
.warpper { margin: 0 auto; width: 1200px; }
二、网页制作思路
- 布局思路:先整体再局部,从内到外,从上到下,从左到右
- CSS 实现思路
- 画盒子,调整盒子范围 → 宽高背景色
- 调整盒子位置 → flex 布局、内外边距
- 控制图片、文字内容样式
三、header 区域
1、布局
通栏:宽度与浏览器窗口相同的盒子
标签结构:通栏 > 版心 > logo + 导航 + 搜索 + 用户
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header"> <div class="wrapper"> <!-- logo --> <div class="logo">logo</div> <!-- 导航 --> <div class="navi">导航</div> <!-- 搜索 --> <div class="search">search</div> <!-- 用户 --> <div class="user">用户</div> </div> </div> </body> </html>
效果:
2、logo 制作技巧
logo 功能
单机跳转到首页
搜索引擎优化:提升网站百度搜索排名
实现方法:
标签结构:h1 > a > 网站名称(搜素关键字)
CSS 样式:
.logo a { display: block; width: 195px; height: 41px; background-image: url(#); /* 隐藏文字 */ font-size: 0; }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header"> <div class="wrapper"> <!-- logo --> <div class="logo"> <h1><a href="#">学成在线</a></h1> </div> <!-- 导航 --> <div class="navi">导航</div> <!-- 搜索 --> <div class="search">search</div> <!-- 用户 --> <div class="user">用户</div> </div> </div> </body> </html>
效果:
3、导航制作技巧(nav)
导航功能
- 单击跳转页面
实现方法:
- 标签结构:ul > li * 3 > a
- 优势:避免堆砌 a 标签,网站搜索排名降级
- 布局思路:
li 设置 右侧 margin
a 设置 左右 padding
CSS 样式:
.nav { margin-left: 102px; } .nav ul { display: flex; } .nav li { margin-right: 24px; } .nav li a { display: block; padding: 6px 8px; line-height: 27px; font-size: 19px; } /* active 类选择器,表示默认选中的a */ .nav li .active, .nav li a:hover { border-bottom: 2px solid #00a4ff; }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header"> <div class="wrapper"> <!-- logo --> <div class="logo"> <h1><a href="#">学成在线</a></h1> </div> <!-- 导航 --> <div class="nav"> <ul> <li><a href="#" class="active">首页</a></li> <li><a href="#">课程</a></li> <li><a href="#">职业规划</a></li> </ul> </div> <!-- 搜索 --> <div class="search">search</div> <!-- 用户 --> <div class="user">用户</div> </div> </div> </body> </html>
效果:
4、搜索区域(search)
实现方法:
- 标签结构:.search > input + a / button
CSS 样例:
.search { display: flex; margin-left: 64px; padding-left: 19px; padding-right: 12px; width: 412px; height: 40px; background-color: #f3f5f7; border-radius: 20px; } .search input { flex: 1; border: 0; background-color: transparent; /* 去掉表单控件的焦点框 */ outline: none; } /* ::placeholder 选中就是 placeholder 属性文字样式 */ .search input::placeholder { font-size: 14px; color: #999; } /* 父级是flex布局,子级边弹性盒子:加宽高生效 */ .search a { align-self: center; width: 16px; height: 16px; background-image: url(../images/search.png); }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header"> <div class="wrapper"> <!-- logo --> <div class="logo"> <h1><a href="#">学成在线</a></h1> </div> <!-- 导航 --> <div class="nav"> <ul> <li><a href="#" class="active">首页</a></li> <li><a href="#">课程</a></li> <li><a href="#">职业规划</a></li> </ul> </div> <!-- 搜索 --> <div class="search"> <input type="text" placeholder="请输入关键词"> <a href="#"></a> </div> <!-- 用户 --> <div class="user">用户</div> </div> </div> </body> </html>
效果:
5、用户区域(user)
实现方法:
- 标签结构:.user > a > img + span
CSS 样式:
/* 用户 */ .user { margin-left: 32px; margin-top: 4px; } .user img { margin-right: 7px; /* vertical-align 行内块和行内垂直方向对齐方式 */ vertical-align: middle; } .user span { font-size: 16px; color: #666; }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header"> <div class="wrapper"> <!-- logo --> <div class="logo"> <h1><a href="#">学成在线</a></h1> </div> <!-- 导航 --> <div class="nav"> <ul> <li><a href="#" class="active">首页</a></li> <li><a href="#">课程</a></li> <li><a href="#">职业规划</a></li> </ul> </div> <!-- 搜索 --> <div class="search"> <input type="text" placeholder="请输入关键词"> <a href="#"></a> </div> <!-- 用户 --> <div class="user"> <a href="#"> <img src="./uploads/user.png" alt=""> <span>kuiini</span> </a> </div> </div> </div> </body> </html>
效果:
四、banner 区域
1、布局
结构:通栏banner > 版心 > .left + .right
CSS 样例:
/* banner 区域 */ .banner { height: 420px; background-color: #1b026b; } .banner .wrapper { display: flex; justify-content: space-between; height: 420px; background-image: url(../uploads/banner.png); color: #fff; }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header">··· </div> <!-- banner 区域 --> <div class="banner"> <div class="wrapper"> <div class="left">left</div> <div class="right">right</div> </div> </div> </body> </html>
效果:
2、左侧
实现方法:
- 标签结构:.left > ul > li*9 > a
- 布局思路:
a 默认状态:背景图为白色右箭头
a 悬停状态:背景图为蓝色右箭头
CSS 样例:
/* 侧导航 */ .banner .left { padding: 3px 20px; width: 191px; height: 420px; background-color: rgba(0, 0, 0, 0.42); } .banner .left a { /* 块级:宽度是父级的100% */ display: block; height: 46px; background: url(../images/right.png) no-repeat right center; line-height: 46px; font-size: 16px; color: #fff; } .banner .left a:hover { background-image: url(../images/right-hover.png); color: #00a4ff; }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header">··· </div> <!-- banner 区域 --> <div class="banner"> <div class="wrapper"> <div class="left"> <ul> <li><a href="#">前端开发</a></li> <li><a href="#">后端开发</a></li> <li><a href="#">移动开发</a></li> <li><a href="#">人工智能</a></li> <li><a href="#">商业预测</a></li> <li><a href="#">云计算&大数据</a></li> <li><a href="#">运维&测试</a></li> <li><a href="#">UI设计</a></li> <li><a href="#">产品</a></li> </ul> </div> <div class="right">right</div> </div> </div> </body> </html>
效果:
3、右侧课程表
实现方法:
- 标签结构:.right > h3 > .content
CSS 样式:
/* 课程表 */ .banner .right { margin-top: 60px; width: 218px; height: 305px; background-color: #209dd5; border-radius: 10px; } .banner .right h3 { margin-left: 14px; height: 48px; line-height: 48px; font-size: 15px; color: #fff; font-weight: 400; } .banner .right .content { padding: 14px; height: 257px; background-color: #fff; border-radius: 10px; } .banner .right dl { margin-bottom: 12px; border-bottom: 1px solid #e0e0e0; } .banner .right dt { margin-bottom: 8px; font-size: 14px; line-height: 20px; font-weight: 700; } .banner .right dd { margin-bottom: 8px; font-size: 12px; } .banner .right dd span { color: #00a4ff; } .banner .right dd strong { color: #7d7d7d; font-weight: 400; } .banner .right a { display: block; height: 32px; background-color: #00a4ff; text-align: center; line-height: 32px; border-radius: 15px; font-size: 14px; color: #fff; }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header">··· </div> <!-- banner 区域 --> <div class="banner"> <div class="wrapper"> <div class="left"> <ul> <li><a href="#">前端开发</a></li> <li><a href="#">后端开发</a></li> <li><a href="#">移动开发</a></li> <li><a href="#">人工智能</a></li> <li><a href="#">商业预测</a></li> <li><a href="#">云计算&大数据</a></li> <li><a href="#">运维&测试</a></li> <li><a href="#">UI设计</a></li> <li><a href="#">产品</a></li> </ul> </div> <div class="right"> <h3>我的课程表</h3> <div class="content"> <dl> <dt>数字可视化教程</dt> <dd><span>正在学习</span>-<strong>echarts使用步骤</strong></dd> </dl> <dl> <dt>Vue3医疗项目课程</dt> <dd><span>正在学习</span>-<strong>认识组合式API</strong></dd> </dl> <dl> <dt>React核心技术课程</dt> <dd><span>正在学习</span>-<strong>rudex配合TS使用</strong></dd> </dl> <a href="#">全部课程</a> </div> </div> </div> </div> </body> </html>
效果:
五、精品推荐区域
实现方法:
- 标签结构:.recommend > h3 + ul + a.modify
- 布局思路:flex 布局
CSS 样式:
/* 精品推荐 */ .recommend { display: flex; margin-top: 11px; padding: 0 20px; height: 60px; background-color: #fff; box-shadow: 0px 1px 2px 0px rgba(211, 211, 211, 0.5); line-height: 60px; } .recommend h3 { font-size: 18px; color: #00a4ff; font-weight: 400; } .recommend ul { /* 除去标题和修改兴趣的尺寸,父级剩余尺寸都给ul,实现把修改兴趣挤到最右侧 */ flex: 1; display: flex; } .recommend ul li a { padding: 0 24px; border-right: 1px solid #e0e0e0; font-size: 18px; } .recommend ul li:last-child a { border-right: 0; } .recommend .modify { font-size: 16px; color: #00a4ff; }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header">··· </div> <!-- banner 区域 --> <div class="banner">··· </div> <!-- 精品推荐 --> <div class="recommend wrapper"> <h3>精品推荐</h3> <ul> <li><a href="#">HTML</a></li> <li><a href="#">CSS</a></li> <li><a href="#">javaScript</a></li> <li><a href="#">Node.js</a></li> <li><a href="#">Ajax</a></li> <li><a href="#">Vue2.0</a></li> <li><a href="#">Vue3.0</a></li> <li><a href="#">TypeScript</a></li> <li><a href="#">React</a></li> </ul> <a href="#" class="modify">修改兴趣</a> </div> </body> </html>
效果:
六、精品课程区域
实现方法:
- 标签结构:.hd + .bd
- 布局思路
盒子模型
CSS 样式:
/* 推荐课程 */ .course { margin-top: 15px; } /* 标题 - 公共类,与其他区域共用 */ .hd { display: flex; justify-content: space-between; height: 60px; line-height: 60px; } .hd h3 { font-size: 21px; font-weight: 400; } .hd .more { padding-right: 20px; background: url(../images/more.png) no-repeat right center; font-size: 14px; color: #999; } /* 课程内容 - 公共类 */ .bd ul { display: flex; flex-wrap: wrap; justify-content: space-between; } .bd li { margin-bottom: 14px; width: 228px; height: 271px; background-color: pink; } .bd li .pic { height: 156px; } .bd li .text { padding: 20px; height: 115px; background-color: #fff; } .bd li .text h4 { margin-bottom: 13px; height: 40px; font-size: 14px; line-height: 20px; font-weight: 400; } .bd li .text p { font-size: 14px; line-height: 20px; color: #999; } .bd li .text p span { color: #fa6400; } .bd li .text p i { font-style: normal; }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header">··· </div> <!-- banner 区域 --> <div class="banner">··· </div> <!-- 精品推荐 --> <div class="recommend wrapper">··· </div> <!-- 精品推荐课程 --> <div class="course wrapper"> <!-- 标题 --> <div class="hd"> <h3>精品推荐</h3> <a href="#" class="more">查看全部</a> </div> <!-- 内容 --> <div class="bd"> <ul> <li> <a href="#"> <div class="pic"><img src="./uploads/course1.png" alt=""></div> <div class="text"> <h4>Think PHP 5.0 博客系统实战项目演练</h4> <p><span>高级</span> · <i>1125</i>人在学习</p> </div> </a> </li> . . .{*8} <li> <a href="#"> <div class="pic"><img src="./uploads/course2.png" alt=""></div> <div class="text"> <h4>Android 网络图片加载框架详解</h4> <p><span>高级</span> · <i>2766</i>人在学习</p> </div> </a> </li> </ul> </div> </div> </body> </html>
效果:
七、其他区域
CSS 样式:
.hd ul { display: flex; } .hd li { margin-right: 60px; font-size: 16px; } .hd li .active { color: #00a4ff; } .bd { display: flex; justify-content: space-between; } .bd .left { width: 228px; } .bd .right { width: 957px; } .bd .right .top { margin-bottom: 25px; height: 100px; }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header">··· </div> <!-- banner 区域 --> <div class="banner">··· </div> <!-- 精品推荐 --> <div class="recommend wrapper">··· </div> <!-- 精品推荐课程 --> <div class="course wrapper">··· </div> <!-- 前端 --> <div class="wrapper"> <div class="hd"> <h3>前端开发工程师</h3> <ul> <li><a href="#" class="active">热门</a></li> <li><a href="#">初级</a></li> <li><a href="#">中级</a></li> <li><a href="#">高级</a></li> </ul> <a href="#" class="more">查看全部</a> </div> <div class="bd"> <div class="left"> <img src="./uploads/web_left.png" alt=""> </div> <div class="right"> <div class="top"> <img src="./uploads/web_top.png" alt=""> </div> <div class="bottom"> <ul> <li> <a href="#"> <div class="pic"><img src="./uploads/course1.png" alt=""></div> <div class="text"> <h4>Think PHP 5.0 博客系统实战项目演练</h4> <p><span>高级</span> · <i>101937</i>人在学习</p> </div> </a> </li> <li> <a href="#"> <div class="pic"><img src="./uploads/course2.png" alt=""></div> <div class="text"> <h4>Android 网络图片加载框架详解</h4> <p><span>高级</span> · <i>133781</i>人在学习</p> </div> </a> </li> <li> <a href="#"> <div class="pic"><img src="./uploads/course3.png" alt=""></div> <div class="text"> <h4>Angular2 框架、技术与实战</h4> <p><span>高级</span> · <i>8927</i>人在学习</p> </div> </a> </li> <li> <a href="#"> <div class="pic"><img src="./uploads/course4.png" alt=""></div> <div class="text"> <h4>Android Hybird APP开发实战</h4> <p><span>高级</span> · <i>26022</i>人在学习</p> </div> </a> </li> </ul> </div> </div> </div> </div> . . .{$}*3 </body> </html>
效果:
八、版权区域
CSS 样式:
/* 版权 */ .footer { margin-top: 60px; padding: 60px; height: 273px; background-color: #fff; } .footer .wrapper { display: flex; justify-content: space-between; } .footer .left { width: 435px; } .footer .left p { margin-top: 24px; margin-bottom: 14px; font-size: 12px; line-height: 17px; color: #666; } .footer .left .download { display: block; width: 120px; height: 36px; border: 1px solid #00a4ff; text-align: center; line-height: 34px; font-size: 16px; color: #00a4ff; } .footer .right { display: flex; } .footer .right dl { margin-left: 130px; } .footer .right dt { margin-bottom: 12px; font-size: 16px; line-height: 23px; } .footer .right a { font-size: 14px; color: #666; line-height: 24px; }
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>学成在线</title> <!-- 顺序要求:先清除再设置 --> <link rel="stylesheet" href="./css/base.css"> <link rel="stylesheet" href="./css/index.css"> </head> <body> <!-- 头部区域 --> <div class="header">··· </div> <!-- banner 区域 --> <div class="banner">··· </div> <!-- 精品推荐 --> <div class="recommend wrapper">··· </div> <!-- 精品推荐课程 --> <div class="course wrapper">··· </div> <!-- 前端 --> <div class="wrapper">··· </div> . . .{$}*3 <div class="footer"> <div class="wrapper"> <div class="left"> <a href="#"><img src="./images/logo.png" alt=""></a> <p>学成网致力于普及中国最好的教育它与中国一流大学和机构合作提供在线课程。 © 2017年XTCG Inc.保留所有权利。-沪ICP备15025210号</p> <a href="#" class="download">下载APP</a> </div> <div class="right"> <dl> <dt>关于学成网</dt> <dd><a href="#">关于</a></dd> <dd><a href="#">管理团队</a></dd> <dd><a href="#">工作机会</a></dd> <dd><a href="#">客户服务</a></dd> <dd><a href="#">帮助</a></dd> </dl> <dl> <dt>新手指南</dt> <dd><a href="#">如何注册</a></dd> <dd><a href="#">如何选课</a></dd> <dd><a href="#">如何拿到毕业证</a></dd> <dd><a href="#">学分是什么</a></dd> <dd><a href="#">考试未通过怎么办</a></dd> </dl> <dl> <dt>合作伙伴</dt> <dd><a href="#">合作机构</a></dd> <dd><a href="#">合作导师</a></dd> </dl> </div> </div> </div> </body> </html>
效果: