概览
CSS盒模型,规定了元素框来处理元素的 内容、内边距、边框和外边距的方式
元素部分是指内容部分,也是最实际的内容,包围内容的称之为内边距,内边距外围是边框,边框外围就是外边距;且外边距是透明的,所以并不会阻挡其后的元素
  * {
    margin: 0;
    padding: 0;
  }
  这是在CSS中最常见的初始化CSS的代码,用于覆盖浏览器的默认样式
浏览器兼容性
  大多数浏览器都会按照上面的图示来呈现内容。然而 IE 5 和 6 的呈现却是不正确的。根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding 和 border 值是另外计算的。不幸的是,IE 5.X 和 6 在使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。
虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。
值复制
  值复制是指 margin 的四个方位属性值部分缺省时的自动填充。
  四个值部分缺省,有如下三种情况:
  1 个值,其他 3 个值都由这个值(上外边距)复制得到
      p {margin: 1px;} /* 等价于 1px 1px 1px 1px */ 
  2 个值,第 3 个值(下外边距)由第 1 个值(上外边距)复制得到,第 4 个值(左外边距)由第 2 个值(右外边距)复制得到
      h2 {margin: 0.5em 1em;} /* 等价于 0.5em 1em 0.5em 1em */ 
  3 个值,第 4 个值(左外边距)由第 2 个值(右外边距)复制得到
      h1 {margin: 0.25em 1em 0.5em;} /* 等价于 0.25em 1em 0.5em 1em */ 
  归纳起来就是,上下对应,左右对应,第一个值是 top.
盒模型的基础属性大概就是这些,那么基于盒模型的概念,也延伸出了不少东西,其中我觉得有必要作为一个点需要记录下的应该就是元素居中了。元素居中是在页面中使用最频繁的一种页面元素操作手段,也是面试中经常出现的题目。所以特地整理出来了6种常见的元素剧中方式。
1.基本方案:
给予元素一个宽度并使用margin来做居中处理
  body{ width:960px; margin:0 auto; } 
2.单行文本居中
为文本加上line-height属性后使用vertical-align: middle;
 #parent {
line-height: 200px;
}
#parent img {
vertical-align: middle;
}
3.table元素中的居中

#parent {
display: table;
}
#child {
display: table-cell;
vertical-align: middle;
}

这种情况会在IE6 7下出现一定的bug,解决方案如下

 #child {
display: inline-block;
}
4.元素使用定位进行居中
此类型居中是需要基于父类元素的,需要先设置父类元素相对定位,子类元素需要做到相对于父类进行绝对定位
     #parent {position: relative;}
#child {
position: absolute;
top: 50%;
left: 50%;
height: 30%;
width: 50%;
margin: -15% 0 0 -25%;
}
此类型定位适用于块级嵌套的元素
5.上个方案的升级版
 #parent {
position: relative;
}
#child {
position: absolute;
top:;
bottom:;
left:;
right:;
width: 50%;
height: 30%;
margin: auto;
}
6.对于已浮动的元素的居中处理
 #parent {
height: 250px;
}
#floater {
float: left;
height: 50%;
width: 100%;
margin-bottom: -50px;
}
#child {
clear: both; height: 100px;
}

  前端学习持续进行中,希望通过自己的努力能够让自己成为一个合格的前端工程师吧(神特喵总结→_→...就是不那么菜鸡就好....)

  博客内容为自己收集并整理,非原创。感谢度娘,感谢必应,谷歌翻过去了网速不好,也没找到啥能看得...如有雷同,那肯定就是我整理资料的来源吧,手动滑稽;

  ps.如需转载,请附上本人博客地址http://www.cnblogs.com/azhai-biubiubiu/p/5933562.html

  完结撒花

大前端学习笔记整理【一】CSS盒模型与基于盒模型的6种元素居中方案的更多相关文章

  1. 大前端学习笔记整理【二】CSS视觉格式化模型

    1. 概念 在视觉格式化模型中,文档树中的每个元素都将会根据盒模型产生零到多个盒子.这些盒子的布局由如下因素决定: 盒子的尺寸和类型 定位策略(正常文档流,浮动或者绝对定位) 和文档树中其他元素的关系 ...

  2. 大前端学习笔记整理【七】HTTP协议以及http与https的区别

    前言 还是老样子,新博客开始前总是想先啰嗦几句...HTTP协议其实在当初学习java时老师就有提过...但是...反正就那么过去了... 这段时间公司的项目正好要求做https的转换和迁移,然后自己 ...

  3. 大前端学习笔记整理【四】LESS基础

    第一次接触CSS预编译,然后对比后发现其实less的上手容易度确实比sass高不少,再加上公司项目也是使用的less.所以想想还是根据网上的各种教程,整理出来了一些比较基础的.而且比较能让我们这种初学 ...

  4. 大前端学习笔记整理【五】rem与px换算的计算方式

    前言 这段时间的小项目中算是真正意义上使用了rem来进行移动端的页面布局,项目结束了我反思了一下之前的对于rem的使用...原来我以前对rem用法完全是在搞笑啊!!结合这次这个小项目,我觉得我也有必要 ...

  5. 大前端学习笔记整理【五】关于JavaScript中的关键字——this

    写在前面 工作有那么一段时间了,但是在工作中,发现自己的理论知识还是有所欠缺.特别是在javascript上,很多东西其实自己属于知道要用这个,但是不知道为什么要这么用...这种情况很是尴尬了,所以写 ...

  6. 大前端学习笔记整理【六】this关键字详解

    前言 在上一篇博客里我总结了下辨认this指向的四种方式,但是有师兄抛出一个问题来,我发现那些this的指向并不能说明更复杂的情况,先看下这段代码 var a = { name: 'a', getNa ...

  7. 大前端学习笔记【七】关于CSS再次整理

    如果你在日常工作中使用 CSS,你的主要目标可能会重点围绕着使事情“看起来正确”.如何实现这一点经常是远不如最终结果那么重要.这意味着比起正确的语法和视觉结果来说,我们更少关心 CSS 的工作原理. ...

  8. 前端学习笔记之HTML/CSS 速写神器 Emmet

    HTML/CSS 速写神器:Emmet 在前端开发的过程中,一个最繁琐的工作就是写 HTML.CSS 代码.数量繁多的标签.属性.尖括号.标签闭合等,让前端们甚是苦恼.于是,我向大家推荐 Emmet, ...

  9. 【前端学习笔记】关于CSS通过一个块改变另一个块的样式

    <body><div id="a" style="background:#0F0; height:100px; width:100px;"&g ...

随机推荐

  1. findViewById返回null

    Q:findViewById返回null? A: 代码逻辑错误: 最终,发现错误竟然是在layout文件中把android:id写成了android:name. android:name=" ...

  2. 第三课:sea.js模块加载原理

    模块加载,其实就是把js分成很多个模块,便于开发和维护.因此加载很多js模块的时候,需要动态的加载,以便提高用户体验. 在介绍模块加载库之前,先介绍一个方法. 动态加载js方法: function l ...

  3. SQL 高效分页查询

    declare @page int --页码 declare @pagecount int;--每一页显示的记录数 select * from (select *,row_number() over( ...

  4. js 动态添加行,删除行,并获得select中值赋予 input

    <html> <head>  <title>Ace Test</title>  <script type="text/javascrip ...

  5. win8.1 64位安装DEV C++

    1.首先下载64位版本的DEV C++ http://sourceforge.net/projects/orwelldevcpp/files/Setup%20Releases/ 2.采取默认安装即可, ...

  6. DSP下的#program

    2014年7月22日 最近调试使用TMS320C6713的片子调试SDRAM,中间经过很多波折,这里就不吐槽了. 想将数据或者代码放到SDRAM上一定要用到#pragma .查阅资料后,感觉百度文库的 ...

  7. oracle、mysql新增字段,字段存在则不处理

    oracle: 表名:CHANNEL_TRADE_DETAIL列名:exchange_code declare v_rowcount integer; begin select count(*) in ...

  8. python中的告警处理

    在Python中,遇到异常时,一类是直接抛出异常,exception:另一类直接告警warning. 对于后者,通常是打印一句话.前者则或中断程序执行. 考虑到避免由于告警导致后续的不可预知的错误,可 ...

  9. database link远程链接数据库

    --授权创建.删除dblink GRANT CREATE [PUBLIC] DATABASE LINK,DROP [PUBLIC] DATABASE LINK TO canco; --查看数据库GLO ...

  10. jquery验证

    首先要引用js库 <script src="js/jquery-1.7.2.min.js"></script> jquery验证方式 function ch ...