css学习1

安稳与你 提交于 2019-12-28 14:36:52

  选择器不多说,个人觉得选择器权重才是选择器的重点,只要知道浏览器在排查一长串选择器的时候,是从后往前排查的。

  eg:div>ul li a em {....} 浏览器看到这一长串,为了节省效率,会从后往前排查,就是从em到div。

   关于我怎么不截图:截的图粘贴不过来,886。

一、关于选择器权重

  有时候你发现自己的样式没有在你的元素上表现出来,除了检查有没有写错选择器,还可以看看是不是优先级的问题。

  1)关于优先级

   !important > 行间样式 >id选择器 > class选择器 | 属性选择器 > 标签选择器 > 通配符选择器

  2)权重 

    优先级是根据内部权重进行总结的。

    

选择器权重
!important  正无穷     
行间样式 1000
id 100
class选择器|属性选择器|伪类选择器 10
标签选择器|伪元素选择器 1
通配符选择器 0

 

      注意:这些权重的值都不是十进制而是256进制

      eg:.wrapper .top .nav ul li #id { }  权重值是:10+10+10+1+1+100 = 131

        如果选出同一个元素的选择器串权重值一样,后面覆盖前面的。

        如果.wrapper .top .nav ul li #id 选出来的元素在行间样式写了样式,那么这个选择器串里的样式会不起作用,而不是覆盖,因为行间样式的权重是1000。

 

二、html元素的分类

  元素分为行级元素、块级元素、行级块元素。

  1)行级元素(inline):

    特点:行级元素的宽高是由内容撑起的,不可通过css设置宽高来改变宽高,并且具有文本的特点。

    常见的行级元素:span、a、strong、em、del

  2)块级元素(block):

    特点:独占整行,可以通过css设置宽高

    常见的块级元素:div、ul、li、ol、p、form、address

  3)行级块元素(inline-block):

    特点:内容决定大小,具有文本的特点,可以设置宽高

    常见的行级块元素:img

  4)css的display属性值:

    你可以通过这个属性改变元素的默认类型。

    比如把 行级元素span变成块级元素。

    inline-block:设置成行级块元素

    block:设置成块级元素

    inline:设置成行级元素

 

 

三、盒模型与层模型

  1)盒模型:

    盒子的组成部分:外边距(margin)+盒子壁(border)+内边距(padding)+内容(width + height)

    margin和padding属性的值都是顺时针的。

    padding:10px 20px 30px 40px (上右下左)

    padding:10px 20px(上下、右左)

    元素的实际宽高:border+padding+内容

    padding在border里面,也就是说,我们的background-color、background-image也会显示到padding上。

    body有个天生的margin:8px。这就是为什么经常有人会设置 *{ margin:0 } 的原因之一。

 

  2)层模型:

    top、left、bottom、right,z-index是配合定位position的。

    z-index 表示层级。

    1)absolute 绝对定位:会脱离原来位置进行定位

      实质是去了更高的层级,原来层级上的元素看不见它了,就会有俩盒子重叠的现象。

      特点:相对于最近有定位的父级进行定位,没有则相对于文档定位。

    2)relative 相对定位:相对于自己原来位置进行定位

      也不再原来层级,但位置保留,

    3)fixed 广告定位:相对于可视区窗口进行定位。

      之所以叫广告定位是因为,经常用来做广告的效果。但是fixed的兼容性不好。

 

 四、两个经典BUG

  1)margin塌陷

    垂直方向上的margin,父子嵌套元素是结合到一起的,取最大的值。

    弥补方案:

     给父级元素加个border-top、让父级元素触发bfc

    注意:没有完美的解决方案,针对需求使用。

  2)margin合并

     兄弟元素水平方向上的margin是累加的

    兄弟元素垂直方向上的margin是合并的

    弥补:把两个兄弟元素或者其中一个放进一个父级里,让父级元素触发bfc

       还有就是用数学方法弥补

 

五、block format context 块级格式化上下文

  正常情况下,盒子的渲染规则都是一样的,可以通过触发bfc让特定的盒子的渲染规则发生改变,这种改变只有一丁点。

  如何触发bfc:

  1)position:absolute

  2)display:inline-block

  3)float:left/right

  4)overflow:hidden

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!