一、摘要:

今天在写一个页面,对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. Aborting commit: 'XXXXXXXX'remains in conflict错误

    今天在提交项目文件到本地SVN时提示错误如下: 过期:”global.php“在事务”21-1“, You have to update your working copy first. 运行upda ...

  2. setInterval 函数传参(方法一)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. iOS学习笔记---oc语言第一天

    第一讲 初始类和对象 c语言的超集,允许在oc中使用c语言源代码.编译器兼容c语言程序 具备完善的面向对象特性 包含一个运行时系统 类库丰富 面向对象编程 oop 面向对象语言:c++  java   ...

  4. 为什么静态成员、静态方法中不能用this和super关键字

    1.      在静态方法中是不能使用this预定义对象引用的,即使其后边所操作的也是静态成员也不行. 因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载 ...

  5. 自定义动画方法 animate()

    animate方法的语法结构为: animate(params,speed,callback); 参数说明: (1) params:一个包含样式属性及值的映射,比如{property:'value1' ...

  6. Java获得文件的创建时间(精确到秒)

    jni C/C++ 头文件:MyFileTime.h C/C++ code /* DO NOT EDIT THIS FILE - it is machine generated */#include ...

  7. Spring MVC 通过@Value注解读取.properties配置内容

    第一步:在applicationContext.xml配置: <bean id="configProperties" class="org.springframew ...

  8. JavaWeb学习记录(十九)——jsp标签库

    1.out标签 <%        //局部变量        String name="zsf>&<zz";        pageContext.se ...

  9. JavaWeb学习记录(二十五)——权限管理总结

    一.面向对象思想简化数据库操作 public List<Role> getObjectsByIds(List<AdminRole> adminRoles) {        L ...

  10. yum命令

    1)查询 yum   list #查询所有可用软件包列表 yum search 关键字  #搜索服务器上和关键字相关的包 #对比rpm的查询:rpm  -qa | grep xxx 2)安装 yum ...