一、摘要:

今天在写一个页面,对css中的BFC(块级格式化范围)有了一点体会,今天把遇到的问题和解决方案总结下来,额外还总结一下强大的负外边距的使用心得。

二、总结:

主体部分整体居中显示,主体部分看上去像是三列,实质上只有一列,两边的内容都是放在中间的文本里面,这里就是用了强大的负外边距达到的效果。

html结构:

1.关于负外边距:

因为要保证两边的容器和中间的容器按要求对齐,所以把它们都放在中间的容器里面,然后再浮动,再设置负外边距达到想要的效果:

左边内容显示的css代码:

先让它左浮动,然后再让其向左移动一定的距离;因为只是想让容器向左移一定的距离,采用负外边距,只要知道当前要移动的容器的宽度,一般就很明确的知道了要移动的距离;特别是当我们不能很直观的知道当前容器与最外层的容器的外边距是多少的时候,采用负外边距可以避免复杂的计算。

右边内容显示的css代码:

2.关于BFC:

目前资料参照的是一位博主总结的关于BFC的文章:关于Block Formatting Context--BFC和IE的hasLayout

我遇到的问题:如何让红框中的内容在容器中居中显示(其实也算是如何让div居中的问题,这里关键问题是要居中的div外面还有一个div):

采用position的方式来实现布局,先左右居中:

效果:

加一段css代码,再让它垂直方向也居中:

效果:

采用position定位这个容器原则上是,想让其先在垂直方向偏移父容器的50%,然后再向上移动自己宽度的一般达到居中的效果。

然而在这里子元素的布局完全是影响到了父容器的布局,并不是我们预期达到的效果。

要想让子元素的布局不影响父容器的布局,就需要让子元素和父元素处在不同的环境中。在普通流中的 Box(每一个元素都是一个盒子) 属于一种 formatting context(格式化上下文) ,如果将元素设置成block formatting context(块级格式化上下文)就让元素处在了不同的环境中,BFC它是一个独立容器,这个容器里box的布局,和容器外的毫不相干。

如何将元素设置成BFC容器:

我这里将父容器设置了绝对布局,让其成为BFC的容器,从而布局不受到子元素的影响:

css代码:

效果:

补充:

主要是子元素中的margin-top这个属性值影响到了父容器的布局

css布局实践心得总结的更多相关文章

  1. css布局实践总结(part2)

    一.总结: 在第一篇css布局实践心得总结中总结了通过给元素设置position:absolute的方式让元素处在BFC(块级格式化上下文)的环境中,处在BFC环境中的元素是独立的,它和外面其他元素毫 ...

  2. CSS 布局:40个教程、技巧、例子和最佳实践

    前言: 布局是WEB开发一个重要的课题,进入XHTML/CSS后,使用TABLE布局的方式逐渐淡出,CSS布局以众多优点成为主流,本文将介绍40个基于CSS的web布局的资源和教程.文章的出处在htt ...

  3. 前端开发周报: CSS 布局方式方式与JavaScript数据结构和算法

    前端开发周报:CSS 布局方式与JavaScript动画库 1.常见 CSS 布局方式详见: 一些常见的 CSS 布局方式梳理,涉及 Flex 布局.Grid 布局.圣杯布局.双飞翼布局等.http: ...

  4. [转]基于display:table的CSS布局

    当IE8发布时,它将支持很多新的CSS display属性值,包括与表格相关的属性值:table.table-row和table-cell,它也是最后一款支持这些属性值的主流浏览器.它标志着复杂CSS ...

  5. CSS布局:Float布局过程与老生常谈的三栏布局

    原文见博客主站,欢迎大家去评论. 使用CSS布局网页,那是前端的基本功了,什么两栏布局,三栏布局,那也是前端面试的基本题了.一般来说,可以使用CSSposition属性进行布局,或者使用CSSfloa ...

  6. 转:CSS布局:Float布局过程与老生常谈的三栏布局

    使用CSS布局网页,那是前端的基本功了,什么两栏布局,三栏布局,那也是前端面试的基本题了.一般来说,可以使用CSSposition属性进行布局,或者使用CSSfloat属性布局.前者适合布局首页,因为 ...

  7. html css布局

    这几天有点急于求成了,原来每一门技术都像大海,只有深入其中才发现它比看到的更要深广的多. 虽然忙里偷闲的看了HTML5,NODE.JS,JAVASCRIPT核心等许多东西,但是真正掌握的不足十分之一, ...

  8. DIV+CSS布局-固定页面开度布局

    DIV+CSS布局中主要CSS属性介绍: Float: Float属性是DIV+CSS布局中最基本也是最常用的属性,用于实现多列功能,我们知道<div>标签默认一行只能显示一个,而使用Fl ...

  9. 一览css布局标准

    回顾历史,CSS1于1996.12.17发正式版,它是为辅助HTML的展现效果而生的.1998.5.12,CSS2发正式版.随后发修订版CSS2.1,纠正了CSS2中的一些错误.注意从CSS2起,CS ...

随机推荐

  1. php面向对象之抽像类、接口、final、类常量

    一.抽像类(abstract)        在我们实际开发过程中,有些类并不需要被实例化,如前面学习到的一些父类,主要是让子类来继承,这样可以提高代码复用性语法结构:  代码如下 复制代码   ab ...

  2. 平衡二叉树(Balanced Binary Tree)

    平衡二叉树(Balanced Binary Tree)/AVL树:

  3. Python的类实例属性访问规则

    一般来说,在Python中,类实例属性的访问规则算是比较直观的. 但是,仍然存在一些不是很直观的地方,特别是对C++和Java程序员来说,更是如此. 在这里,我们需要明白以下几个地方: 1.Pytho ...

  4. SAP保存操作记录CDHDR和CDPOS表

    http://blog.sina.com.cn/s/blog_7dce1fac01014yp2.html转自sap的字段和对象的修改都会保存旧值,数据保存在CDHDR和CDPOS表中,提取旧值可以采用 ...

  5. 240. Search a 2D Matrix II

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  6. kafka集群和zookeeper集群的部署,kafka的java代码示例

    来自:http://doc.okbase.net/QING____/archive/19447.html 也可参考: http://blog.csdn.net/21aspnet/article/det ...

  7. HDU 4497 数论+组合数学

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4497 解题思路:将满足条件的一组x,z,y都除以G,得到x‘,y',z',满足条件gcd(x',y' ...

  8. zf2 中 new Express 的用法

    在使用联表查询时,如查联表条件有多个也可以,但是连接条件在zf2中会自动给列加``符号,所以要加像id = 1 这样的,他自动给1加``就无示执行了,这时候可以使用new Express(''),他里 ...

  9. [JSOI2008] 完美的对称

    题目描述 在峰会期间,必须使用许多保镖保卫参加会议的各国代表.代表们除了由他自己的随身保镖保护外,组委会还指派了一些其他的特工和阻击手保护他们.为了使他们的工作卓有成效,使被保卫的人的安全尽可能得到保 ...

  10. PHP内存消耗

    由于变量占用的空间不一样,所以其消耗的内存大小也不一样,在PHP中我们可以通过使用“memory_get_usage”来获取当前PHP消耗的内存.但是根据操作系统.PHP版本以及PHP的运行方式可能输 ...