前端样式 - CSS¶
1. CSS样式¶
概述:
- CSS【Cascading Style Sheets】全称层叠样式表。
理解:
- 可以把HTML文件想向成是一个房子骨架,里面标签(块元素、行内元素)理解为搭建房子转,
CSS负责美化房子(进行装修),让你的静态页面(网站看的相对好看一些)
1.1 体验样式¶
概述:下面是我们体验知识点。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<!-- 样式一般是需要放在style标签里面 -->
<style type="text/css">
div{
color:green;
font-size:30px;
background-color:red;
text-align:center;
border:5px solid black;
opacity:.5;
}
</style>
</head>
<body>
<div>我是祖国的老花骨朵</div>
</body>
</html>
1.2 标签选择器¶
概述:
- 样式【CSS】用来美观标签(页面)
- web领域样式分为三种(今天只是关注内部样式)。
- 外部样式
- 内部样式: 书写在head中,利用子元素双闭合标签
style标签完成。 - 行内样式
语法格式:
<style type="text/css">
标签名字{
属性:属性值;
属性:属性值;
属性:属性值;
}
</style>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
h1{
/* 文字颜色:属性值红、橙、黄、绿、青、蓝、紫色等等 */
color:skyblue;
/* 字体大小设置 */
font-size:16px;
/* 背景颜色设置 */
background-color:orange;
/* 文本对齐方式 */
text-align:center;
/* 字体样式设置 */
font-style:italic;
}
div{
background-color:red;
font-size:28px;
color:cyan;
text-align:center;
font-style:italic;
/* 透明度设置:透明度属性值范围0~1 */
opacity:1;
/* 光标防止标签中:变为小手; */
cursor:pointer;
}
</style>
</head>
<body>
<h1>我是一级标题</h1>
<h1>我是小明呀</h1>
<div>我是常用布局标签</div>
</body>
</html>
- 标签选择器:常用样式中选择匹配标签
| 属性 | 属性值 |
|---|---|
| color【设置标签文字颜色】 | red、orange、yellow、green、cyan、blue、purple |
| font-size【标签文字大小尺寸设置】 | Numberpx (数字最小12~) |
| background-color【背景颜色设置】 | red、orange、yellow、green、cyan、blue、purple |
| text-align【文本对齐方式】 | left、center、right |
| font-style[字体样式] | italic |
| Opacity【透明度设置】 | 0~1【0:纯透明】 |
| cursor | pointer【小手】 |
1.3 id选择器¶
命名标识符规范:
-
可以数字、字母、下划线、美元符号
-
但是不能以数字开头
-
不能是这门语言当中关键字、保留字
概述:
- 除通过标签名字匹配页面中对应标签进行设置(内部样式)之外, 还可以通过id选择器匹配标签(节点:element)
注意:一般情况下,页面中标签id属性值唯一
ID 选择器实现:
- 在标签(开始标签)添加一个id属性,对应右侧属性值
- 在style标签里面(内部样式),
#号 + 对应节点id的属性值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>id选择器</title>
<style type="text/css">
#box{
color:black;
/* 文本描述 */
text-decoration:none;
}
</style>
</head>
<body>
<a href="http://www.baidu.com" id="box">百度</a>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>id选择器</title>
<style type="text/css">
#box{
color:black;
/* 文本描述 */
text-decoration:none;
}
#box1{
/* 列表默认样式设置 */
list-style:square;
}
#cur{
color:cyan;
}
#box2{
/* 列表默认样式设置 */
list-style:square;
}
</style>
</head>
<body>
<a href="http://www.baidu.com" id="box">百度</a>
<ul id="box1">
<li>吃饭</li>
<li id="cur">睡觉</li>
<li>打豆豆</li>
</ul>
<ol id="box2">
<li>unity3D</li>
<li>cos2D</li>
<li>PHP</li>
</ol>
</body>
</html>
| 属性 | 属性值 |
|---|---|
| text-decoration【文本描述】 | none、underline、overline、line-through |
| list-style | none、circle、square |
1.4 class选择器¶
概述:除了标签选择器、ID选择器、还可以使用class(类)选择器;
注意:ID选择器属性值一般唯一的、class属性值可以重复(不是唯一的)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
.current{
font-size:30px;
background-color:cyan;
}
.cur{
color:skyblue;
font-size:18px;
}
</style>
</head>
<body>
<div class="current">我是祖国的老花骨朵,是祖国未来</div>
<div>我也是祖国花鼓富哦</div>
<div>我也是祖国花鼓富哦</div>
<div class="current">我也是祖国花鼓富哦</div>
<div>我也是祖国花鼓富哦</div>
<div>我也是祖国花鼓富哦</div>
<div>我也是祖国花鼓富哦</div>
<div>今天是北京<span class="cur">2019年11月30日21:47:25</span></div>
</body>
</html>
- 选择器总结:
- 标签选择器(标签名字)
- ID选择器(#+id属性值)
- class选择器(.+class属性值)
1.5 背景系列样式¶
背景系列属性有如下几个:
- Background-color :背景颜色
- background-image: 背景图设置
- background-repeat:背景图重复
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
div{
/*宽度和高度设置*/
width:720px;
height: 720px;
/* 背景颜色 */
background-color:red;
/* 设置背景图 */
background-image:url(jie.jpg);
/* 背景重复设置 */
background-repeat:no-repeat;
/* 简写方式 */
background: no-repeat url(jie.jpg) red;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
总结:
| 属性 | 属性值 |
|---|---|
| background-color | 背景颜色设置(颜色) |
| Background-image | 背景图(图片路径) |
| Background-repeat | 背景图重复(no-repeat) |
三者可简写:
background:cyan url(1.jpg) no-repeat;
1.6 外部样式¶
外部样式:
- 在前端web开发中,样式一般放在CSS文件夹里面,在HTML页面中通过link标签引入外部文件样式。
静态页面.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<!-- 引入外部样式文件(CSS文件) -->
<link rel="stylesheet" type="text/css" href="css/default.css">
</head>
<body>
<div class="box">
<p id="cur">北京昨天下大雪了,真的很美</p>
</div>
</body>
</html>
- 如果想引入外部CSS文件,需要通过link标签进行引入
default.css
.box{
width:280px;
height: 280px;
background:red;
}
#cur{
font-size: 20px;
color:green;
text-align:center;
}
1.7 行内样式¶
概述:我们在给标签设置样式时候:可以选择器外部样式、内部样式、行内样式(对于web开发很少用);
行内样式:直接在开始标签的地方就可以设置,通过style属性进行设置。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<p style="width:600px;height:300px;font-size: 30;color: red;">最近比较热门话题是xx公司暴力裁员</p>
</body>
</html>
- 行内样式写法
<标签名字 style = "属性:属性值;属性:属性值;">正文文本</标签名字>
1.8 样式总结¶
Web前端开发中样式有三种:外部样式(link标签引入外部CSS文件)、内部样式、行内样式
| 样式 | 形式 |
|---|---|
| 外部样式 | Link标签引入 |
| 内部样式 | |
| 行内样式 | <标签名字 style = "属性:属性值;">文本标签名字> |
注意:前端开发中样式有优先级的:行内样式 => 内部样式 => 外部样式
问题:三种样式那种好?
- 外部样式相对而言在开发项目时候经常用外部样式
- 可以进行统一管理:让你的项目中样式看的更加整洁
2. 盒模型¶
概述:任意标签都有盒模型,可以让标签向外拓展。
- padding : 内边距
- border:外边框
- margin:对齐
盒模型中:padding【内边距】、border【外边框】可以让元素向外拓展。
前端盒模型包含的元素数据:margin + padding + border + width + heigh
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
.box{
width:200px;
height:200px;
/* 外边框:可以让元素向外拓展 */
border:5px solid red;
padding:100px;
}
.box1{
margin:10px;
width:200px;
height: 200px;
background:red;
}
</style>
</head>
<body>
<div class="box">文字文字</div>
<div class="box1"></div>
</body>
</html>
3. 定位¶
概述:在前端web开发中所谓文档流【页面中标签排列方式】:如果想打破文档流,即让标签可以在任意地方显示,那么需要进行定位
-
块元素:从上到下排列(独占一行)
-
行内元素:从左到右排列(不独占一行)
-
定位在前端开发中三种:固定定位、相对定位、绝对定位
3.1 固定定位¶
概述:
- 给某一个标签固定在网页中某一个位置,可以利用固定定位,哪怕页面有上下滑动效果也不影响。
注意:
- 定位元素有left、top、right、bottom四个属性;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
div{
width:400px;
height: 200px;
}
body{
height: 10000px;
}
.box{
/* 固定定位:固定定位元素不占起始位置 */
position: fixed;
left:500px;
top:200px;
background:red;
}
.box1{
background:green;
}
.box2{
background:purple;
}
</style>
</head>
<body>
<div class="box"></div>
<div class="box1"></div>
<div class="box2"></div>
</body>
</html>
-
定位元素才有left、top、right、bottom四个属性
-
固定定位是以网页为参照,固定在某一个位置(即使页面滑动:也是在这个位置上)
-
固定定位元素不占用起始位置
3.2 相对定位¶
概述:相对定位也可以让元素脱离文档流,元素在进行相对定位的时候,其实相对的起始位置进行偏离,
而且还需要注意:相对定位元素起始位置值占用的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
/* 清除默认样式:默认情况下有缝隙 */
*{
margin:0;
padding: 0;
}
div{
width:400px;
height: 200px;
}
.box1{
background:red;
}
.box2{
position: relative;
left:400px;
top:200px;
background:green;
}
.box3{
background:purple;
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
</body>
</html>
-
相对定位元素:相对于自己起始位置
-
相对元素起始位置是占用的(别人用不了)
3.3 绝对定位¶
概述:绝对定位也可以让元素脱离标准文档流:
-
绝对定位元素,如果**没有定位父元素**【绝对定位元素:参照页面进行偏移】
-
绝对定位元素,如果**有定位父元素**【绝对定位元素:参照定位父元素进行偏移】
-
绝对定位元素不占起始位置(别人可以占用起始位置)
参照页面进行偏移
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
/* 清除默认样式 */
*{
margin:0;
padding: 0;
}
body{
height: 1000px;
}
div{
width:400px;
height: 200px;
}
.box1{
position: fixed;
left:100px;
top:100px;
background:red;
}
.box2{
background:green;
}
.box3{
background:purple;
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
</body>
</html>
参照定位父元素进行偏移
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
*{
margin:0;
padding: 0;
}
.outer{
position: relative;
/* 父元素 */
width:400px;
height: 400px;
background:red;
margin:200px;
}
.inner{
position: absolute;
left:10px;
top:20px;
width:200px;
height: 200px;
background:green;
}
</style>
</head>
<body>
<div class="outer">
<div class="inner"></div>
</div>
</body>
</html>
3.4 定位小练习¶
| cur | cur1 |
|---|---|
| cur | cur2 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
/* 子绝父相*/
*{
margin:0;
padding: 0;
}
.box{
position: relative;
width:600px;
height: 400px;
background:red;
border:1px solid black;
left:200px;
}
.cur{
position: absolute;
left:0px;
top:0px;
width:300px;
height:400px;
background:cyan;
}
.cur1{
position: absolute;
width:300px;
height:200px;
left:300px;
top:0px;
background:purple;
}
.cur2{
position: absolute;
width:300px;
height:200px;
background:yellow;
left:300px;
top:200px;
}
</style>
</head>
<body>
<div class="box">
<div class="cur"></div>
<div class="cur1"></div>
<div class="cur2"></div>
</div>
</body>
</html>
4. 浮动¶
概述:
-
可以利用定位打破文档流,除此以外也可以利用浮动,其实浮动就是让元素进行*靠左、靠右进行水平排列;
-
浮动时,如果一行放不下会自动换行
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
/* 清除默认样式 */
*{
margin:0;
padding: 0;
}
div{
/* 靠左侧浮动 */
float:left;
width:150px;
height: 50px;
background:cyan;
}
</style>
</head>
<body>
<div>最近北京气温降低</div>
<div>最近北京气温降低</div>
<div>最近北京气温降低</div>
<div>最近北京气温降低</div>
<div>最近北京气温降低</div>
<div>最近北京气温降低</div>
<div>最近北京气温降低</div>
<div>最近北京气温降低</div>
<div>最近北京气温降低</div>
</body>
</html>
4.1 导航¶
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
*{
margin:0;
padding: 0;
}
.box{
position: relative;
/* 当前这个div宽度是按照父元素宽度进行百分比*/
width:100%;
height:50px;
background:#01204f;
}
ul{
position: absolute;
left:20%;
width:80%;
height: 50px;
/* 将列表默认样式清除(将前面黑色圆球干掉) */
list-style: none;
}
li{
float:left;
width:60px;
height: 50px;
color:white;
/* 行高 */
line-height:50px;
/* 小手 */
cursor:pointer;
/* 文字居中 */
text-align:center;
}
li:hover{
background:red;
}
</style>
</head>
<body>
<div class="box">
<ul>
<li>首页</li>
<li>国内</li>
<li>国际</li>
<li>军事</li>
<li>财经</li>
<li>娱乐</li>
<li>体育</li>
<li>互联网</li>
<li>科技</li>
<li>游戏</li>
<li>女人</li>
<li>汽车</li>
<li>房产</li>
</ul>
</div>
</body>
</html>
-
子元素宽度可以是百分比单位,按照父元素宽度进行划分百分比的;
-
Line-heigh(行高):可以让文本在垂直方向居中(最好它的属性值和当前元素高度一边高就行了)
4.2 轮播图小圆球¶
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
*{
margin:0;
padding: 0;
}
ul{
position: relative;
width:300px;
height: 50px;
list-style: none;
border:1px solid black;
left:500px;
}
li{
float:left;
/* 左侧外边距 */
margin-right:10px;
width:50px;
height: 50px;
background:green;
/* 圆角设置 */
border-radius:50%;
}
.cur{
background:yellow;
}
</style>
</head>
<body>
<ul>
<li class="cur"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>
4.3 四叶草效果¶
添加动画:
-
CSS中给元素添加动画:Animation: https://www.w3school.com.cn/cssref/pr_animation.asp
-
Web前端开发浏览器厂商常见:谷歌、IE、火狐、欧朋。特有的效果需要浏览器厂商私有前缀, 即带有私有前缀样式只能在当前浏览器中使用
-
Animation:动画稍微了解,前端工程师可以利用样式搞动画
各厂商私有前缀:
| 谷歌 | IE | 火狐 | 欧朋 |
|---|---|---|---|
| webkit | ms | moz | o |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
*{
margin:0;
padding: 0;
}
.box{
/*相对定位:相对的是自己起始位置 */
position: relative;
width:200px;
height: 200px;
left:40%;
/* 调用动画 */
animation:donghua 5s linear 0s infinite;
}
.ye1{
/* 绝对定位:参照定位父元素进行偏移*/
position: absolute;
width:100px;
height: 100px;
background:green;
left:0px;
top:0px;
/* 圆角设置:分别左上、右上、右下、左下 */
border-radius:0px 90px 0px 90px;
}
.ye2{
/* 绝对定位:参照定位父元素进行偏移*/
position: absolute;
width:100px;
height: 100px;
background:green;
left:100px;
border-radius:90px 0px 90px 0px;
}
.ye3{
position: absolute;
width:100px;
height: 100px;
background:green;
left:0px;
top:100px;
border-radius:90px 0px 90px 0px;
}
.ye4{
position: absolute;
width:100px;
height:100px;
background:green;
left:100px;
top:100px;
border-radius:0px 90px 0px 90px;
}
/* 声明一个animation动画 */
@-webkit-keyframes donghua{
from{
/* 旋转属性:可以让元素进行旋转(旋转单位是deg)*/
transform:rotate(0deg);
}
to{
transform:rotate(360deg);
}
}
</style>
</head>
<body>
<div class="box">
<div class="ye1"></div>
<div class="ye2"></div>
<div class="ye3"></div>
<div class="ye4"></div>
</div>
</body>
</html>
5. 轮播图布局¶
概述:很多电商(淘宝、京东)网站首页中都带有banner(轮播图功能)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
/* 默认样式清除 */
*{
margin:0;
padding: 0;
}
.box{
/*相对定位 */
position: relative;//相对自己起始位置进行便宜,起始位置占用(别人不能用)
width:520px;
height: 280px;
border:1px solid red;//外边框【外边框大小设置 实线 颜色设置】
left:400px; //定位元素才有left、top、right bottom
top:100px;
/* 如果子元素超出父元素部分隐藏*/
overflow: hidden; //子元素超出父元素部分:隐藏掉
}
ul{
position: absolute;
list-style: none;//去除列表默认样式(前面黑色小球)
width:520px;
height: 280px;
}
.leftbtn{
position:absolute;//绝对定位:按照已经定位父元素进行便宜
width:60px;
height:30px;
background:black;
left:0px;
top:120px;
color:white;
text-align:center;//文本居中
line-height:30px;//行高设置(让蚊子垂直方向居中:一般和高度一样)
cursor:pointer;//小手
opacity: .8;//透明【0~1】
}
.rightbtn{
position: absolute;
width:60px;
height: 30px;
background:black;
right:0px;
top:120px;
color:white;
text-align:center;
line-height:30px;
cursor:pointer;
opacity: .8;
}
ol{
position: absolute;
width:200px;
height:25px;
list-style: none;
left:35%;
bottom:5px;
}
/* 后代选择器 */
ol li{
float:left;//左侧浮动
width:25px;
height: 25px;
background:black;
color:white;
/* 变为圆球 */
border-radius:12.5px; //圆角设置【左上、右上、右下、左下】
text-align:center;
line-height:25px;
margin-right:5px;
}
.cur{
background:skyblue;
/* 进行缩放 */
transform:scale(1.2);
}
</style>
</head>
<body>
<div class="box">
<!--有序列表去做显示图片 -->
<ul>
<li><img src="1.jpg" alt="" /></li>
<li><img src="1.jpg" alt="" /></li>
<li><img src="1.jpg" alt="" /></li>
<li><img src="1.jpg" alt="" /></li>
<li><img src="1.jpg" alt="" /></li>
</ul>
<!-- 左右按钮 -->
<div class="leftbtn">left</div>
<div class="rightbtn">right</div>
<!-- 分页器 -->
<ol>
<li class="cur">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ol>
</div>
</body>
</html>
-
transform:让元素实现变化:旋转、平移、缩放
-
旋转(单位是度数deg): 让元素按照图形几何中心进行旋转
transform:rotate(30deg) -
缩放:可以等比例让元素宽度和高度成比例放大、缩小。
-
tranform:scale(1.2):属性值【0-1】缩小 大于1代表的是放大
-