CSS定位

作者: 陈先森_1 | 来源:发表于2017-06-27 21:38 被阅读141次

           如果你是一位前端从业者,那么你会至少一次的被提问到CSS定位的知识,CSS定位作为CSS盒模型不可或缺的一部分,在一定程度上体现出你对于层级和布局的掌握情况。以下是个人的一些总结,如有不足之处,欢迎指正!


    定位:(相对于正常位置,相对于父元素,相对于另一个元素,相对于浏览器窗口)定义元素框的位置

    CSS定位:为定位提供方法和属性,构建列式布局。如无特殊说明且完全按照HTML中的先后顺序进行排列的即为普通流定位;其次还有浮动、绝对定位。

    CSS定位属性:

    【position】(static、relative、absolute、fixed)(把元素放置在一个静态的、相对的、绝对的、固定的位置中)

    【top right bottom left】  (定位元素的【上、右、下、左】外边距边界与其包含块【上、右、下、左】边界之间的偏移)

    【overflow】(当前元素的内容溢出其区域时发生的事情)

    【clip】(设置形状,元素被剪入该形状中显示)

    【vertical-align】(元素的垂直对齐方式)

    【z-index】(元素的堆叠顺序)


    相对定位:

    position:relative

                    相对于原始位置移动,效果如下图所示:

    上图中可以很明确的看出,相对定位,即是相对于他的起点进行垂直和左右移动。本质上来讲,相对定位还是普通流的一种。


    绝对定位:

    position:absolute

                 相对于包含块移动,此处的包含块,可以是该元素框的父元素或者是包含该元素框的另一个元素,如下图所示:

    绝对定位相对于包含块移动,原来的元素所在位置将被删除,根据包含块位置重新生成一个新的位置。

    那么,如果给一个绝对定位的元素同时使用‘top’、'bottom'或者同时使用‘left’、‘right’或者同时使用四个位移属性会产生什么现象呢?


    固定定位

    position:fixed

                 相对于浏览器窗口,并且不会随着滚动条而动。

    CSS浮动

    纵观目前所有的CSS样式布局问题,普通流,分列,大多情况下我们都能按照普通的CSS语法和结构进行布局操作,而有一种操作,word里面较为常用【文字环绕】这种样式非浮动不能解决。故此大多情况并不需要用到浮动,那么,能不用浮动解决的,最好不要用。如果滥用,那么整个页面布局将不可控。

    浮动可以左右移动,直到 外边缘碰到包含框或者另一个浮动的边框为止

    浮动元素不占用空间,可创建出自然流的布局格式

    清除浮动的几种方式:

    1.clear:both

    2.overflow:auto         给父容器设置一个高度

       overflow:hidden(兼容IE6)

                        对父元素添加该样式,可以清除父元素内使用float所产生的浮动,该属性相当于让父级元素紧贴内容,实现清除浮动的效果

    3.直接给父容器设置一个高度(需要计算算算算算算算好高度)

    4.使用after伪类(另一篇文章详细介绍伪类)

    具体事例此处不做列举了,相信大家在平时开发过程中遇到很多。切记,浮动要少用!

    此处附上鑫大神关于CSS浮动的详细介绍,内容比较抽象,有兴趣可以看下,相信会让你对浮动有更深层的理解

    www.zhangxinxu.com/wordpress/2010/01/css-float%E6%B5%AE%E5%8A%A8%E7%9A%84%E6%B7%B1%E5%85%A5%E7%A0%94%E7%A9%B6%E3%80%81%E8%AF%A6%E8%A7%A3%E5%8F%8A%E6%8B%93%E5%B1%95%E4%B8%80/

    www.zhangxinxu.com/wordpress/2010/01/css-float%E6%B5%AE%E5%8A%A8%E7%9A%84%E6%B7%B1%E5%85%A5%E7%A0%94%E7%A9%B6%E3%80%81%E8%AF%A6%E8%A7%A3%E5%8F%8A%E6%8B%93%E5%B1%95%E4%BA%8C/

    相关文章

      网友评论

          本文标题:CSS定位

          本文链接:https://www.haomeiwen.com/subject/lsajcxtx.html