Day2

1css 中的 px em rem 长度单位的区别
 px:绝对单位
em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值。
rem:相对单位,可理解为'root em',相对于节点html的字体大小来来计算,CSS3新加属性,chrome/firefox/IE9+支持。
px:特点、
1,IE无法调整那些使用px作为单位的字体大小;
2.国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位;
3.Firefox能够调整px和em,rem,
EM特点:
1.em的值并不是固定的;
2-em会继承父级元素的字体大小。
rem特点:
rem是CSS新增的一个相对单位(root em,),这个单位引起了广泛的关注。区别在于使用rem为元素设定字体大小时,任然是相对大小,但相对的只是HTML根元素。
这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素 就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。

 

2.css3 新增伪类有哪些?并说明
p:first-of-type选择属于其父元素的首个<p>元素的每个<p>元素。
p:last-of-type选择属于其父元素的最后<p>元素每个<p>元素。
p:only-of-type选择属于其父元素唯一的<p>元素的每个<p>元素。
p:only-child选择属于父元素的唯一子元素的每个<p>元素。
p:nth-child(2)选择器属于其父元素的第二个子元素的每个<p>元素。
:enabled,:disabled控制表单控制的禁用状态。
:checked,单选框或复选框被选中。
3-说明 css 选择器优先级顺序及判定标准

CSS Code复制内容到剪贴板

  1. <div id="container" class="wrap_sty">
  2. <p class="pra">这是一个段落</p>
  3. </div>
  4. <style>
  5. #container p { color:red }
  6. div p { color:green }
  7. p { color:yellow }
  8. </style>

可见,如果要作用到一个HTML元素的方法有很多,远远不止这些。那么如果一个元素被应用了很多同样的样式,最终会显式到哪一个样式呢?CSS对于多个选择器的优先性使用了一个叫做特殊性的方式。

CSS特殊性
选择器的特殊性分为4个等级,a b c d,从左到右,越左边的越优先, 如果一个选择器规则有多个相同类型选择器,则+1。
如果是HTML内样式,那么特殊性最优先,a=1
id选择器的特殊性是b,
类选择器、伪类选择器、属性选择器为c
标签选择器、伪元素选择器为d
先来说说一些选择器类型:
1.id选择器

CSS Code复制内容到剪贴板

  1. #myid { ... }  

2.类选择器

CSS Code复制内容到剪贴板

  1. .myclass { ... }  

3.标签选择器

CSS Code复制内容到剪贴板

  1. p { ... }  

4.属性选择器

CSS Code复制内容到剪贴板

  1. [title="mytitle"] { ... }  

由于大多数文档例如W3CSCHOOL可能并没有详细说明,或许不少人认为属性选择器是这样的  div[title="mytitle"] 或#id[title="mytitle"]等等,这样是属性选择器,严格来说,这样的并非单纯的属性选择器,而是由id选择器、标签选择器等等和属性选择共同组成的。
5.伪类选择器

CSS Code复制内容到剪贴板

  1. p:hover { ... }  

常见的伪类选择器有:
链接伪类,:link, :visited,用于锚元素。
动态伪类,:hover,:focus,:active,用于任何选择。
6.伪元素选择器

CSS Code复制内容到剪贴板

  1. p::after { ... }   
  2. p::before { ... }  

伪元素和伪类是完全不同的概念,之所以称之为伪元素,因为其确实可以生成一个虚拟的HTML元素,只不过伪元素无法被DOM获取到。
伪元素的应用有很多,最常见的比如::after清除浮动:

CSS Code复制内容到剪贴板

  1. <ul>   
  2. <li>A</li>   
  3. <li>B</li>   
  4. </ul>   
  5. <style>   
  6. li { float:left }   
  7. ul::after { content: ""; display: block; clear: both }   
  8. </style>  

CSS特殊性示例
下面是一些CSS选择器的特殊性示例:

选择器

特殊性

以10为基数的特殊性

style="color: red"

1, 0, 0, 0

1000

#id {}

0, 1, 0, 0

100

#id #aid

0, 2, 0, 0

200

.sty {}

0, 0, 1, 0

10

.sty p[title=""] {}

0, 0, 2, 0

20

p:hover {}

0, 0, 1, 0

10

p {}

0, 0, 0, 1

1

ul::after {}

0, 0, 0, 1

1

div p {}

0, 0, 0, 2

2


如果两个规则的特殊性相同,那么后定义的会覆盖先定义的。

 

CSS重要性
CSS中还有一种东西可以无视特殊性,那就是!important,使用此标记的CSS属性总是最优先的。

CSS Code复制内容到剪贴板

  1. #id { color: red }   
  2. .class { color: yellow !important }  

第二个样式会优先于第一个样式,即使id选择器的特殊性高于类选择器。
如果两个属性都有 !important 那么由特殊性来决定优先级。

CSS Code复制内容到剪贴板

  1. #id { color: red !important }   
  2. .class { color: yellow !important }  

结果是第一个样式优先于第二个样式。
IE6对 !important 的支持并不完全,在IE6中,如果一个选择器中先定义了 !important 属性,后面又定义了一个同样的不带 !important 的属性,那么!important 会失效。

CSS Code复制内容到剪贴板

  1. div {   
  2. color: yellow !important;     
  3. color: red;   
  4. }  

IE6中,可就没办法黄了,还是见点血吧!
IE6/7还可以在 !important 后面加点料,也不会失去味道,但是建议别这么无聊!

CSS Code复制内容到剪贴板

  1. div {   
  2. color: yellow !important you are dead;   /* IE6/7依然有效 */  

 

4-position 几个属性的作用?

Position的常见四个属性值:

Relativeabsolutefixedstatic。一般都要配合”left”,”top”,”right”以及”bottom”属于使用。

1)Static:

默认位置,设置为static的元素,它始终会处于页面流给予的位置(static元素会忽略,任何topbottomleftright声明)。一般不常用。

2) relative:

位置被设置为realation的元素,可将其移至相对于其正常位置的地方,意思就是如果设置了relation值,那么,它偏移的toprightbottomleft的值都以它原来的位置为基准偏移,而不管其他元素会怎么样。注意relative 移动后的元素在原来的位置任然占据空间。

3absolute

位置设置为absolute的元素,可定位于相对于包含它的元素的指定坐标。意思就是如果它的父容器设置了position属性,并且position的属性值为absolute或者relative,那么就会依据

容器进行偏移,如果其父容器没有设置posiltion属性,那么偏移是以body为依据,注意设置absolute属性的元素在标准中不占位置。

4)FIxed

位置被设置为fixed的元素,可定位于相对于浏览器窗口的指定坐标。不论窗口滚动与否,元素都会留在那个位置。它始终是以body为依据的。注意设置fixed属性的元素在准准流中不占位置。

 

5-绝对定位和固定定位的区别?
1.绝对定位(position:absolute),对于body或相对整体进行位置的挪动
2相对定位(position:relative)想当于人灵魂出窍(不受限制),躯体还在(保持的原位置,只不过躯体隐形了)
3固定定位position:fixed做广告的技术呀(一般都在右下角加图片连接)。滚动条浮动,但盒子不懂(想当于只有灵魂出来了,不受外界控制)
6浮动的作用和影响

 

标准流:一行一个吧,从左侧边界开始放置

浮动带来一个现象,盒子并排放置->脱离标准流,成为浮动流->不占界面位置

Floatleft/right/none(默认值)

Left:找父元素的左边界停靠

Right:找父元素的右边界停靠

none:保持原有的位置 标准流

每一个并排的盒子身上都要加浮动属性

影响:

 

 

脱离标准流,成为浮动流->不占界面位置--->导致其他盒子向上移动

父盒子的高度塌陷:父盒子高度本来是由子元素撑开的,父元素的高度计算是从内容的高度得来的,现在由于浮动元素不占位置,所以子元素高度无法计算,父盒子的高度就塌陷了。

清除浮动的影响

现象:

  1. 给父盒子定高height

缺点:不实际,实际中就有时候高度就是auto

  1. 给父元素加overflowhidden属性

触发BFC规则()

处于BFC规则的盒子 其外元素不会影响到它,它内部的元素也不会影响其外的盒子

BFC规则说:只要是BFC盒子内部子元素浮动了,则父盒子会计算浮动子元素的高度

缺点:会隐藏掉故意溢出的元素

  1. css中属性 空标签清除浮动的影响
  2. 空标签法 清除浮动影响 放置在所有浮动子元素之后

    清除浮动影响的元素必须是块元素

    缺点:增加了无用(没有用户展示数据)空标签 导致文档树变大,结构沉杂

posted @ 2021-01-28 11:41  景沁同学  阅读(105)  评论(0)    收藏  举报