css布局

css定位:

  谈到布局,首先要谈到css定位,定位是定义某个元素相对于父元素或者其他元素的位置。

首先,要说明一下position属性。它有六个属性值:static、relative、absolute、fixed、sticky和inherit:

  • static(默认):元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分;行内元素则会创建一个或多个行框,置于其父元素中。
  • relative:元素框相对于之前正常文档流中的位置发生偏移,并且原先的位置仍然被占据。发生偏移的时候,可能会覆盖其他元素。
  • absolute:元素框不再占有文档流位置,并且相对于包含块进行偏移(所谓的包含块就是最近一级外层元素position不为static的元素,它的便宜是相对于父元素的偏移)
  • fixed:元素框不再占有文档流位置,并且相对于视窗进行定位
  • sticky:(css3新属性)粘性定位。其实,它就相当于relative和fixed混合。最初会被当作是relative,相对于原来的位置进行偏移;一旦超过一定阈值之后,会被当成fixed定位,相对于视口进行定位。

CSS尺寸定位:

  百分比:相对于父元素大小。

  px:像素大小。

  rem:HTML的font-size的大小。

  em:相对于父元素的font-size,相对比值。

 

CSS盒子模型:

  每个元素,都会形成矩形块,包含:margin(外边距)+border(边框)+padding(内边距)+content(内容),如图所示:

 

  模型分类:

    标准模型:width长度=content长度

    borde-box模型:width长度=border+padding+content总和(设置box-sizing属性为border-box)

元素高度:  

  div高度:

    决定:div内部文档流元素的高度之和决定
    文档流:文档流元素的流动方向
      内联元素:流动方向从左往右 遇到阻碍换行
      块级元素:流动方向从上往下
        横向排布:父元素clearfix 自身元素float:right/left(dispaly:inline-block(极容易出现bug)
  span高度:
    决定:文字大小决定(文字上部到下部距离)--不可定量
    内部分离:word-break属性

脱离文档流:
  方法:

              父元素class属性-clearfix 子元素float:right/left
    position:fixed;(相对视窗定位)
    position:absolute;

布局:

  table布局:最初布局形式

  左右布局:

    实现方式:

      方法一:父元素class属性clearfix 子元素float:left

      方法二:一栏定宽、一栏自适应 float+margin

<body>
  <div class="left">左</div>
  <div class="right">右</div>
</bod.left{  width: 300px;
  height: 600px;
  background: red;
  float: left;
  display: table;
  text-align: center;
  line-height: 600px;
  color: #fff;
}

.right{
  margin-left: 3200px;
  height: 600px;
  background: green;
  text-align: center;
  line-height: 600px;
}


  三栏布局:
    方法1:创立父元素,使用display:flex(css3属性 弹性布局)中间width设置为100%
<div class="wrapper">
    <div class="left">左栏</div>
    <div class="middle">中间</div>
    <div class="right">右栏</div>
</div>
.wrapper{
    display: flex;
}
.left{
    width: 200px;
    height: 300px;
    background: green;
}
.middle{
    width: 100%;
    background: red;
    marign: 0 20px;
}
.right{
    width: 200px;
    height: 3000px;
    background: yellow;
}
    方法2:左右两栏使用position的absolute定位,中间使用margin定位。
    方法3:左右两栏使用float属性,中间使用margin属性撑开。
      缺点:HTML结构不正确。
css居中:
  水平居中:
    方法1:父元素text-align:center。自身元素display:inline-block
    方法2:父元素position:relative。自身元素position:absolute;left:50%;
  垂直居中:
    方法1:父元素display:flex;align-item:center;
    方法2:父元素position:relative;子元素position:absolute;top:50%;transform:translateY(-50%);

伪类:css元素伪属性,便于同类元素分类操作。用":"

 

伪元素:css元素伪元素,便于不增加HTML结构的操作,尤其适用于不规则图形构造。用"::"

posted @ 2018-03-26 21:11  不想吃包子  阅读(117)  评论(0编辑  收藏  举报