前端基础夯实--(CSS系列)CSS盒子模型

1、盒子模型的概念

2、宽度属性

1、宽度属性的设置的值可以是下面几种:

width:长度值 | 百分比 | auto
max-width:长度值 | 百分比 | auto
min-width:长度值 | 百分比 | auto

2、通过代码理解一下max-width和min-width设置长度值。

<!DOCTYPE html>
<html>
<head>
    <title>标题</title>
    <meta http-equiv="Content" content="text/html;charset=utf-8">
	<style type="text/css">
		p{ background-color:#ececec; width:400px;}
		.one{max-width:500px;}
		.two{min-width:500px;}
	</style>
</head>
<body>
		<p>盒子模型的宽度width:400px</p>
		<p class="one">盒子模型最大宽度max-width:300px</p>
		<p class="two">盒子模型最小宽度min-width:250px</p>
</body>
</html>

首先要注意的是,p是块级元素,块级元素单独占一整行,所以设置了背景颜色,默认情况下是贯穿于整个浏览器的,然后看一下在浏览器中的效果:max-width为500px是只能比500px小,那么400px符合要求,就是400px的长度,min-width是只能比500px大,所以400px不符合要求,就为500px。

3、长度百分比:给长度设置百分比,百分比是相对于父级元素来说的

3、高度属性

1、高度的值的设置和宽度的设置差不多是一样的:

height:长度值 | 百分比 | auto
max-height:长度值 | 百分比 | auto
min-height:长度值 | 百分比 | auto

2、代码来看结果:

<!DOCTYPE html>
<html>
<head>
    <title>标题</title>
    <meta http-equiv="Content" content="text/html;charset=utf-8">
	<style type="text/css">
		p{ background-color:#ececec; height:200px;}
		.one{max-height:100px;}
		.two{min-height:100px;}
	</style>
</head>
<body>
		<p>盒子模型的宽度width:400px</p>
		<p class="one">盒子模型最大宽度max-width:300px</p>
		<p class="two">盒子模型最小宽度min-width:250px</p>
</body>
</html>

下面来看看效果:因为max-height为100px,高度200px超过了100px,不符合要求,所以就是100px,而min-height为100px,200px超过了100px,符合要求,所以第三段内容就是200px。

4、哪些元素可以设置height和width属性

1、首先要注意的是:当我们不设置height和width属性的时候,他们的值都是auto,width默认就是贯穿父级元素的宽度,height就是内容的高度。

2、能设置高和宽属性的有块级元素替换元素:<p> <div> <h1>~<h6> <ul> <ol> <li> <dl> <dt> <dd>等块级元素,<img> <input> <textarea> 等替换元素。

3、<img>如果同时设置了行内的宽和高,又设置了CSS的宽和高,那么图片是采用的CSS的样式,如果只设置了height和width两者中的一种,那么另外一种属性也会随之等比例变化缩放。

5、边框属性

1、边框的属性有边框宽度(border-width) 、边框颜色(border-color ) 、边框样式(border-style) 

2、设置边框的宽度属性:

border-width:thin | medium | thick | 长度值 

3、设置边框的样式属性:注意我们一定要去设置border-style这个属性,不然只设置border-width和border-color是没有效果的。同时边框是可以分别去定义的:

下面示例代码:

<!DOCTYPE html>
<html>
<head>
    <title>标题</title>
    <meta http-equiv="Content" content="text/html;charset=utf-8">
	<style type="text/css">
		p{line-height:100px;height:100px;background-color:#ececec;width:300px;text-align:center;border-width:10px;border-color:red;border-style:solid;}
	</style>
</head>
<body>

		<p>盒子模型的宽度width:400px</p>

</body>
</html>

4、边框属性简写:

border:  [宽度] [样式] [颜色]
border-top:[宽度] [样式] [颜色]
border-bottom:[宽度] [样式] [颜色]
border-left:[宽度] [样式] [颜色]
borderright:[宽度] [样式] [颜色]

5、padding属性

1、设置了padding,盒子在网页中占的空间,就不单单和width和height有关系了,与padding也有关系。

6、margin属性

1、首先要注意的就是margin可以为负值,这个和padding是不一样的地方

2、另外margin为auto的时候,会自动有个水平居中显示的效果,系统会自动帮你计算外边距:这个是相对父级元素居中显示的。

3、外边距和并,同时设置了外边距,合并的外边距将是外边距最大的那个值:

7、盒子模型计算

8、盒子模型的应用

1、html标签分为块级元素行内元素:p> <div> <h1>~<h6> <ul> <ol> <li> <dl> <dt> <dd>等块级元素,还有<span> <a> <em> 等行内元素,其中块级元素是独占一行的。行内元素是在同一行连续展示的。

2、能不能将块级元素和行内元素做一下转化呢?通过display属性可以实现两者相互之间的转换:

display :inline(成为行内元素) | block(成为块级元素) | inline-block(行内元素,有块级元素的特征) | none(子元素不被显示)

3、怎么解决行内元素之间有缝隙的问题:外部套一个父标签,样式中font-size设置为0px,然后单独给行内元素设置字体大小:

<!DOCTYPE html>
<html>
<head>
    <title>标题</title>
    <meta http-equiv="Content" content="text/html;charset=utf-8">
	<style type="text/css">
		p{ border:medium solid #000000;display:inline;font-size:16px;} /*行内样式单独设置font-size*/
		span{border:medium solid #000000;display:block;}
		.zerofont{font-size:0px;marginbottom:10px;} 、/*父级元素的font-size设置为0px*/
		
	</style>
</head>
<body>
	<div class="zerofont">
		<p>块级转化为行内元素</p>
		<p>块级转化为行内元素</p>
		<p>块级转化为行内元素</p>
	</div>
		<span>行内元素转化为块级元素</span>
		<span>行内元素转化为块级元素</span>
		<span>行内元素转化为块级元素</span>
</body>
</html>

4、对于块级元素(包括display:block),它的width,height,margin,padding属性都是有效的

5、对于行内元素(包括display:inline),它的width,height都无效,margin和padding也只在水平方向上有效,垂直方向无效

6、行内块元素(display:inline-block),属于行内元素,却也可以设置宽和高,以及水平和垂直方向上的margin和padding

7、子元素不显示(display:none),用下面的实例代码来演示一下:没有将鼠标放在<a>标签的内容上时,<span>标签中的内容是不显示的,把鼠标放在<a>标签的内容时:<span>中的内容就显示出来了。

<!DOCTYPE html>
<html>
<head>
    <title>标题</title>
    <meta http-equiv="Content" content="text/html;charset=utf-8">
	<style type="text/css">
		span{display:none;}s
		a:hover span{display:inline-block;}
	</style>
</head>
<body>	
		<a href="#">后面隐藏着。。。<span>行内元素转化为块级元素</span></a>
</body>
</html>

9、示例总结

<!DOCTYPE html>
<html>
<head>
    <title>标题</title>
    <meta http-equiv="Content" content="text/html;charset=utf-8">
	<style type="text/css">
		div,p,span{margin:0px;padding:0px;font-family:"微软雅黑";margin:0 auto;}
		.course{width:220px;background-color:#f2f4f6;border:1px solid #ececec;}
		.list1{width:100%;height:150px;background-color:#040a10;text-align:center;}
		.content{font-size:20px;color:#fff;font-weight:bold;line-height:150px;}
		.list2{font-size:14px;border-bottom:1px solid #d9dde1;margin:0px 15px;padding: 10px 5px 5px 5px;line-height:1.5em;}
		.special{border-bottom:none;}
		span{color:#93999f;font-size:12px;}
	</style>
</head>
<body>	
		<div class="course">
			<div class="list1">
				<p class="content">前端课程安排</p>
			</div>
			<div class="list2">
				<p>html基础课程</p>
				<span>4666人在学</span>
			</div>
			<div class="list2">
				<p>html基础课程</p>
				<span>4666人在学</span>
			</div>
			<div class="list2 special">
				<p>html基础课程</p>
				<span>4666人在学</span>
			</div>
		</div>
</body>
</html>

我们可以在浏览器看一下实现的效果是什么样的:

猜你喜欢

转载自blog.csdn.net/weixin_37968345/article/details/82252348