准备工作
1.创建项目目录
- css文件夹中创建base.css:基础公共样式 清除默认样式、设置网页基本样式和index.css 首页样式
- image文件夹:存放固定使用的图片素材,例如:logo、样式修饰图等等
- uploads文件夹:存放非固定使用的图片素材,例如:商品图、宣传图需要上传的图片
- index.html :首页HTML文件
2.基础公共样式在base.css当中编写
- 清楚默认样式
box-sizing: border-box; 可以防止盒子在设置padding和border时盒子的大小变化
list-style:none; 将列表前面的序号或者图案去掉
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
li {
list-style: none;
}
- 设置通用样式
text-decoration: 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;
}
3.引入CSS文件
引入css文件 先引入base清除样式 在引入index设置样式 :避免样式设置不成功
<link rel="stylesheet" href="./css/base.css">
<link rel="stylesheet" href="./css/index.css">
4.版心居中
首先对网页整体进行观察可以得出网页整体在浏览器的中心分布 所以在index.css文件当中进行设置版心居中的样式 使用类选择器进行编写一个公共类 可供后面重复使用避免重复
.wrapper{
margin: 0 auto;
width: 1200px;
}
头部区域
首先进行分析观察 发现头部区域属于版心居中在编写css时可以调用wrapper类进行实现前提时在定义class="wrapper" 进行调用
<div class="wrapper"></div>
header区域布局:将头部区域分成4个小的区域:logo,导航栏,搜索栏,用户。
标签结构:通栏 >版心>logo+导航+搜索+用户
HTML:
<div class="header">
<div class="wrapper">
<!-- logo -->
<div class="logo">
</div>
<!-- 导航 -->
<div class="nav">
</div>
<!-- 搜索 -->
<div class="search">
</div>
<!-- 用户 -->
<div class="user">
</div>
</div>
</div>
css样式:
display:flex;:是一种布局方式。
使用flex布局 可以将4个div 在同一行展示 默认样式首行左对齐
.header .wrapper{
display: flex;
padding-top: 29px;
}
1.logo
logo重要功能:1.单机跳转到首页所以加入a标签
2.搜索引擎优化提升网站百度搜索排名
标签结构:h1 > a>网站名称(搜索关键字)
HTML:
<div class="logo">
<h1><a href="#">学成在线</a></h1>
</div>
css样式:
display:block;:将元素转成块状元素,拥有块状元素特点
块状元素可以设置背景图片 用网站logo做背景图
.logo a{
display:block;
width: 195px;
height: 41px;
background-image: url(../images/logo.png);
/* 网站logo用背景图 网站名称设置字体为0进行隐藏 */
font-size: 0;
}
2.导航栏
导航功能 : 单击跳转页面
实现方法:
• 标签结构:ul > li * 3 > a
• 优势:避免堆砌 a 标签,网站搜索排名降级
• 布局思路 li 设置 右侧 margin a 设置 左右padding
HTML:
<!-- 导航 特殊功能 单机跳转页面 -->
<div class="nav">
<!-- 实现方法:ul>li*3>a 避免堆砌a标签 网站搜索排名降级-->
<ul>
<li><a href="#" class="active">首页</a></li>
<li><a href="#">课程</a></li>
<li><a href="#">职业规划</a></li>
</ul>
</div>
CSS:
/* 导航栏 */
.nav{
margin-left: 102px;
}
/* 使用flex布局 可以将4个div 在同一行展示 默认样式首行左对齐 */
.nav ul{
display: flex;
}
.nav li{
margin-right: 24px;
}
.nav li a{
display: block;
padding: 6px 8px;
line-height: 27px;
font-size: 19px;
}
/* 设置导航栏 首页为默认的下边框有蓝色 hover为超链接悬停时出现蓝色 */
.nav li .active,
.nav li a:hover{
border-bottom: 2px solid #00a4ff;
}
3.搜索栏
实现方法:
• 标签结构:.search > input + a / button
• 布局思路 div.search 标签 flex 布局,侧轴居中(垂直居中) input 标签 flex:
HTML:
<!-- 搜索 -->
<div class="search">
<!-- 实现方法:input+a -->
<input type="text" placeholder="输入关键词">
<a href="#"></a>
</div>
CSS:
/* 搜索区域 */
/* 搜索区域的大盒子div */
.search{
display: flex;
width: 412px;
height: 40px;
margin-left: 64px;
background-color: #f3f5f7;
border-radius: 20px;
}
.search input{
/* 除去右侧图片的尺寸,附件剩余尺寸都给input 实现把图片挤到最右侧 */
flex:1;
border :0;
background-color: transport;
/* 去掉表单控件的焦点框 */
outline:none;
}
/* ::placeholder 选中的是placeholder属性文字样式 */
.search input ::placeholder{
font-size: 14px;
color: #999;
}
.search a{
/* 竖直方向中心对齐 */
align-self: center;
width: 16px;
height: 16px;
/* 设置背景图标并且含有a标签的属性 */
background-image: url(../images/search.png);
}
4.用户
实现方法:
• 标签结构:.user > a > img + span
• 布局技巧:图片、文字垂直方向居
HTML:
<!-- 用户 实现方法a>img+span -->
<div class="user">
<a href="">
<img src="./uploads/user.png" alt="">
<span>播仔学前端</span>
</a>
</div>
CSS:
/* 用户 */
.user {
margin-top: 4px;
margin-left: 32px;
}
.user img{
/* vertical-align 处理行内块和行内垂直方向对齐方式 */
vertical-align: middle;
}
.user span{
font-size: 16px;
color:#666;
}
banner区域
结构:通栏banner > 版心 > .left + .ri
1.banner区域整体背景
banner整体背景为蓝色 并且在版心居中的区域嵌入一张照片(设计为背景)
HTML:
<div class="banner">
<div class="wrapper">
<!-- 左侧导航栏 实现方法 -->
<div class="left">
</div>
<!-- 右侧导航栏的实现 -->
<div class="right">
</div>
</div>
</div>
</div>
css:
.banner{
height: 420px;
background-color: #0092cd;
}
.banner .wrapper{
display: flex;
/* 调整主轴间距 */
justify-content: space-between;
height: 420px;
background-image: url(../uploads/banner.png);
}
2.左侧导航栏
实现方法:
• 标签结构:.left > ul > li *9 > a
• 布局思路 a 默认状态:背景图为白色右箭头 a 鼠标悬停状态:背景图蓝色右箭
HTML:
<!-- 左侧导航栏 实现方法 -->
<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>
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;
3.右侧导航栏
实现方法:
• 标签结构:.right > h3 + .content
HTML:
<!-- 右侧导航栏的实现 -->
<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>
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;
line-height: 16px;
}
.banner .right dd span{
color:#00a4ff
}
.banner .right dd strong{
color: #7d7d7d;
font-weight: 400;
}
.banner .right a{
display: block;
width: 190px;
height: 32px;
border-radius: 15px;
background-color: #00a4ff;
text-align: center;
line-height: 32px;
color: #ffffff;
}
精品推荐
实现方法:
• 标签结构:.recommend > h3 + ul + a.modify
• 布局思路:flex 布
HTML:
<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>
CSS:
.recommend{
display: flex;
margin-top: 11px;
padding: 0 20px;
height: 60px;
background-color: #fff;
line-height: 60px;
box-shadow: 0px 1px 2px 0px
rgba(211, 211, 211, 0.5);
}
.recommend h3{
font-size: 18px;
font-weight: 400;
color: #00a4ff;
}
.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 ul{
/* 除去标题和修改兴趣的尺寸,附件剩余尺寸都给ul 实现吧修改兴趣挤到最右侧 */
flex:1;
display: flex;
}
.recommend .modify{
font-size: 16px;
color:#00a4ff;
}
精品课程
实现方法:
• 标签结构:.hd + .bd
• 布局思路 盒子模
1.标题区域
HTHL:
<!-- 标题 -->
<div class="hd">
<h3>精品推荐</h3>
<a href="#" class="more">查看全部</a>
</div>
CSS:标题区域含有公共属性可以创建公共类
/* 公共类 */
.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;
color: #999;
font-size: 14px;
background: url(../images/more.png) no-repeat right center;
}
2.内容区域
思路:“课程卡片”各个区域样式复用
标签结构:.bd > ul > li > a
HTML:
<div class="bd">
<ul>
<li><a href="#">
<div class="pic"><img src="./uploads/course01.png" alt=""></div>
<div class="text">
<h4>JavaScript数据看板项目实战</h4>
<p><span>高级</span> · <i>1125</i>人在学习</p>
</div>
</a>
</li>
</ul>
</div>
CSS:
.bd li{
width: 228px;
height: 271px;
margin-bottom: 14px;
}
.bd li .pic{
height: 156px;
}
.bd li .text{
height: 115px;
padding: 20px;
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;
}
前端区域
整体布局和上部分精品课程分布一致分为标题区域和内容区域但是有一点区别
标题区域中间有所不同:通过在div当中加入ul>li标签来实现
内容区域整体的规划发生改变:需要将它分为左右部分 并却还需要将与部分进一步分为上下部分进行布局
标签结构:h3 + ul + a.more
tab 栏 / 选项卡:菜单个数与内容个数相同
1.标题区域:
HTML:
<!-- 标题 -->
<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>
CSS:调用前一部分css并且补充ul里面一些的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 .right .top{
margin-bottom: 15px;
height: 100px;
}
2.内容区域:
HTML:
<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">
<!--调用之前的CSS的代码公共类-->
<ul>
<li><a href="#">
<div class="pic"><img src="./uploads/web01.png" alt=""></div>
<div class="text">
<h4>JS高级javaScript进阶面向对象ES6</h4>
<p><span>高级</span> · <i>101937</i>人在学习</p>
</div>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
CSS:
拥有公共属性通过设置相同的类名进行调用之前的CSS代码
Python+大数据开发
此类的区域有上面前端区域一致
人工智能开发
此类的区域有上面精品课程大抵一致
但是需要在css当中需要将自动换行属性去掉:因为一行当中可以放下
JavaEE
此类的区域有上面人工智能开发一致
版权区域
主体分为左右两部分
设置版心居中
标签结构:通栏 > 版心 > .left + .right > dl
CSS:
.footer{
margin-top: 60px;
padding-top: 60px;
height: 273px;
background-color: #fff;
}
/* 版心居中并且设置flex布局进行水平布局 */
.footer .wrapper{
display: flex;
justify-content: space-between;
}
1.左部分
HTML:
<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>
CSS:
.footer .left{
width: 440px;
}
.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: 14px;
color: #00a4ff;
}
2.右部分
HTML:
<div class="right">
<dl>
<dt>合作伙伴</dt>
<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>
<dd><a href="#">工作机会</a></dd>
<dd><a href="#">客户服务</a></dd>
<dd><a href="#">帮助</a></dd>
</dl>
</div>
CSS:
<div class="right">
<dl>
<dt>合作伙伴</dt>
<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>
<dd><a href="#">工作机会</a></dd>
<dd><a href="#">客户服务</a></dd>
<dd><a href="#">帮助</a></dd>
</dl>
</div>