学成在线项目讲解
一、项目实现结果
该项目共分为四大类:header头部模块、banner模块、精品推荐模块、footer模块
如图所示:
二、前期准备工作
1、准备素材和工具
(1)学成在线PSD源文件
(2)开发工具(VsCode)+测试工具(Chrome)+切图(PxCook)
2、新建项目文件夹
(1)创建study项目文件夹
(2)用VsCode打开该文件夹
(3)study文件夹内新建images文件夹,用于保存图片;新建CSS文件夹,用于存放CSS文件
(4)新建文件index.html(网站首页统一规定为index.html)
(5)在CSS文件夹下新建index.css样式文件
三、页面详细制作
1、书写前提:设置版心以及初始化一些值
CSS代码示例:
* {
margin: 0;
padding: 0;
/* 内减模式 */
box-sizing: border-box;
}
li {
list-style: none;
}
a {
text-decoration: none;
}
/* 清除浮动 */
.clearfix:before,.clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
body {
background-color: #f3f5f7;
}
/* 版心 */
.wrapper {
width: 1200px;
margin: 0 auto;
}
2、header头部模块
模块分析:该部分主要由四部分组成,logo区域、导航区域、搜索区域、用户区域,如下图:
1、从大图可以看出头部模块在页面中居中显示,所以需要给该模块先设置一个版心
2、该模块的组成都是块级元素,因此需要给这几部分设置浮动
(1)logo区域
该部分是比较重要的部分,且大多数logo可以点击跳转页面,所以这里用h以及a来设置
html代码示例:
<!-- logo区域 -->
<h1>
<a href="#"><img src="./images/logo.png" alt=""></a>
</h1>
CSS代码示例:
<!-- logo区域 -->
.header {
height: 42px;
/* background-color: pink; */
margin: 30px auto;
}
.header h1 {
float: left;
}
(2)导航区域
- 排列位置:导航区域与logo区域在一行排列(这里设置浮动),且两者之间有间距,这里给导航区域增加了一个左边的外边距
- 导航内容:只要是导航,就是ul>li>a的结构
- 调整内容位置:li默认是换行排列,若要使其在一行排列,则需要设置浮动,浮动后内容之间无间距,可以添加一个向右的外边距
- 调整文字内容:设置颜色、大小、粗细等
注意:纯文字区域可以不给宽度,按照文字个数默认向后排列
html代码示例:
<!-- 导航区域 -->
<div class="nav">
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">课程</a></li>
<li><a href="#">职业规划</a></li>
</ul>
</div>
CSS代码示例:
/* 导航区域 */
.nav {
float: left;
margin-left: 70px;
height: 42px;
}
/*li默认是换行排列,若要使其在一行排列,则需要设置浮动 */
.nav li {
float: left;
margin-right: 26px;
}
.nav li a {
display: block;
padding: 0 9px;
height: 42px;
line-height: 42px;
font-size: 18px;
color: #050505;
}
/* 伪类选择器:选中鼠标悬停在元素上的状态,设置样式 */
.nav li a:hover {
border-bottom: 2px solid #00a4ff;
}
(3)搜索区域
该部分为一个输入框+按钮组成,即使用input和button(在这个上面可以添加一个背景图显示点击)即可,剩下的就是调整边框、大小以及位置了
注意:
如果要控制input中placeholder的样式,需要使用特殊的选择器,即 input::placeholder {}
html代码示例:
<!-- 搜索区域 -->
<div class="search">
<input type="text" placeholder="输入关键词">
<button></button>
</div>
CSS代码示例:
/* 搜索区域 */
.search {
float: left;
margin-left: 59px;
/* width: 412px; */
height: 40px;
border: 1px solid #00a4ff;
}
.search input {
float: left;
padding-left: 20px;
width: 360px;
height: 38px;
border: 0;
}
/* 控制placeholder的样式 */
.search input::placeholder {
font-size: 14px;
color: #bfbfbf;
}
/* 搜索区域的搜索按钮 */
.search button {
float: left;
width: 50px;
height: 40px;
background-image: url(../images/btn.png);
border: 0;
}
(4)用户区域
该部分区域往盒子里放图片+文字即可,从图中可以看出,用户区域在版心的最右边,因此这里可以设置一个右浮动(左浮动也可以),浮动完后调整右边的间距
- 添加图片:对于用户头像来说,是很重要的,因此需要用 img 标签来写
- 添加文字:这里用了一个 span 标签,用来调节文字大小、更换文字等
注意:图片跟文字一起需要垂直居中时,给文字设置行高,给图设置垂直方向对齐
调节图片垂直方向的对齐方式:vertical-align: middle;
html代码示例:
<!-- 用户区域 -->
<div class="user">
<img src="./images/user.png" alt="">
<span>qq-leishu</span>
</div>
CSS代码示例:
/* 用户区域 */
.user {
float: right;
height: 42px;
margin-right: 35px;
line-height: 42px;
}
.user img {
/* 调节图片垂直对齐方式:middle:居中 */
vertical-align: middle;
}
3、banner模块
模块分析:该部分主要由四部分组成,通栏盒子、版心区域、分类区域(左)、课程表区域(右),如下图
(1)通栏盒子区域
该部分宽度与浏览器宽度一样,给个高度,以及背景颜色即可
CSS代码示例:
.banner {
height: 420px;
background-color: #1c036c;
}
(2)版心区域
该部分为版心,并设置版心的高度以及版心背景图
CSS代码示例:
.banner .wrapper {
height: 420px;
background-image: url(../images/banner.png);
}
(3)分类区域
- 布局:该部分位于banner区域的左边,需要设置宽高、背景色以及内边距,调整其大小,因其div标签默认换行排列,所以这里需要进行一个左浮动
- 内容:分类区域每一行模式相同,因此这边采用ul>li>a的结构来设置,并调整内容的位置、间距、字体颜色、大小等即可
分类区域设置每行的间距:也可以用行高来设置
html代码示例:
<!-- 左区域分类 -->
<div class="left">
<ul>
<li><a href="#">前端开发<span>></span></a></li>
<li><a href="#">后端开发<span>></span></a></li>
<li><a href="#">移动开发<span>></span></a></li>
<li><a href="#">人工智能<span>></span></a></li>
<li><a href="#">商业预测<span>></span></a></li>
<li><a href="#">云计算&大数据<span>></span></a></li>
<li><a href="#">运维&测试<span>></span></a></li>
<li><a href="#">UI设计<span>></span></a></li>
<li><a href="#">产品<span>></span></a></li>
</ul>
</div>
CSS代码示例:
/* 左分类区域 */
.banner .left {
float: left;
padding: 0 20px;
width: 190px;
height: 420px;
background-color: rgba(0,0,0,0.3);
line-height: 45px;
}
.banner .left span {
float: right;
}
.banner .left a {
font-size: 14px;
color: #fff;
}
.banner .left a:hover {
color: #00b4ff;
}
(4)课程表区域
- 布局:该部分位于banner区域的右边,需要设置宽高、背景色以及内边距,调整其大小,因其div标签默认换行排列,所以这里需要进行一个右浮动
- 分类:3部分,标题、内容、按钮
- 内容:标题可以用h2标签来设置;内容显示每部分都相同,模式类似于标题+描述,因此可以使用dl标签来设置;按钮区域可以用一个a标签显示
html代码示例:
<!-- 右区域分类 -->
<div class="right">
<h2>我的课程表</h2>
<div class="content">
<dl>
<dt>继续学习 <span>程序语言设计</span></dt>
<dd>正在学习-使用对象</dd>
</dl>
<dl>
<dt>继续学习 <span>程序语言设计</span></dt>
<dd>正在学习-使用对象</dd>
</dl>
<dl>
<dt>继续学习 <span>程序语言设计</span></dt>
<dd>正在学习-使用对象</dd>
</dl>
</div>
<a href="#" class="more">全部课程</a>
</div>
CSS代码示例:
/* 右分类区域 */
.banner .right {
float: right;
margin-top: 50px;
width: 228px;
height: 300px;
background-color: #fff;
}
.banner .right h2 {
height: 48px;
background-color: #9bceea;
text-align: center;
line-height: 48px;
font-size: 18px;
font-weight: normal;
color: #fff;
}
.banner .right .content {
padding: 0 18px;
}
.banner .right .content dl {
padding: 12px 0;
border-bottom: 2px solid #e5e5e5;
}
.banner .right .content dt {
font-size: 16px;
color: #4e4e4e;
}
.banner .right .content span {
font-size: 14px;
color: #4e4e4e;
}
.banner .right .content dd {
font-size: 12px;
color: #a5a5a5;
}
.banner .right .more {
display: block;
/* margin: 4px 14px 0; */
margin: 4px auto 0;
width: 200px;
height: 40px;
border: 1px solid #00a4ff;
font-size: 16px;
color: #00a4ff;
font-weight: 700;
text-align: center;
line-height: 40px;
}
4、精品推荐模块
模块分析:该部分主要由两部分组成,精品推荐导航、精品推荐内容,如下图
(1)精品推荐导航
- 布局:首先需要设置版心,且设置外边距调整位置,最后再加下阴影
- 内容:精品推荐可看成一个标题,中间为具体分类,可使用ul>li>a的结构,最右边是一个超链接,用来跳转页面
注意:这三部分默认换行显示,若要使其在一行排列,则需要浮动
html代码示例:
<!-- 精品推荐导航 -->
<div class="goods wrapper">
<h2>精品推荐</h2>
<ul>
<li><a href="#">jQuery</a></li>
<li><a href="#">Spark</a></li>
<li><a href="#">MySQL</a></li>
<li><a href="#">JavaWeb</a></li>
<li><a href="#">jQuery</a></li>
<li><a href="#">JavaWeb</a></li>
</ul>
<a href="#" class="xingqu">修改兴趣</a>
</div>
CSS代码示例:
/* 精品推荐导航 */
.goods {
margin-top: 8px;
padding-left: 34px;
padding-right: 26px;
height: 60px;
background-color: #fff;
box-shadow: 0px 2px 3px 0px
rgba(118, 118, 118, 0.2);
line-height: 60px;
}
.goods h2 {
float: left;
font-size: 16px;
color: #00a4ff;
font-weight: 400;
}
.goods ul {
float: left;
margin-left: 30px;
}
.goods ul li {
float: left;
}
.goods li a {
border-left: 1px solid #bfbfbf;
padding: 0 30px;
font-size: 16px;
color: #050505;
}
.goods .xingqu {
float: right;
font-size: 14px;
color: #00a4ff;
}
(2)精品推荐内容
该部分分为两个模块:标题+内容
- 标题:左边是“精品推荐”字样显示标题,右边是一个“查看全部”跳转页面,因此左边字样可以用h标签,右边字样可以用a标签
- 内容:一行排5个,共两行,除了图片、文字之外,其他格式都相同,这样的情况一般用ul>li>a的结构来写,最后填充内容即可
注意:
1、li 默认换行排列,因此需要设置浮动
2、在设置每个框的外边距(若设置右边距)时,需要考虑每一行最后一个不需要设置外边距,不然会放不下
html代码示例:
<!-- 精品推荐课程 -->
<div class="box wrapper">
<div class="title">
<h2>精品推荐</h2>
<a href="#">查看全部</a>
</div>
<div class="content clearfix">
<ul>
<li>
<a href="#">
<img src="./images/pic1.png" alt="">
<h3>Think PHP 5.0 博客系统实战项目演练</h3>
<p><span>高级</span> • 1125人在学习</p>
</a>
</li>
<li>
<a href="#">
<img src="./images/pic2.png" alt="">
<h3>Android 网络图片加载框架详解</h3>
<p><span>高级</span> • 1125人在学习</p>
</a>
</li>
<li>
<a href="#">
<img src="./images/pic3.png" alt="">
<h3>Angular 2 最新框架+主流技术+项目实战</h3>
<p><span>高级</span> • 1125人在学习</p>
</a>
</li>
<li>
<a href="#">
<img src="./images/pic4.png" alt="">
<h3>Android Hybrid APP开发实战 H5+原生!</h3>
<p><span>高级</span> • 1125人在学习</p>
</a>
</li>
<li>
<a href="#">
<img src="./images/pic4.png" alt="">
<h3>Android Hybrid APP开发实战 H5+原生!</h3>
<p><span>高级</span> • 1125人在学习</p>
</a>
</li>
<li>
<a href="#">
<img src="./images/pic1.png" alt="">
<h3>Think PHP 5.0 博客系统实战项目演练</h3>
<p><span>高级</span> • 1125人在学习</p>
</a>
</li>
<li>
<a href="#">
<img src="./images/pic2.png" alt="">
<h3>Android 网络图片加载框架详解</h3>
<p><span>高级</span> • 1125人在学习</p>
</a>
</li>
<li>
<a href="#">
<img src="./images/pic3.png" alt="">
<h3>Angular 2 最新框架+主流技术+项目实战</h3>
<p><span>高级</span> • 1125人在学习</p>
</a>
</li>
<li>
<a href="#">
<img src="./images/pic4.png" alt="">
<h3>Android Hybrid APP开发实战 H5+原生!</h3>
<p><span>高级</span> • 1125人在学习</p>
</a>
</li>
<li>
<a href="#">
<img src="./images/pic4.png" alt="">
<h3>Android Hybrid APP开发实战 H5+原生!</h3>
<p><span>高级</span> • 1125人在学习</p>
</a>
</li>
</ul>
</div>
</div>
CSS代码示例:
/* 精品推荐课程 */
.box {
margin-top: 35px;
}
.box .title {
height: 40px;
}
.box .title h2 {
float: left;
font-size: 20px;
color: #494949;
font-weight: 400;
}
.box .title a {
float: right;
margin: 8px 30px 0 0;
font-size: 12px;
color: #a5a5a5;
}
.box .content li {
float: left;
margin-right: 15px;
margin-bottom: 15px;
width: 228px;
height: 270px;
background-color: #fff;
}
.box .content li:nth-child(5n) {
margin-right: 0%;
}
.box .content li h3 {
padding: 20px;
font-size: 14px;
font-weight: 400;
color: #050505;
}
.box .content li p {
padding: 0 20px;
font-size: 12px;
color: #999999;
}
.box .content li span {
color: #ff7c2d;
}
5、footer模块
模块分析:该部分主要由四部分组成,通栏盒子、版心区域、左区域、右区域,如下图
(1)通栏盒子以及设置版心
该部分宽度与浏览器宽度一样,给个高度,以及背景颜色即可
注意:由于上部分精品推荐课程的影响(li浮动了且没有给高度,脱标,撑不开父级的高度),正常设置格子会使其位置不准确,因此需要清除浮动(即给li 的父级div加一个清除浮动)
清除浮动CSS代码:(在初始化中已设置,这里再赘述下)
/* 清除浮动 */
.clearfix:before,.clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
CSS代码示例:
/* 版权区域 */
.footer {
margin-top: 40px;
padding-top: 30px;
height: 417px;
background-color: #fff;
}
(2)左右区域
- 布局:左右两区域一个在左,一个在右,则分别设置左右的浮动即可
- 左区域:由logo图片+内容+按钮(超链接)组成,这里使用img+p+a标签设置,最后设置边距、位置、字体颜色、字体大小等
- 右区域:有三部分,每部分格式相同,格式类似标题+描述,因此这里使用dl>dt/dd来写(dl默认换行排列,因此需要设置浮动)
注意:两区域基本都是文字,因此不设置宽高,由文字撑开宽高即可
html代码示例:
<!-- 版权区域 :注意要清除浮动的影响,在课程的 li 的父级-->
<!-- li 都浮动了,脱标,撑不开父级的高度 -->
<div class="footer">
<div class="wrapper">
<div class="left">
<img src="./images/logo.png" alt="">
<p>学成在线致力于普及中国最好的教育它与中国一流大学和机构合作提供在线课程。<br>
© 2017年XTCG Inc.保留所有权利。-沪ICP备15025210号</p>
<a href="#">下载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>
CSS代码示例:
/* footer模块左区域 */
.footer .left {
float: left;
}
.footer .left p {
margin: 20px 0 10px;
font-size: 12px;
color: #666;
}
.footer .left a {
display: inline-block;
width: 120px;
height: 36px;
border: 1px solid #00a4ff;
font-size: 16px;
color: #00a4ff;
text-align: center;
line-height: 36px;
}
/* footer模块右区域 */
.footer .right {
float: right;
}
.footer .right dl {
float: left;
margin-left: 120px;
}
.footer .right dl dt {
font-size: 16px;
color: #333333;
}
.footer .right dl a {
font-size: 12px;
color: #333333;
}
四、完整代码
代码参考地址:学成在线源代码