六、定位方式

1.简介

通过position属性实现对元素的定位,有四种定位方式

常用取值:

取值 含义 说明
static 默认值 按照常规文档流进行显示
relative 相对定位 相对于标签原来的位置进行的定位
absolute 绝对定位 相对于第一个非static定位的父标签的定位
fixed 固定定位 相对于浏览器窗品进行定位

设置定位方式后,还要设置定位属性(偏移量):top、bottom、left、right

2.相对定位

先设置元素的position属性为relative,然后再设置偏移量

3.绝对定位

先设置父标签为非static定位,然后设置元素的position属性为absolute,最后再设置偏移量

注意:

  • 一般来说都会将父标签设置为非static定位
  • 如果父标签不是非static定位,则会相对于浏览器窗口进行定位
  • 设置元素为绝对定位后,元素会浮到页面上方

4.固定定位

先设置元素的position属性为fixed,然后再设置偏移量

设置元素为固定定位后,元素会浮动在面面上方

5.z-index

设置元素定位方式后,元素会浮在页面上方,此时可以通过z-index属性设置优先级,控制元素的堆叠顺序

取值为数字,值越大优先级越高,默认为auto(大多数浏览器默认为0)

注意:只能给非static定位的元素设置z-index属性

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		#container{
			width:800px;
			border:1px solid #000000;
			position:relative;
		}
		.div1,.div2,.div3,.div4{
			width:100px;
			height:50px;
		}
		.div1{
			background:red;
			position:relative;/* 相对定位 */
			top:20px;
			left:50px;
			z-index:-5;
		}
		.div2{
			background:blue;
			position:absolute;
			left:100px;
			bottom:50px;
			z-index:-8;
		}
		.div3{
			background:green;
			position:fixed;
			bottom:50px;
			left:100px;
		}
		.div4{
			background:cyan;
		}
	</style>
</head>
<body>
	<div id="container">
		<div class="div1">div1</div>
		<div class="div2">div2</div>
		<div class="div3">div3</div>
		<div class="div4">div4</div>
	</div>
</body>
</html>
 

示例:

定位方式.png

七、其他CSS属性

1.浮动和清除

1.1 浮动属性

通过float属性来实现元素的浮动,可以让块级元素脱离常规的文档流,向左或向右移动,在同一行显示,

如果一行显示不下,则会换行显示

常用取值:

  • left左浮动
  • right右浮动
  • none不浮动,默认值

设置float属性后,元素会浮在页面上层,此时父容器无法计算自己尺寸,如果我们还想显示父容器通常会在末尾添加一个清除了float属性的空的div来解决

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		#container{
			/* width:800px; */
			border:1px solid #000000;
		}
		.div1,.div2,.div3,.div4{
			width:100px;
			height:50px;
		}
		.div1{
			background:red;
			float:left;
		}
		.div2{
			background:blue;
			float:left;
		}
		.div3{
			background:green;
			float:left;
		}
		.div4{
			background:cyan;
			float:left;
		}
		.clr{
			clear:left;
		}
	</style>
</head>
<body>
	<div id="container">
		<div class="div1">div1</div>
		<div class="div2">div2</div>
		<div class="div3">div3</div>
		<div class="div4">div4</div>
		<div class="clr"></div>
	</div>
	aaa
</body>
</html>
 

示例:

其他css属性.png

1.2 清除属性

通过clear属性来实现清除,设置元素的哪一侧不允许有浮动元素

常用取值:

  • left左侧不允许出现浮动元素
  • right右侧不允许出现浮动元素
  • both两侧不允许出现浮动元素
  • none允许两侧出现浮动元素,默值

结论:

  • 对于非浮动元素,两边都可以设置清除(常用)
  • 对于浮动元素,向哪边浮动,就只能设置哪边的清除
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		body{
			margin:0;
			padding:0;
		}
		#container{
			width:660px;
			margin:0 auto;
			border:2px solid #0f0;
		}
		.div1,.div2,.div3,.div4{
			width:200px;
			height:180px;
			float:left;
			margin:5px;
			border:5px outset #ff7300;
			padding:10px;
		}
		#container img{
			width:100%;
			height:100%;
		}
		.clr{
			clear:left;
		}
	</style>
</head>
<body>
	<div id="container">
	<div class="div1"><img src="../images/adv1.jpg" alt=""></div>
	<div class="div2"><img src="../images/adv2.jpg" alt=""></div>
	<div class="div3"><img src="../images/adv3.jpg" alt=""></div>
	<div class="div4"><img src="../images/adv4.jpg" alt=""></div>
	<div class="clr"></div>
	</div>
	<p>welcome to css</p>
</body>
</html>
 

示例:

练习.png

2.元素的显示和隐藏

2.1 display

通过display属性设置元素是否显示,以及是否独占一行

常用取值:

取值 含义 说明
none 不显示  
inline 显示为内联元素,行级元素的默认值 将块级元素变为行级元素,不再独占一行
block 显示为块级元素,块级元素的默认值 将行级元素变为块级元素,独占一行
inline-block 显示为内联元素,但是可以设置宽和高 在inline基础上允许设置宽度和高度

注意:

行级元素是无法设置宽度和高度的,可以为行级元素设置 display:inline-block ,然后就可以设置宽和高了

2.2 visibility

也可以通过visibility属性设置元素的显示和隐藏

常用属性:

取值 含义 说明
visible 显示  
hidden 隐藏  

2.3 区别

  • display隐藏时不再占据页面中的空间,后面的元素会占用其位置

  • visibility隐藏时会占据页面中的空间,位置还保留在页面中,只是不显示

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.div1{
			width: 100px;
			height: 100px;
			background:blue;
			display:inline;
		}
		span{
			width: 100px;
			height: 50px;
			background:yellow;
			display:inline-block;
		}
		i{
			display:block;
			width: 100px;
			height: 50px;
			background:red;
		}
		p{
			width: 50px;
			height: 50px;
			background:red;
		}
		.p1{
			visibility:hidden;
		}
		.login{
			display:inline-block;
			width: 100px;
			text-decoration:none;
			background:rgba(255, 0, 0, 0.7);
			color:#fff;
			padding:10px;
			text-align:center;
			border-radius:10px;
		}
		.login:hover{
			background:rgba(255, 0, 0, 0.5);
		}
	</style>
</head>
<body>
	<div class="div1">div1</div>
	<span>span1</span>
	<i>呵呵</i>
	<hr>
	<p class="p1">hello</p>
	<p class="p2">world</p>
	<hr>
	<a href="javascript:alert('欢迎光临')" class="login">&nbsp;&nbsp;&nbsp;&nbsp;</a>
</body>
</html>
 

示例:

元素的显示和隐藏.png

3.轮廓属性

3.1 简介

轮廓outline,用于在元素周围绘制一个轮廓,位于border外围,可以突出显示元素

3.2 基本用法

常用属性:

  • outline-width:轮廓宽度
  • outline-color:轮廓颜色
  • outline-style:轮廓样式
  • outline简写

在浏览器中,当鼠标单击或使用TAB键让一个表单或链接获得焦点时,该元素会有一个轮廓outline

优点:可以提高使用表单的用户体验

缺点:有时会影响美观

3.3 outline和border的区别

  • border可以应用于所有html元素,而outline主要用于表单元素、超链接元素
  • 当元素获得焦点时会自动出现outline轮廓效果,当失去焦点时会自动消失,这是浏览器默认行为
  • outline不影响元素的尺寸和位置,而border会影响
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		span{
			border:2px solid red;
			outline:4px dashed green;
		}
		.username{
			border:1px solid red;
			outline:none;
			padding-left:3px;
			width:80px;
		}
		.email{
			border:0;
			outline:0;
			border-bottom:1px solid #000;
		}
		.btnsubmit{
			border:0;
			padding:5px;
			width:100px;
		}
		.mydiv{
			width:100px;
			background:#ccc;
			border:2px solid red;
		}
	</style>
</head>
<body>
	<span>welcome to CSS</span>
	<hr>
	用户名:<input type="text" class="username">
	<a href="#">CSS</a>
	<hr>
	邮箱:<input type="text" class="email">
	<input type="submit" value="提交" class="btnsubmit">
	<hr>
	<div class="mydiv">div</div>
</body>
</html>
 

示例:

轮廓属性.png

4.其他属性

4.1 宽高相关

  • max-width:设置元素的最大宽度
  • max-height:设置元素的最大高度
  • min-width设置元素的最小宽度
  • min-height设置元素的最小高度

4.2 overflow属性

当元素内容溢出时该如何处理

常用取值:

  • visible溢出时可见,显示在元素外,默认值
  • hidden溢出的部分不可见(常用)
  • scroll无论是否出现溢出始终出现滚动条
  • auto溢出时自动出现滚动条

4.3 cursor属性

用于设置光标的形状

常用属性:

  • default默认光标,一般为箭头
  • pointer手形,光标移动超链接上时一般显示为手形
  • move表示可移动
  • text表示文 本
  • wait表示程序正忙,需要等待
  • hep表示帮助
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		p{
			border:1px solid red;
			min-width:500px;
		}
		div{
			border:1px solid blue;
			width: 300px;
			height: 100px;
			overflow:auto;
		}
		span{
			cursor:help;
		}
	</style>
</head>
<body>
	<p>
		welcome to css welcome to css welcome to css welcome to css
		welcome to css welcome to css welcome to css welcome to css
		welcome to css welcome to css welcome to css welcome to css
		welcome to css welcome to css welcome to css welcome to css
	</p>
	<hr>
	<div>
		welcome to css welcome to css welcome to css welcome to css
		welcome to css welcome to css welcome to css welcome to css
		welcome to css welcome to css welcome to css welcome to css
		welcome to css welcome to css welcome to css welcome to css
	</div>
	<hr>
	<span>光标形状</span>
</body>
</html>
 

示例:

其他属性.png

 

学完还行练?点这里