欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CSS常用知识点总结(一)

程序员文章站 2022-04-11 17:09:48
...

CSS学习小结

CSS样式引入方式

1、内联样式表(内嵌 行内)  style属性
<div style="width:100px;"></div>
2、内部样式表  style标签
<style> 
	div{width:100px} 
</style>
3、外部样式表  link
<link rel="stylesheet" type="text/css" href="css/style.css"/>

样式表优先级

  • 内联样式 > 内部样式 / 外部样式(内部/外部样式改变不了内联样式中存在的属性的值
  • 内部样式和外部样式按照书写顺序来判断优先级

选择器

基本选择器:
	元素选择器 p { }
	Id选择器  #p1 { }
	类选择器  .p1 { }
	通配符选择器  * { }
复合选择器
	并集选择器  p, h1, div { }
	交集选择器  p#p1 { }
	后代选择器	div p { }
	子元素选择器 div > p { }
伪类选择器
	链接伪类选择器:
		:link	未访问的链接	a:link { }
		:visited	已访问的链接	a:visited { }
		:hover	鼠标经过	a:hover { }
		:active	选定(**)的链接,即点击链接不松开的状态	a:active { }
	结构伪类选择器:
		:first-child	选取属于其父元素的首个子元素的指定选择器
		:last-child	选取属于其父元素的最后一个子元素的指定选择器
		:nth-child(n)	匹配属于其父元素的第n个子元素,不论元素类型,其中的n从0开始,2n就是0,2,4,6,8…,3n就是0,3,6,9…
		:nth-last-child(n)	匹配属于其父元素的第n个子元素,从最后一个开始计数,也就是倒数
		:nth-of-type(n) 	p:nth-of-type(2)  选择属于其父元素第二个p元素的每个p元素
伪元素选择器
	element::first-letter	文本的第一个单词或字(如中文、日文、韩文等)
	element::first-line 文本第一行
	element::selection 可改变选中文本时的样式
	element::before和element::after   在E元素内部的开始位置和结束位创建一个元素,该元素为行内元素,且必须要结合content属性使用
	
注意:  E:after、E:before 在旧版本里是伪元素,CSS3的规范里“:”用来表示伪类,“::”用来表示伪元素,但是在高版本浏览器下E:after、E:before会被自动识别为E::after、E::before,这样做的目的是用来做兼容处理。

背景属性:background(不可继承)

background-color		背景颜色
background-image	背景图片(有背景图片才可以设置以下的属性)
background-repeat	背景图片平铺方式
background-attachment	背景图像是否固定或者随着页面的其余部分滚动
background-position	背景图片位置
background-size	背景尺寸
background: 背景颜色 背景图片 图片平铺方式 图片附着方式 图片位置;  // 简写

边框属性:border

border-color	边框颜色
border-width	边框宽度
border-style	边框样式
border-top		上边框
border-bottom	下边框
border-left		左边框
border-right	右边框
border: 边框宽度 边框样式 边框颜色; // border的简写方式,给上下左右设置边框
border-radius   边框圆角属性

内外边距:

margin:外边距
书写方式:
	margin-top  上外边距
	margin-bottom  下外边距
	margin-left	左外边距
	margin-right	 右外边距
	margin: 上下 左右;
	margin: 上 左右 下;
	margin: 上 右 下 左;
注意:
1.	相邻块级元素垂直外边距合并,如果上面元素有下外边距,下面元素有上外边距,它们之间的垂直间距不是二者的间距相加,而是取两者中的较大者。这种情况尽量避免。
2.	嵌套块级元素垂直外边距的合并,对于两个嵌套关系的块级元素,如果父元素没有设置上边框或上内边距,则父元素的上外边距和子元素的上外边距会发生合并,合并之后的外边距为两者中的较大者。

解决方案:1. 可以给父元素添加上边框或上内边距; 
		 2. 可以为父元素添加overflow: hidden;(常用的)

padding:内边距
书写方式:
	padding -top  上内边距
	padding -bottom  下内边距
	padding -left	  左内边距
	padding -right	 右内边距
	padding: 上下 左右;
	padding: 上 左右 下;
	padding: 上 右 下 左;
注意:添加padding后,会改变元素原来的可视大小。
解决方案:1. 使用box-sizing: border-box;盒子模型 ;
		 2. 在给定元素宽高时,就将padding先计算在内

浮动(float ):用来进行页面布局

  • 文档流(标准流):标签默认的排列方式及属性
  • 浮动流:脱离文档流之后所在的流

规则:
1.设置浮动以后就脱离了原有的文档流,所以后面的元素就会向前移位进行补充
2. 浮动元素只在自己那一行浮动,不会向前覆盖;但如果该行宽度不够,后面的浮动元素会自动换行
3. 谁先浮动谁就在前面

  • 使用场景:浮动可以将多个块级元素一行排列

存在的问题:

  1. 使用浮动后,元素会脱离标准流,也就不再占有位置,下面的元素后上移填补空缺,但会被浮动元素遮住。
  2. 子元素使用浮动后,父元素(没有设置高度)会因为子元素浮动而出现高度为0(高度塌陷)的问题。

要解决这些问题就需要清除浮动。

解决方案:

清除浮动之前:
CSS常用知识点总结(一)

  1. 给脱标元素下面的标准流元素设置clear属性
    选择器{clear: left | right | both}
  2. 额外标签法:是w3c推荐的做法是通过在浮动元素末尾添加一个空的块级标签,例如:<div style=”clear:both”></div>,或者其他标签都可以。
<style type="text/css">
			.box1,.box3{
				width: 200px;
				height: 200px;
			}
			.box2,.box4{
				width: 100px;
				height: 100px;
			}
			.box1{
				background-color: tan;
				float: left;
				margin-left: 50px;
			}
			.box2{
				background-color: teal;
			}
			.box3{
				background-color: thistle;
				/*给脱标元素下面的标准流元素设置clear属性*/
				clear: both; /*常用*/
				/* clear: left; */
			}
			.box4{
				background-color: tomato;
			}
		</style>

		<body>
				<div class="box1">
					<div class="box2"></div>
				</div>
				<!--额外标签法-->
				<!--
				优点: 通俗易懂,书写方便
				缺点: 添加许多无意义的标签,结构化较差。  我只能说,w3c你推荐的方法我不接受,你不值得拥有。。。
				-->
				<!-- <div style="clear:both"></div> -->
				<div class="box3">
					<div class="box4"></div>
				</div>
		
			</body>

清除浮动之后:
CSS常用知识点总结(一)
3. 父级元素添加overflow属性方法:通过触发BFC的方式,实现清除浮动的效果
给父级元素添加overflow: hidden | auto | scroll都可以实现
4. 使用after伪元素清除浮动
5. 使用before和after双伪元素清除浮动

清除浮动之前:
CSS常用知识点总结(一)

<style type="text/css">
			.box1 {
				/* 很多情况下,我们父级元素不方便给高度,因为考虑到子元素的高度会变 */
				width: 600px;
				background-color: #008080;
				/*给父级元素天添加overflow属性清除浮动*/
				/*
				优点:  代码简洁
				缺点:  内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素。
				*/
				/* overflow: hidden;  常用*/
				/* overflow: auto; */
				/* overflow: scroll; */
			}
			
			/* 使用after伪元素清除浮动 */
			/*after前使用单冒号是为了兼容以前的浏览器*/
			/*注意: content:"."  里面尽量跟一个小点,或者其他,尽量不要为空,否则再firefox 7.0前的版本会有生成空格。*/
			/*
			优点: 符合闭合浮动思想  结构语义化正确
			缺点: 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。
			*/
			/* .clearfix:after {
				content: ".";
				display: block;
				height: 0;
				clear: both;
				visibility: hidden;
			} 
			.clearfix {*zoom: 1;}   带有*是IE6、7 专有
			*/
			
			/* 使用before和after双伪元素清除浮动 */
			/*
			优点:  代码更简洁,更常用
			缺点:  由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。
			*/
			.clearfix:before, .clearfix:after {
				content: "";
				display: table;
			}
			.clearfix:after {
				clear: both;
			}
			.clearfix {
  				*zoom:1;  /* 兼容ie6、7 */
			}
			.box2 {
				width: 600px;
				height: 240px;
				background-color: #FF0000;
			}
			/* son1和son2是处于标准流,会撑开父盒子 */
			.son1 {
				width: 150px;
				height: 100px;
				background-color: darkgoldenrod;
				float: left;
			}
			.son2 {
				width: 300px;
				height: 100px;
				background-color: aqua;
				float: left;
			}
		</style>
		<body>
			<div class="box1 clearfix">
				<div class="son1">son1</div>
				<div class="son2">son2</div>
			</div>
			<div class="box2">box2</div>
		</body>

清除浮动之后:
CSS常用知识点总结(一)