布局

盒子模型

  1. w3c标准盒子模型
  • Important: When you specifythe width and height properties of an element with CSS, you are just settingthe width and height of the content area.
  • 我们在css中设计一个块级元素的width和height属性时如.box{width :100px; height:100px}时,其中的width 和height仅仅是对content部分设置
  • 总宽度:一个块的总宽度= width + margin(左右) + padding(左右) + border(左右)
  1. IE盒子模型
  • width = content+padding+border
  • 总宽度:一个块的总宽度= width + margin(左右)
  • 注:width已经包含了padding和border值
  1. 怪异模型
  • 什么是怪异模型?
    “部分浏览器在支持W3C标准的同时还保留了原来的解析模式”,怪异模式主要表现在IE内核(Trident)的浏览器。

常见css布局

  1. 左边固定宽度,右边自适应
left:
float: left;
width: 200px;
  1. (单行文本/图片)水平垂直居中
<div class="vertical">content</div>
.vertical{
  height: 100px;
  line-height: 100px;/*值等于元素高度的值*/
  text-align: center;
 }
  1. (多行内容垂直居中)
<div class="columns">
  <div class="item">test</div>
</div>
.item{
  padding-top: 30px;
  padding-bottom: 30px;
}
p.s:给出上下一样的padding
  1. 盒模型实现(块级)水平垂直居中
<div class="wrap">
  <div class="content"></div>
</div>
.wrap{
  margin-left: auto;
  margin-right: auto;
  width: 400px;
  hieght: 400px;
}
.content{
  width: 100px;
  height: 100px;
  padding:(wrapWidth - contentWidth) / 2;
}
  1. 盒模型实现实现水平垂直居中(margin填充)
<div class="wrap">
  <div class="ele"></div>
</div>
.wrap{
  height: 400px;
  width: 100%;
  overflow: hidden;
}
.ele{
  margin-left: auto;
  margin-right: auto;
  margin-top: (wrapHeight - contentHeight) / 2;
  width: 100px;
  hieght: 100px;
}
  1. absolute布局水平垂直居中
  • 原理:利用left:50%将盒子的左边先置于父容器的中点,然后再将盒子往左偏移盒子自身宽度的50%
<div class="wrap">
  <div class="ele margin"></div>
</div>
.wrap {
  position: relative;
  width: 100%;
  height: 200px;
}
.wrap .ele {
  position: absolute;
  left: 50%;
  top: 50%;
}
.wrap .ele.margin {
  width: 160px;
  height: 100px;
  margin-left: -80px;
  margin-top: -50px;
}
  1. absolute+margin:auto实现水平垂直居中
<div class="wrap">
  <div class="ele"></div>
</div>
html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
}
.wrap {
  position: relative;
  width: 100%;
  height: 100%;
}
.wrap .ele {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
  width: 100px;
  height: 100px;
}
  • p.s:left 和 top 的 initial value 非 '0',而是 'auto'。
    原理:如果left、right和width都不为auto,同时margin-left和margin-right都是auto,除非特别情况,它们俩就是相等的

参考文档:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,868评论 1 92
  • 前言 现在,我们被称为前端工程师。然而,早年给我们的称呼却是页面仔。或许是职责越来越大,整体的前端井喷式的发展,使...
    Calvin李阅读 530评论 0 0
  • 1、盒模型的初步认识一个真正的盒子包括:内容宽,内容高,边框,内边距,外边距width:内容宽height:内容高...
    落崖惊风yxy阅读 406评论 0 0
  • 前言 温馨提示:本文较长,图片较多,本来是想写一篇 CSS 布局方式的,但是奈何 CSS 布局方式种类太多并且实现...
    sunshine小小倩阅读 3,205评论 0 59
  • 我们长大后记得的事情对我们的影响大,还是我们年幼在原生家庭不记得的事对我们影响大? 是我们不记得的事情对我们的影响...
    张志鑫阅读 267评论 2 2