CSS补充
position:
fixed ===> 固定在页面的某个位置
top: 0 离上下左右还有多少
left: 0
right: 20px
bottom: 20px
absolute 单独的absolute只会固定在某个位置上,如果滚动滑轮它也会移动。应用场景不多
relative 单独的relative并没有太大的意义
relative + absolute 绝对位置+相对位置,相结合使用的场景较多
opacity: 0.8 透明度
z-index:9 层级的顺序
overflow:比如当div中有张图片比较大,超过定义的高度和宽度。此时的div中定义的高度和宽度将失效,怎么办
hidden 超出的部分将被隐藏
auto 出现滚动条,可以通过滚动条完全显示出来
hover: 当鼠标移动到此处时,将会生效的属性
background-image: url('image/4.git'); # 默认,div大,图片重复访
background-repeat: repeat-y; 纵轴重复
no-repeat 不重复
background-position-x:
background-position-y:
background-position: 10px 10px;代表x轴和y轴 # 一定要理解'抠洞原理',即取一张图片其中的一部分
针对以上还有一个简化的写法:
background: url("image/4.jpg") -20px -30px no-repeat
下面看几个例子
1,返回顶部,重点是position
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div onclick="GoTop();" style="background-color: black;color: white; 50px;height: 50px;
position: fixed;right: 0;bottom: 20px ">
返回顶部
</div>
<div style="height: 2000px;background-color: #bc8e66">正文</div>
<script>
function GoTop() {
document.body.scrollTop=0;
}
</script>
</body>
</html>
# 如果在mac 上 上述代码可能无效,需要改正 。document.documentElement.scrollTop=0
2,悬浮菜单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.pg-header{
height: 50px;
background-color: black;
color: white;
position: fixed;
top: 0;
right: 0;
left: 0;
/* 100%;*/
}
.pg-body{
height: 3000px;
background-color: #dddddd;
margin-top: 50px;
}
</style>
</head>
<body>
<div class="pg-header">头部</div>
<div class="pg-body">内容</div>
</body>
</html>
# 注意事项:
1,设置完postion之后,此时的悬浮标签并没有占一行。此时需要让左右距离等于0或者宽度等于100%
2,此时内容会被悬浮标签所有覆盖掉,因此要把“内容”的部分往下移动,需要设置margin-top
3:postion之relative和absolute进行相结合,进行定位
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style="position: relative; 300px;height: 300px;border: 1px solid black;margin:0 auto"> <div style="position: absolute;right: 0; bottom: 0; height: 50px; 50px;background-color: crimson"> </div> </div> </body> </html>
4,三层会话框的实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style="z-index:10; 500px;height: 400px; background-color: white; top: 50%; left: 50%; position: fixed; margin-left: -250px; margin-top: -200px;; "> <input type="text" name="student"> <input type="submit" value="提交"> 第三层 </div> <div style="z-index:9; background-color: black; position: fixed; top:0; left: 0; right: 0; bottom:0; opacity: 0.8; "> 第二层 </div> <div style="height: 5000px;background-color: aqua;"> 第一层 </div> </body> </html>
注意事项:
1,position中 opacity(透明度),z-index(层级优先级)的使用
2,如何让第三层白色对话框位于屏幕的中间部位。(百分比的使用以及左右移动)
# 细想一下:为什么第三层 top: 50% left:50%,之后还要左右移动呢?
因为 左边50%和上面的50%,是以第三层左上角哪个点来判断的。第三层是长方形,应该以几何中心来判断,所以要上移50%*自身高度,左移50%*自身宽度
3,如果以后让用户点击某个按钮时,让三层会话框来回切换。需要用到display:none就可以,后面js的时候可以实现这个功能。
5,当内层定义的图片超出外层定义的宽高,出现滚动条或者隐藏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style=" 300px;height: 300px;overflow: hidden"> #超出的部分将被隐藏 <img src="苹果.jpg"/> </div> <div style=" 300px;height: 300px;overflow: auto"> # 出现滚动条,可以通过滚动条完全显示出来 <img src="苹果.jpg"/> </div> </body> </html>
6, :hover的应用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.pg-header{
position: fixed;
right: 0;
left: 0;
top:0;
height: 48px;
background-color: #2459a2;
line-height: 48px;
}
.pg-body{
margin-top: 50px;
}
.w{
1014px;
margin: 0 auto;
}
.logo{
display: inline-block;
height: 48px;
padding: 0 10px 0 10px;
line-height: 48px;
}
.pg-header .menu{
color: white;
display: inline-block;
height: 48px;
padding: 0 10px 0 10px
/*上右下左*/
}
/*当鼠标移动到当前标签上时,以下CSS属性才生效*/
.pg-header .menu:hover{
background-color: #2568aa;
}
</style>
</head>
<body>
<div class="pg-header">
<div class="w">
<a class="logo" href="9,hover应用.html">
<img src="抽屉logo.png"/>
</a>
<a class="menu">全部</a>
<a class="menu">42区</a>
<a class="menu">段子</a>
<a class="menu">图片</a>
<a class="menu">挨踢1024</a>
<a class="menu">你问我答</a>
</div>
</div>
<div class="pg-body">
特朗普你好
</div>
</body>
</html>
7,抠洞原理(如何在一张有很多小图标的图片上选中一个)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style=" background-image: url(pwd-icons-new.png); background-position-x: 0; background-position-y: -100px; height: 37px; 39px"> </div> <div style=" background-image: url(pwd-icons-new.png); background-position-x: -48px; background-position-y: -100px; height: 37px; 39px"> </div> 简化的写法 <div style=" background: url(pwd-icons-new.png) -48px -100px; height: 37px; 39px"> </div> </body> </html>
8,实现登录时用户名和密码上的小图标
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style=" 400px;height: 35px; position: relative;line-height: 35px;margin: 0 auto"> <input type="text" value="用户名" style="height: 35px; 350px;padding-right: 39px"/> <span style="position: absolute;right: 8px;top: 3px;bottom: 0; background: url(pwd-icons-new.png) 0 -100px;height: 35px; 35px;display:inline-block;"> </span> </div> <div style=" 400px;height: 35px; position: relative;line-height: 35px;margin: 0 auto"> <input type="password" style="height: 35px; 350px;padding-right: 39px"/> <span style="position: absolute;right: 8px;top: 3px;bottom: 0; background: url(pwd-icons-new.png) 0 -100px;height: 35px; 35px;display:inline-block;"> </span> </div> </body> </html>
注意事项:
这个例子用到了好几个知识点:position,background-image,挖洞原理(以上的两个小图标都是通过"挖洞"原理来实现的),display:inline-block
后台页面布局
posttion: fixed ----永远固定在窗口某个位置 relative ----单独使用无意义 absolute ----第一次按照窗口进行定位在指定位置,当拖动滚轮时不在。 1, 上面不动,左边不动,右边随滚动条的滚动而滚动。(用的比较少)fixed 2, 左侧、上侧、右侧菜单跟随滚动条的滚动而滚动 absolute 3, 左侧以及上侧不动,右侧随滚动条的滚动而滚动 absolute overflow:auto(重点掌握) 第三种只需在2的基础上,在右侧CSS中加入overflow:auto即可实现两种布局。 原因分析: 第一次定位之后,整体页面并没有往下移动。因为在右侧中接入overflow:auto,相当于在右侧中接入滚动条,只对右侧生效,当右侧页面不下时就开始出现滚动条。其他的都不变还是固定在哪里。 注意:右侧的左右滚动条的问题,可以当右侧页面小于多少某个宽度让其出现,从而防止页面凌乱。只需要在右侧CSS加入 min-800px
下面我们用例子看一下是那种布局方式:
第一种布局: 上面不动,左边不动,右边随滚动条的滚动而滚动。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.body{
margin: 0;
}
.left{
float: left;
}
.right{
float: right;
}
.pg-header{
background: blueviolet;
height: 48px;
color: #fff;
}
.pg-content .menu{
200px;
background-color: #66bc71;
position: fixed;
top: 48px;
left: 0;
bottom: 0;
}
.pg-content .content{
background-color: #bc8e66;
position: fixed;
left: 200px;
top: 48px;;
bottom: 0;
right: 0;
overflow:auto;
}
</style>
</head>
<body class="body">
<div class="pg-header"></div>
<div class="pg-content">
<div class="menu left">
<div>tom1</div>
</div>
<div class="content right">
<div>hello world</div>
</div>
</div>
</body>
</html>
用的比较少们主要用fixed,有侧用overflow:auto
第二种布局:左侧、上侧、右侧菜单跟随滚动条的滚动而滚动
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.body{
margin: 0;
}
.left{
float: left;
}
.right{
float: right;
}
.pg-header{
background: blueviolet;
height: 48px;
color: #fff;
}
.pg-content .menu{
position: absolute;
top: 48px;
left: 0;
bottom: 0;
200px;
background: fuchsia;
}
.pg-content .content{
position: absolute;
top: 48px;
left: 200px;
right: 0;
bottom:0;
}
</style>
</head>
<body class="body">
<div class="pg-header"></div>
<div class="pg-content">
<div class="menu left">
<div>tom</div>
</div>
<div class="content right">
<div style="background: green">
<div>hello world</div>
</div>
</div>
</div>
</body>
</html>
这种布局主要使用absolute的方式进行布局的。
第三种布局:左侧以及上侧不动,右侧随滚动条的滚动而滚动 (重点掌握)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="Font-Awesome-master/Font-Awesome-master/css/font-awesome.min.css"/>
<style>
.body{
margin: 0;
}
.left{
float: left;
}
.right{
float: right;
}
.pg-header{
background: #2459a2;
height: 48px;
color: #fff;
}
.pg-header .logo{
200px;
background: darkseagreen;
height: 48px;
line-height: 48px;
text-align: center;
}
.pg-header .user{
250px;
height: 48px;
line-height: 48px;
background: #2459a2;
}
.pg-header .user .a img{
45px;
height: 45px;
border-radius: 50%
/*<!--图片是圆形的,也可以设置数值-->*/
}
.pg-header .user .b{
z-index: 20;
250px;
position: absolute;
top:48px;
right: 0;
background: #fff;
color: #000000;
display: none;
}
.pg-header .user .icons{
padding: 0 15px;
}
.pg-header .user .icons:hover{
background: blue;
}
.pg-header .user .number{
display: inline-block;
padding: 1px 5px;
line-height: 1;
background: crimson;
border-radius: 50%;
font-size: 10px;
}
.pg-header .user:hover .b{
display: block;
}
/*这种方式可以让隐藏class='b'的内容显示出来*/
.pg-header .user .b a{
display: block;
}
.pg-header .user:hover{
background: palevioletred;
}
.pg-content .menu{
position: absolute;
top: 48px;
left: 0;
bottom: 0;
200px;
background: paleturquoise;
}
.pg-content .content{
position: absolute;
top: 48px;
left: 200px;
right: 0;
bottom:0;
min- 800px;
overflow: auto;
z-index: 9;
}
</style>
</head>
<body class="body">
<div class="pg-header">
<div class="logo left">
小熊微店
</div>
<div class="user right">
<div class="left icons">
<i class="fa fa-bell" aria-hidden="true"></i>
</div>
<div class="left icons">
<i class="fa fa-commenting-o" aria-hidden="true"></i>
<span class="number">
6
</span>
</div>
<a href="15,后台页面布局3---标准后台页面.html" style="display: block;" class="a left">
<img src="hang.jpg">
</a>
<a style="display: block;padding-left: 10px" class="left">
tom
</a>
<div class="b">
<a>我的资料</a>
<a>注销</a>
</div>
</div>
</div>
<div class="pg-content">
<div class="menu left">
<div>tom</div>
</div>
<div class="content right">
<div style="background: gainsboro">
<div>hello world</div>
<div>hello world</div>
</div>
</div>
</div>
</body>
</html>
第三种只需在2的基础上,在右侧CSS中加入overflow:auto即可实现两种布局。
实用的小技巧:
1,如果写网站时用到很多的小图标,可以直接利用http://fontawesome.io/上面的即可。
首先要下载下来然后在也title中进行引用。
<link rel="stylesheet" href="Font-Awesome-master/Font-Awesome-master/css/font-awesome.min.css">
min表示压缩版的
然后在在网站中把看到的css样式复制过来即可,用font-size来设置图标大小
2,如果利用css实现鼠标放在某个标签上实现弹窗的效果。
a:hovel .b{
display:block
}
因为一般弹窗在鼠标没有放上去之前都是隐藏起来的,所以当鼠标放上去之后将其设置为block即可。
3,border-radius: 50%; 把图片或者设置好标签框由方形,转换成圆形或者椭圆形。后面也可已设置数值,根据实际情况来进行调整。