一、摘要:

今天在写一个页面,对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. Java NIO UDP DEMO

    今天有人问我Netty的UDP怎么使用,我自己尝试的去写一个Demo,在网上搜索了一下,关于Netty的UDP实现还是很少的,所以,今天写下这篇文章用来记录今天的一个简单Demo实现 不使用Netty ...

  2. JDBC存取二进制文件示例

    PutFile.java import java.io.File; import java.io.FileInputStream; import java.sql.*; public class Pu ...

  3. VMDK镜像迁移到KVM(二)

    KVM has the ability to use VMware's .vmdk disk files directly, as long as the disk is wholly contain ...

  4. #include #import @class 的一些用法区别

    从网上查了一些资料,整理了一下,发现很多都说的比较详尽,下面摘录自网络 说一下#import同class之间的区别 在ios中我们经常会在.h和.m中引入一些类啊等等一般用的是#import来进行声明 ...

  5. iOS学习笔记---C语言第五天

    二维数组   字符串数组   多维数组 二维数组的定义 类型  数组[常量表达式1][常量表达式2]={值1,值2...}; int a[2][3] = {7,8,3,2,8,5}; #import ...

  6. tyvj 1402 dp

    P1402 [NOIP2010]乌龟棋 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2010提高组复赛第二题 描述 小明过生日的时候,爸爸送给他一 ...

  7. eBay_GTC和Relist

    1.销售里面有个GTC 那个可以给你做累计销量,如果累计销量高,能大幅提升你的排名位置也可以用30天的摆放方法,修改里面数量,但是30天结束后relist就不知结果了关于累计销量 google搜索里面 ...

  8. 2层Folder删除问题,父文件夹删不掉

    在此用的是由内向外删除.文件结构是:父文件夹/子文件夹/文件.用的是java1.6的java.io.FIle#deleteFile(); 在删除的过程中,发现,文件删除的时候没有问题,但是在子文件夹删 ...

  9. HTMO DOM部分---小练习;列表之间移动、日期选择、好友选中、滑动效果、滚动条效果、飞入飞出效果。

    一:列表之间数据移动 第一个列表里面有内容,第二个里面没有 实现功能: 点击左侧列表选中一项内容,点击按钮,复制到右侧 点击复制所有按钮,将左侧列表所有数据,复制到右侧 扩展功能:右侧列表实现去重复 ...

  10. JS构造函数详解

    //构造函数 //使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法 //当对象被实例化后,构造函数会立即执行它所包含的任何代码 function myObject(msg) ...