第七篇(2) CSS(一)
CSS(Cascading Style Sheets)称为层叠样式表,用于对页面进行美化。在学习Html页面时,大家都会发现我们的页面丑的一批,从今天开发就让我们的页面好看起来,例如:
第七章 CSS(一)
2.1 应用方式
css的样式有很多种,当如果想要把css样式应用到特定标签上有三种方式:
-
标签属性上编写,适用范围:指定一个标签。【不推荐,多标签无法复用样式】
<divstyle="color:green;">Alex</div>
-
head标签中定义,适用范围:当前页面的所有标签。【推荐,多个标签可复用样式】
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<style>
/*给所有的div设置样式*/
div {
color: green;
}
</style>
</head>
<body>
<div>Alex</div>
<div>mjj</div>
</body>
</html>
-
在css文件中定义,适用范围:所有引入css文件的页面。【推荐,多页面、多个标签均可复用样式】
-
创建css文件,如:common.css
div {
color: green;
}
-
创建html文件,如:index.html
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<linkrel="stylesheet"href="common.css">
</head>
<body>
<div>Alex</div>
<div>老男孩</div>
</body>
</html>
-
以后在企业中写应用css样式时,写单页面时会把样式写在head头部;写多页面时,会把样式写入css文件,然后再在要应用的html页面引入css即可。
2.2 选择器
学习选择器的目的就是选中html页面中指定标签,便于以后给他应用样式.
2.2.1 标签选择器
在body中找到所有指定标签,例如:找到所有a标签,让他们绿了。
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<style>
a {
color: green;
}
</style>
</head>
<body>
<div>周杰伦</div>
<ahref="https://www.oldboyedu.com">Alex</a>
<p>Alex</p>
<ul>
<li>
<ahref="#">朗朗</a>
</li>
</ul>
</body>
</html>
2.2.2 id 选择器
在body中找一个id匹配的标签。(HTML中ID属性应唯一,相当于人的身份证号码),例如:找到id等于i1的标签,让他绿了。
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<style>
/*找到所有a标签,并应用内部数据*/
#i1 {
color: green;
}
</style>
</head>
<body>
<div>老男孩</div>
<div>
<spanid="i1">李杰</span>
</div>
<p>武沛齐</p>
</body>
</html>
2.2.3 class 选择器
在body中找到所有class属性值匹配的标签。例如:找到所有class等于head的标签,让他绿了。
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<style>
.head {
color: green;
}
</style>
</head>
<body>
<divclass="head">老男孩</div>
<div>
<ahref="http://www.sb.com">李杰</a>
</div>
<pclass="head">武沛齐</p>
</body>
</html>
2.2.4 属性选择器
在body中找到所以class属性值匹配的标签。
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<style>
/* 找到class=head并且name=oldboy的标签 */
.head[name="oldboy"]{
color: green;
}
</style>
</head>
<body>
<divclass="head"xx="oldboy">老男孩</div>
<div>
<ahref="http://www.sb.com">李杰</a>
</div>
<pclass="head"xx="wupeiqi">武沛齐</p>
</body>
</html>
注意:属性和值都比较灵活,可以随意定制。
2.2.5 后代选择器
在body标签中根据父子关系找到指定标签。
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<style>
.head ul .hat {
color: green;
}
</style>
</head>
<body>
<ahref="#">老男孩</a>
<divclass="head">
<aclass="hat">北京</a>
<ul>
<li>沙河</li>
<li>
<aclass="hat">沙河高晓松Alex</a>
</li>
<li>
<a>沙河大烧饼Alex</a>
</li>
</ul>
</div>
<divclass="head">
<ahref="#">武沛齐</a>
</div>
</body>
</html>
2.2.6 选择器分组
对选择器进行分组,无需重复编写。
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<style>
/* 不推荐写法 */
/*
h1 {
color: green;
}
.head h2{
color: green;
}
h3{
color: green;
}
h4{
color: green;
}
*/
h1,.head h2, h3, h4 {
color: green;
}
</style>
</head>
<body>
<h1>李杰</h1>
<h2>Alex</h2>
<h3>沙河高晓松</h3>
<h4>沙河小王子</h4>
</body>
</html>
2.3 CSS样式
此部分将介绍前端开发中常用的一些css样式,通过以下示例来一步步完成美乐乐商城的项目。
2.3.1 height 高度 & width 宽度
在html中如果想要给标签设置高度和宽度的话,需要使用height和width属性,并且在设置时有两种单位:
- 像素,根据像素设置。
- 百分比,根据百分比设置。
因网页高度无限制,所以默认高度无法设置百分比,如果非要设置,则需要父级标签设置固定高度,子标签便可使用百分比设置高度。
注意:行内标签无法设置高度和宽度,如果想要设置必须转换为块级标签才能应用。
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<style>
.c1{
height:60px;
background-color:#2b669a;
}
.c2{
height:60px;
width:200px;
background-color:#2aabd2;
}
.c3{
height:60px;
width:40%;
background-color: gold;
}
.c4{
height:60px;
width:60%;
background-color: deeppink;
}
</style>
</head>
<body>
<divclass='c1'>标签1</div>
<divclass='c2'>标签2</div>
<divclass='c3'>标签3</div>
<divclass='c4'>标签4</div>
</body>
</html>
2.3.2 display 显示
display属性有3个常用的值,用于修改属性的展示状态:
display:block
,变为块级标签。display:inline;
,变为行内标签。display:inline-block
,变为行块内标签(行内和块级特性结合)。display:none
,把标签隐藏。(设置display:none隐藏标签,移除之后显示标签)
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
</head>
<body>
<h1>div标签</h1>
<divstyle="background-color:#2aabd2;display: inline;height: 60px;">我是div</div>
<divstyle="background-color:#2aabd2;height: 60px;">我是div</div>
<h1>span标签</h1>
<spanstyle="background-color:gold;height:60px;">我是span</span>
<spanstyle="background-color:gold;display: block;height:60px;">我是span</span>
<!--总结,HTML标签中 div和span标签可以通过display属性完全互换,其实记住一个div就行了。-->
<h1>特殊的display:inline-block</h1>
<divstyle="display:inline-block;background-color: pink;height:80px;">我是</div>
<divstyle="display:inline-block;background-color: goldenrod;height:80px;">武沛齐</div>
</body>
</html>
2.3.3 float 浮动
float浮动用于实现N个标签并排存放(主要针对块级标签,行内标签默认就可以并排存放)。
页面布局时,一般都会使用div标签及float属性来实现,float设置时一般有两个值:
float:left
,标签并排向左浮动。float:right
,标签并排向右浮动。
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
</head>
<body>
<h1>向左浮动</h1>
<div>
<divstyle="float:left;width:100px;background-color: green;">天堂</div>
<divstyle="float: left;width:100px;background-color: red;">地狱</div>
</div>
</body>
</html>
特别注意:布局中如何使用了float浮动,就会出现脱离文档流的现象,如下图父标签没有被撑起来:
为了防止脱离文档流现象,所以以后只要出现浮动就记得要清除浮动,即:
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
</head>
<body>
<h1>正确示例</h1>
<h2>向左浮动</h2>
<divstyle="background-color: pink;">
<divstyle="float:left;color: green;">天堂</div>
<divstyle="float: left;color: red;">地狱</div>
<!-- 清除浮动,与使用了float属性的标签放在同一级 -->
<divstyle="clear:both;"></div>
</div>
<h2>向右浮动</h2>
<div>
<divstyle="float:right;width:100px;background-color: green;">天堂</div>
<divstyle="float: right;width:100px;background-color: red;">地狱</div>
<divstyle="clear: both;"></div>
</div>
<h2>一个向左一个向右</h2>
<div>
<divstyle="float:left;width:100px;background-color: green;">天堂</div>
<divstyle="float: right;width:100px;background-color: red;">地狱</div>
<divstyle="clear: both;"></div>
</div>
</body>
</html>
2.3.4 font 字体 & 颜色
在前端开发过程中会经常调整 字体格式、字体大小、字体颜色。
- 字体格式
- 字体大小
- 字体加粗
- 字体颜色
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<style>
.c1{
font-family:"Times New Roman",Georgia,Serif;
}
.c2{
font-family:Arial,Verdana,Sans-serif;
}
</style>
</head>
<body>
<h1>字体格式</h1>
<divclass="c1">一白日依山尽,黄河入海流。</div>
<divclass="c2">欲穷千里目,更上一层楼。</div>
<h1>字体大小</h1>
<divstyle="font-size:13px;">从此寻花问柳,闭口不谈一生厮守。</div>
<divstyle="font-size:16px;">从此红灯绿酒,再也不想牵谁的手。</div>
<divstyle="font-size:18px;">从此人海漂流,闭口不谈爱到白头。</div>
<h1>字体加粗</h1>
<divstyle="font-weight:100;">我愿化身石桥 只为看一眼你的内裤。</div>
<divstyle="font-weight:300">中年男人哪有容易的事?</div>
<divstyle="font-weight:400">中年男人容易胖、容易老、容易头发变稀少。</div>
<h1>字体颜色</h1>
<divstyle="color: red;">远上寒山石径斜,白云生处有人家。</div>
<divstyle="color:#f0ad4e">停车坐爱枫林晚,霜叶红于二月花。。</div>
</body>
</html>
2.3.4 文字对齐方式
页面上如果想要设置文字对齐方式,可以分为以下情况:
- 水平方向:左、中、右
- 垂直方向:上、中、下
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
<style>
.demo1{
width:400px;
}
.demo2{
width:400px;
height:100px;
}
</style>
</head>
<body>
<h1>水平方向</h1>
<divclass="demo1"style="background-color: pink;text-align: left;">Alex媳妇满身大汗</div>
<divclass="demo1"style="background-color: darkseagreen;text-align: center;">王老汉</div>
<divclass="demo1"style="background-color: goldenrod; text-align: right;">武老汉</div>
<h1>垂直方向</h1>
<divclass="demo2"style="background-color: pink;">Alex媳妇满身大汗</div>
<divclass="demo2"style="background-color: darkseagreen;line-height:100px;">王老汉(推荐)</div>
<divclass="demo2"style="background-color: goldenrod;position: relative;">
<spanstyle="position: absolute;bottom:0;">武老汉,这个知识点下一节细讲</span>
</div>
</body>
</html>
2.3.6 padding 内边距
padding内边距作用是 为被应用的标签创建一部分内部间距。边距可以设置上、下、左、右方向。
/* 单独设置上下左右内边距 */
padding-left:8px;
padding-right:2px;
padding-top:4px;
padding-bottom:18px;
/* padding:上 右 下 左; */
padding:10px02px;4px;
/* padding:上下 右左; */
padding:7px5px;
/* padding:上下右左; */
padding:8px;
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
</head>
<body>
<h1>无内边距</h1>
<divstyle="height:200px;border:1px solid #dddddd">
<divstyle="background-color: darkseagreen;">听妈妈的话</div>
<div>
小朋友你是否有很多问号,为什么别人在那看漫画,我却在学画画对着钢琴说话。
</div>
</div>
<h1>内边距示例1</h1>
<divstyle="height:200px;border:1px solid #dddddd">
<divstyle="background-color: gold;padding:10px;">听爸爸的话</div>
<divstyle="padding:10px;">
小朋友你是否有很多问号,为什么别人在那看漫画,我却在学画画对着钢琴说话。
</div>
</div>
<h1>内边距示例2</h1>
<divstyle="height:200px;border:1px solid #dddddd;padding: 10px;">
<divstyle="background-color: gold;">听爸爸的话</div>
<div>
小朋友你是否有很多问号,为什么别人在那看漫画,我却在学画画对着钢琴说话。
</div>
</div>
</body>
</html>
2.3.7 margin 外边距
外边距用于相邻的标签之间增加距离用。边距可以设置上、下、左、右方向。
/* 单独设置上下左右内边距 */
margin-left:8px;
margin-right:2px;
margin-top:4px;
margin-bottom:18px;
/* margin:上 右 下 左; */
margin:10px02px;4px;
/* margin:上下 右左; */
margin:7px5px;
/* margin:上下右左; */
margin:8px;
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>CSS学习</title>
</head>
<body>
<divstyle="height:200px;background-color: gold;"></div>
<divstyle="height:200px;background-color: pink;margin-top:20px;"></div>
</body>
</html>
特别注意:关于外边距还有两个特殊的知识点需要学习。
-
body标签默认有一个 8px的外边距,所以你会发现默认的页面都有一个“白边”。
-
自动居中布局,你应该见过很多网站的内容都在中间放置,两边是空白。
/* 只要指定宽度并设置margin为 0 auto 就可以实现div 自动居中布局*/
width:900px;
margin:0auto;
2.3.8 课堂练习:小米顶部导航
实现小米商城中顶部黑色导航条的功能(不需要写购物车图标)。
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>小米商城</title>
<linkrel="shortcut icon"href="img/favicon.ico">
<style>
body {
margin:0;
font:14px/1.5HelveticaNeue,Helvetica,Arial,MicrosoftYahei,HiraginoSans GB,Heiti SC,WenQuanYiMicroHei, sans-serif;
}
.container {
width:1190px;
margin:0auto;
}
.left {
float: left;
}
.right {
float: right;
}
.header {
height:40px;
line-height:40px;
background-color:#333;
color:#b0b0b0;
font-size:12px;
}
.header .menus a,.header .account a,.header .car a {
text-decoration: none;
display:inline-block;
padding:05px;
}
.header .car a {
display:inline-block;
height:40px;
padding:015px;
margin-left:20px;
background-color:#424242;
}
</style>
</head>
<body>
<divclass="header">
<divclass="container">
<divclass="menus left">
<a>小米商城</a>
<a>MIUI</a>
<a>IoT</a>
<a>云服务</a>
</div>
<divclass="car right"><a>购物车(0)</a></div>
<divclass="account right">
<a>登录</a>
<a>注册</a>
<a>消息通知</a>
</div>
<divstyle="clear: both;"></div>
</div>
</div>
</body>
</html>