博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS 必知的7个知识点
阅读量:4626 次
发布时间:2019-06-09

本文共 3627 字,大约阅读时间需要 12 分钟。

无敌的老公昨天给俺进行了一堂css的培训~~哎,为神马老公啥都知道,我神马都不懂,自愧不如啊~~555

好记性不如烂笔头,遂在此一一总结。本人小菜,从最基础的内容开始。

1、width是个雷

  很多页面要求宽度自适应,那么width设百分比吧,否则块元素很容易变成粘着不走的狗皮膏药

  当没有定义元素宽度时,浏览器撑满整行,实际上执行的是width:auto,宽度自适应。

2、IE6不认识min-height

  解决办法就是_height,有时候明明不需要可变高度,如果喜欢没原则的min-height,那么记得用_height对付下IE6这个屌丝。

3、float和clear

  float和绝对定位都会破坏正常的文档流,正常流自上而下,而float是一个自左而右或者自右而左的流。

  clear仅仅是针对上一个浮动元素而言,如果上面没有元素浮动,那么你要清除啥呢?

  所谓清除浮动,个人认为就是相对于上一个浮动元素,另起一行。

4、position的relative和static的区别

  relative是相对于自己普通流所在位置的定位,而static是文档普通流,即文档流的默认情况。

  一般情况,relative跟随top和left两个值,当然也可以用right和bottom,但切记,一切都是相对于自己的普通流。

  如果将 position 设为 relative , absolute 或 fixed,那么元素会覆盖没有设置 position 属性的元素,姑且把static当没设position吧。

  这说明层级关系中position的权重是较高的。当然如果position有z-index,z-index高的优先,否则,设置了position的比没设的高,

  再然后,如果没设position,则按文档流顺序,位于后面位置的元素会覆盖前面的元素。

5、z-index和overflow

  用z-index 属性设置元素的堆叠顺序。那么拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。

  不过z-index 属性仅在节点的 position 属性为 relative, absolute 或者 fixed 时有用哦。

  当正常流溢出时,可以选择overflow的scroll或者hidden属性。

  什么是溢出?比如父级元素定义的高度是100,子级元素定义的高度是150,这撑不住的50就是溢出。

  所以溢出只出现在子级元素溢出父级元素的情况。一般想解决溢出问题 就只要在父级元素上加一个overflow属性。

  兄弟元素之间按照正常的普通的流走不会出现溢出的情况,但当子级元素relative时候,也会出现覆盖,但这已经脱离了溢出的管辖范围。

      当然父级的overflow对因relative而溢出的子级元素同样有效。

6、IE有bug就找haslayout

  haslayout是IE特有的属性,很多IE神奇的BUG都和haslayout有关,要记住,有些样式会触发haslayout,最常用的是zoom:1

  下列元素默认 hasLayout=true     

 

7、神奇的w3c塌陷

  什么都不说,先看看效果吧

  这是外边距叠加collapsing-margin问题,collapsing不是浏览器bug而是W3C标准哦。请看如下这段:

In CSS, the adjoining margins of two or more boxes (which might or might not be siblings) can combine to form a single margin. Margins that combine this way are said to collapse, and the resulting combined margin is called a collapsed margin.

  在CSS中,两个或多个毗邻(父子元素或兄弟元素)普通流中的块元素垂直方向上的 margin 会发生叠加。这种方式形成的外边距即可称为外边距叠加(collapsed margin)。

  和我一样的菜鸟直接去研究下这篇好文章吧

       

  避免外边距叠加,其实很简单:外边距发生叠加的4个必要条件(2个或多个、毗邻、垂直方向、普通流),破坏任一个即可。

我们主要来谈一下“毗邻”,只有理解“毗邻”的概念之后,让元素互相之间不毗邻才能元素避免外边距的叠加。

毗邻不仅仅是兄弟元素之间,也有可能在父子元素之间,元素之间的外边距叠加只有在四种情况下才能叫毗邻:

  • 一个元素的margin-top和它的第一个子元素的margin-top
    top margin of a box and top margin of its first in-flow child
  • 普通流中一个元素的margtin-bottom和它的紧邻的兄弟元素的的margin-top
    bottom margin of box and top margin of its next in-flow following sibling
  • 一个元素(height为auto)的margin-bottom和它的最后一个子元素的margin-bottom
    bottom margin of a last in-flow child and bottom margin of its parent if the parent has ‘auto’ computed height
  • 一个没有创建BFC、没有子元素、height为0的元素自身的margin-top和margin-bottom
    top and bottom margins of a box that does not establish a new block formatting context and that has zero computed , zero or ‘auto’ computed , and no in-flow children

以上4种情况之间的元素都可能会发生外边距的折叠(最后一个是元素自身),但还要注意的是以上4种关系形成毗邻还要加一个条件:元素之间没有被非空内容paddingborder 或 clear 分隔开。

 

 

 

转载于:https://www.cnblogs.com/yingzi/archive/2012/04/13/2445667.html

你可能感兴趣的文章
iOS网络编程(三) 异步加载及缓存图片---->SDWebImage
查看>>
Qt qml 模拟iphone slide to unlock 的聚光动画文字效果
查看>>
c++11 std::move() 的使用
查看>>
HDU 4607 Park Visit (DP最长链)
查看>>
实例学架构设计之源起复杂度
查看>>
leetcode- Rotate Array 旋转数组
查看>>
vue vuex
查看>>
POJ 2234 Matches Game 博弈论水题 Nim模型
查看>>
BBC-unit6 session4
查看>>
JS获取节点的兄弟,父级,子级元素的方法(js获取子级获取到换行与空格元素-FF)...
查看>>
ini文件操作
查看>>
Win7 本地打印后台处理程序服务没有运 怎么办
查看>>
php 中array_multisort排序,类似于对数据库中的记录依次按多列进行排序
查看>>
加密算法和MD5等散列算法的区别
查看>>
【python】函数返回值
查看>>
Java基础50题test9—求完数
查看>>
【记忆法】心智绘图
查看>>
Unable to create request (bad url?) 解决方案
查看>>
网络对抗技术_实验三_密码破解技术
查看>>
spoj104 highways 生成树计数(矩阵树定理)
查看>>