css 学习笔记

pixel: 像素
1.所设置的 width 和 height 只是内容区的
2.所设置的 background (也就是看见的) 为内容区和padding(内边距) 区的
3.所谓的盒模型=外边距(margin) + 边框(border) + 内边框(padding) + 内容区
4.<ul> 和 <ol> 默认上、下外边距为16px, 左内边距为40px
5.相邻的外边距会合并,以大为准
6.浮动元素不在文档中,任何元素都可浮动,浮动元素会变成一个块状元素
7.相对定位元素依然在文档流中,依然占据原始空间,相对本身定位。

伸缩项目的属性:
	flex:弹性的
	属性:	flex-grow:扩展,成长,df(0)
			flex-shrink:缩小  df(1)
			flex-basis :基础的 df(auto)项目长度的起始数值
	order:顺序,命令,订货 df(0) 数值越小,排列越靠前,
伸缩容器的属性:
flex-flow:流,流动。复合属性,有下方两个:
			flex-direction:方向,设置伸缩项目在主轴上的排列方向,有4个值:
					row:默认值,主轴为水平方向,起点在左端,
					row-reverse:行反向,主轴为水平方向,起点为右端,
					column:列, 主轴为垂直方向,起点为上沿,
					column-reverse:列反向,主轴为垂直方向,起点为下沿。
			flex-wrap:包装,设置伸缩容器为单行还是多行,默认项目排列在一行上。
			若换行,多的一行不占据空间位置。
			        nowrap:默认值,不换行
			        wrap:换行,第一行在上方,
			        wrap-revers:换行,第一行在下方。
justify-content:整理版面-内容:定义项目在主轴上的对齐方式。
具体对齐方式与主轴有关,假设主轴为从左到右。
		flex-start:默认值,左对齐
		flex-end: 右对齐
		center:居中
		space-between; 两端对齐(靠墙),项目之间间隔相等,
		space-around:靠墙的项目靠墙距离相等,相邻项目之间的距离是其两倍
align-items:对齐-项目:定义项目在交叉轴上如何对齐。
对齐方式与交叉轴有关,假设交叉轴从上到到下:
		flex-start:默认值:交叉轴的起点对齐
		flex-end:交叉轴的重点对齐。
		center: 交叉轴的中点对齐
		baseline:(基线)项目的第一行的文字的基线对齐
		stretch:(拉伸)默认值,如果项目未设置高度或设为 auto ,则将占满整个容器的高度。

后代选择器:用空格隔开每一层
交集选择器: 例:p.prap : 代表既是 p 标签 ,本身又是 prap 类
	#paras.shi{}  是错误的, 因为 ID 是唯一的
并集选择器:用逗号分隔开:例 : div,p,img{}
属性的继承:可以简化css 代码
		盒子属性不可以继承,文字属性可以继承
	文字属性	:font-系列,color,line-系列,text-系列
	盒子属性:width,height,background-系列,border-系列,浮动,定位
css 层叠性:
权重的比较:id选择器 > 类选择器 > 标签选择器
层叠性: 不同的选择器权重不一样,权重高的会层叠掉权重低的属性。
        而在浏览器的控制台中可以看到被层叠掉的属性会被中间画线。
       (一个 id = 255)
 选中的样式属性看权重:
比较权重:先比较 id  选择器的 数量, 多的权重高。
        若id 数量相同,就再比较 类 选择器的数量,多的权重高,
        若 id 和 类 的数量的相同,就比较标签的数量,数量多的权重高,
        若 id 和 类 和标签的数量相同, 就看谁写在后面,就显示谁的样式

没有选中的元素的 可继承的 样式属性看继承性:
	都没有选中的元素,继承样式看html结构中的距离远近, 遵循就近原则, 最终继承的样式是距离最近的属性。
	若距离相同,就再回归到比较权重。

《2》!important 加载属性值后面,分号前面。
     选中元素时, !important 的权重最高。
     没选中元素,不影响就近原则
     !important 只能提高一个属性的权重,不是选择器中的所有属性。

文字属性:

 color : 文字颜色:
 属性值: 单词表示法,十六进制表示法, RGB 表示法。
 font-family :字体
 font-size: 字号。
 font-style; 文字是否倾斜:
 font-weight: 文字加粗。
 lien-height: 行高。一行文字实际占有的高度,在行高内文字垂直居中。
font 复合属性: italic bold 20px/200% “Microsoft yahei”

文本控制属性: text-align 
			  text-indent:
			  text-decoration:去掉 a 标签的 下划线


盒模型:
width: 内容宽
height:内容高
盒子实际的高为 : 内容 高 +  上下内边距 + 上下边框 
盒子实际的宽为: 内容宽 + 左右内边距 + 左右边框 
背景颜色渲染区域: 边框之内。

border: 用于制作表格。
border-collapse;塌陷 默认值为: separate:线会分开。	
				:collapse: 线会合并。	

盒模型扩展:
1.清除默认样式:
	例如: <body> , <ul> ,<p> , <dl>,<ol>  有默认的 padding 和 margin 值。
           列表有 小圆点。  <a> 有 默认的下划线。都不是我们想要的。
写网页第一步就是清除默认样式。
			用通配符选择器。因为效率低,现在可以用。实际工作用并集选择器,

宽度剩余法:在写网页时,左内边距是固定的,右侧根据内容的多少不固定右内边距,
			直接给盒子一个足够的宽度,右侧自动剩余。
height: 写网页,一般新闻页面,内容是活的,所以高度 应设为不固定,让内容自动向下撑开盒子。
margin塌陷: 就是	相邻的盒子外边距会合并。以大的为准,小的margin 会塌陷在 大的 margin 里。	

用户界面属性:box-sizing:  默认值为 content-box,表示padding和border 
						不被包含在 定义的width和 height 中。
             值如果为:border-box, 表示padding 和border 被包含在 定义的 width 和 height 中。注意:  当 对称两边padding 和加上 对称两边border和大于 width 或者 height
             时, width 或者是 height  将失去作用,以 padding 和 border 为准。  

不可以用儿子去踹父亲:例如有两个 嵌套型 的 Div ,注意:单独指垂直方向。
			想让儿子的颜色区域与父亲的颜色区域上方之间有一个间隔,
			不可以直接 设置儿子的 margin-top 属性。这样会带着父亲距离 body 之间多少距离。
			解决方法为; 1.设置父亲 border 属性。强制给父亲限制区域。
					2.也是推荐的。 用父亲的 padding属性 去挤开 儿子
父子盒模型: 子盒子的最大占有宽度不能超过父盒子 的内容 区域宽,
			当子盒子有内边距和边框时,需要注意子盒子的宽度內减。
      不给盒子设置高度,盒子的高度根据内容自适应,刚好包裹内容。
居中: 1.单行文本的垂直居中,(行高等于盒子的高度)
	  2.文本水平居中, text-align:center.
	  3.多行文本的垂直居中。(不给盒子设置高度,给盒子设置上下 padding 来挤兑内容使其居中。)

盒子水平居中: 设置外边距 margin: 0 auto;  auto:自动左右撑开相同大小的距离。
盒子垂直居中: 这时设置 auto 就不管用了。违反了不可用儿子踹父亲的原则 。
			  而这时就要用父亲的 padding 属性来挤兑儿子使其垂直方向居中。

标准文档流: 从上到下, 从左到右, 前米的文字变大或者图片变大,光标会下移。
从微观上说:1.文本类内容有空白折叠现象。(多个空格为一个,)
			2.文本类的内容高矮不齐,底部对齐,
			3.文本类内容超过盒子的宽度会自动换行。

块级标签和行内标签。
块级标签。 所有的容器级标签都是块级标签。 p 标签也是 块级标签。
	h1,h2 --h6 ,ol,ul,li,div
行内标签:所有的文本类标签都是行内标签。(p标签除外)
    span, 表单元素, a, b, i, u 

块级元素特点:
		1.独占一行,
		2.块级元素可以设置宽高,
		3.块级元素不设置 宽高, 会显示父盒子的宽度的 100%
行内元素的特点:
		1.行内元素不独占一行, 会并排显示。
		2.行内元素不能设置宽高,
		3.行内元素的宽是由 内容 决定的。
块级元素和行内元素的转换:属性:display 值:none,block,inline, inline-block.

标准文档流不能制作精美的网页, 只有脱离标准文档流,(脱标),才可以制作我们想要的网页。
 		脱标的方法: 浮动, 绝对定位, 固定定位,

浮动:让元素并排显示还能设置 宽和高。
		 float: 漂浮 属性: left, right.
		 浮动的元素会贴父盒子边显示。

浮动的性质:
		1.浮动的元素脱离标准文档流,不再区分块级元素和行内元素,
            可以让元素并排一行显示,还可设置宽高。
		2.浮动的元素没有 margin  塌陷
		3.浮动的元素依次贴边显示, 贴边有方向之分,看浮动的方向。
				如果前一个盒子剩余的宽度不够,会再向前一个盒子的贴边。
				不会钻盒子。
				小盒子
				双向贴边。02
		4.浮动的元素让出标准流的位置。
				两个同级的元素, 前一个元素左浮动, 后 一个元素不浮动,浮动的元素让出标准流的位置。
				视觉上有一个压盖效果,(实际工作中我们不会用浮动做压盖效果,用定位做压盖效果较好。)

子围效果: 两个同级的元素,前面的盒子左浮动,后面的盒子不浮动, 不浮动的元素里面的文字
		不会被压盖住,会在浮动的元素的周围显示。

清除浮动:
		1.浮动的影响:
			1.浮动的元素不能撑高 父 盒子
			2.浮动的元素会影响 相同高度的行中的 后面的 浮动的 元素。
清除浮动的办法:
		1.给父盒子加 高度。没有解决高度自适应。
		2.给  被遭受  影响的父盒子添加 clear 属性:
			属性值: left (清除左浮动元素的影响)
			        right(清除右浮动元素的影响)
			        both(清除左右浮动元素的影响)
	    3.隔墙法:
	    		外墙法:给两个大盒子之间加一堵清除了浮动的墙,有高度的墙,没有解决高度自适应,
	            内墙法: 在两个大盒子的最底部加了一堵清除了浮动的墙,解决了高度自适应。
	                      但在实际工作中也不推荐使用。因为了增加了很多无意义的标签,影响了
	                      代码的加载速度以及可读性。
	    4.添加 overflow 属性(推荐):溢出隐藏,
	           属性值:auto (默认的) ,盒子有高度若不设置此属性,文字将自动溢出显示。
	                        margin显示,当文字超出盒子高度时,将自动添加垂直滚动条。
                	  hidden: 当文字超出盒子高度时,文字自动隐藏,(隐藏的是border 边框外的文字)
                  给父盒子添加此属性 ,也可起到清除浮动的作用,并且可使父盒子 的高度自适应。
 overflow: hidden 的作用:
      1.强制我们的父盒子去检测他里面的子盒子的高度,让父盒子的高度等于子盒子的高度,
          (以后只要看到让盒子高度自适应,就加 overflow:hidden )
      2.强制我们的父盒子去检测他里面的浮动的元素, 管住它里面的浮动的元素不让他去影响别人。
         (voerflow: hidden; 是我们解决浮动存在的问题的最好也是最简单的办法)
       在实际工作中,
               我们使用 overflow : hidden 解决浮动存在的问题:
               可以在几个大的板块之间加一堵墙:分隔区域 
      3.特别注意 此属性和 盒子的 height 配合使用。如果父盒子有overflow:hidden属性
                并且有 height 属性且 子盒子的高度超过了父盒子的高度, 则超过的隐藏。

 a标签的 4 个伪类顺序不能颠倒,(a 伪类的权重相同,顺序颠倒了后面的会层叠掉前面的),
      但是可以不写全,伪类可以从  a 标签 继承样式, 一般我们会把 盒子属性给 a 标签,
      书写, 文字颜色 和 背景颜色 给伪类 书写。

a 标签 不能从祖先 继承文字颜色和下划线, 需要 单独设置。

背景:background :复合属性
1.background-color:背景颜色
     十六进制, 单词表示法, rgb 表示法, rgba 表示法:a 表示 透明度
     背景颜色的渲染位置: border 以内,
2.background-image:背景图片
      渲染位置 : border 以内
      background-image:url("wang/23.png");
	注意: 背景颜色 和 背景图片可以同时设置。
3.background-repeat:重复模式
      属性值:
           repeat:重复 (默认值)
           no-repeat :不重复
           repeat-X: 在水平方向 (X轴)重复
           repeat-y: 在 垂直方向 (y轴)重复
     repeat-X:的应用:
          制作渐变背景色,切 1px 宽度的图片,利用repeat-X进行重复。
4.background-position:背景图片 在整个背景图的位置。
   像素表示法:(X的偏移,Y的偏移),
           可以实现精灵图技术(Css sprite)。 接是 X 和 Y 的偏移是 负值 。
	       精灵图技术:
				 精灵图技术:我们知道 任何一张图片都会发起一次 http  请求, 
				 我们的页面有很多小图片或者小图标,都会发起 http 请求。       
		         这样就会降低网页的加载速度,这时我们可以把这些小图标
		         或者是小图片放在一张 图片上,利用宽度和高度 以及 背景位置得到 
		         任意的 小图片,这就是精灵图技术。 
  单词表示法:(X轴,Y轴):图片在容器中居于的位置。
              X轴:left, right, center
              Y轴:top, bottom , center
		   应用一:大背景居中
		   应用二:通栏大 banner(广告) 居中。	 
    百分比表示法:拿水平百分比来说,是指图片的左边缘与容器的左边框之间的距离在
             容器的宽度减去图片的宽度之差中所占的百分比。
             百分数与像素的转换,
             100%: 指 (大盒子的宽度 -  图片的宽度) * 100%
     居中: background-position:50% 50%;

5.background-attechment: 背景是否 固定。
      属性值:scroll :背景跟随页面滚动(默认的)
             fixed:背景固定(背景不跟随页面滚动)

复合写法: background:blue url(2.png) no-repeat center top fixed;
注意: 其中的位置属性(center top)顺序不能写颠倒

四, 背景应用:
	 1.通常我们logo是用图片显示,但是需要写文字让文字隐藏,值显示图片, 
		    用插入图片实现不了。
		    利用文本首行缩进和 行高 ,超过 a 标签的范围,进行文字隐藏。
		        1.设置文字的 text-indent 过大, 然后 overflow 为 hidden .
		        2.设置文字的line-height 过大,然后设置 overflow 为 hidden.
		     给 h1 内嵌一个 a 标签, 让 h1 的文字隐藏
		     给 h1 甜加 背景图, a 标签 添加文字描述。
	2.用 padding挤出 背景图的位置。

定位(position): 相对定位、绝对定位,固定定位
1.相对定位:  没有脱离文档流(形影分离)
         正值表示以相对自身相反方向移动
         负值表示以相对自身相同方向移动 
		应用:1.微调
		     2.相对定位作为 绝对定位的参考盒子(子绝父相)

2.绝对定位: 脱离文档流:参考最近的已定位的元素
     1. 没有祖先元素参考的参考点。
        1.有 top 的参与的情况,参考点是 页面的左上角(右上角) 
        2.有 bottom 参与的情况, 参考点是首屏的右下角(左下角)
           首屏:用户第一眼见到的屏幕大小。
     2.有祖先元素参考的定位参考点。
          定位参考点是  border  以内。 
          参考的是:距离最近, 同时已定位的祖先元素。
     3.用绝对定位制作压盖效果:
     4.绝对定位的 居中 不能 用 margin: 0 auto ;不起作用。
         第一步: left:50%; 表示: 左边框在相对定位容器中 左右居中
         第二步: margin:-50px; 表示再往回拉自身 全部 宽度的一半。 
	  5.轮播图:
	    呼吸轮播图:
	    滚动轮播图:

 3.固定定位:position:fixed;
		     脱离标准流:参考点为浏览器的四个顶点。
		    四个方向值: left , right , top , bottom 
		   应用: 1. 返回顶部 2. 固定导航栏

 4. Z-index:属性:
    一、默认压盖顺序。
	       1.有定位的元素会压盖住没有压盖住的元素。
	       2.都有定位,html 结构中后面的会压盖住前面的元素
    二、自定义压盖顺序。
       z-index属性值:数字, 没有单位。
         1.只有定位元素可以加 z-index属性, 浮动的元素也不可以加 z-index 属性。

    三、z-index 的应用:
         轮播图:

浏览器的兼容性:
    hack :黑客分类: html hack  和 css hack
 html hack:
    同一套代码 为了让不同的浏览器 的显示相同的效果,需要加 hack 处理浏览器的兼容性问题
      <!--[if lt IE 9]>
      	<h3>你是低版本</h3>
      <![endif]-->
      低版本的浏览器显示:
    其中的参数 : lt ;小于该版本
                 lte:小于或者是等于该版本
                 gt;大于该版本。
                 gte;大于或者是等于该版本
   html hack 表示满足条件能够认识这个 hack 并且渲染此 hack , 而不满足条件
     会认为这个 hack 是注释。 不在页面渲染。               

针对 IE 6 有固定的一个 hack :
  <!--[if IE 6]>
  	<h3>这时 IE 6 浏览器才可以看见</h3>
  <![endif]-->
  表示只能 IE 6 浏览器可以看见里面的内容, 其他浏览器会认为是注释。
 应用: 给 IE 6 添加特殊的一些样式或者 js 表示只有 IE 才可以加载。



posted @ 2019-12-07 15:18  梭梭666  阅读(111)  评论(0)    收藏  举报
返回顶部