前端博文Web 前端开发

CSS标签分类,盒子模型,层模型

2017-08-12  本文已影响0人  二璇妹妹

CSS属性引申

标签分类

自定义行级元素 display:inline;
自定义块级元素 display:block;
自定义行级块元素 display :inline-block;


css企业开发经验


盒模型问题

我们现在一个盒子有10px的margin、5px的border、10px 20px 30px 40px的padding和100px的content,那么这个盒子的宽高分别是多少呢?
答案:
width = 5 + 40+ 100 + 20+ 5 = 170px;
height = 5 + 10 + 100 + 30 + 5 = 150px;
宽度的计算是:5px的border+40px的padding-left+100px的content+20px的padding-right+5px的border=170px;
高度的计算是: 5px的border+10px的padding-top+100px的content+30px的padding-bottom+5px的border=150px;


层模型

css中元素的层次模型主要是由 position 这个属性来决定的。

position属性:
position的意思是定位,同样这个属性的作用就是给元素施加定位。它一共有四个值,分别是 static、absolute、relative、fixed

默认值:
static是默认的属性,当我们没有写position属性的时候,元素默认的定位就是static定位。

当我们仅仅给元素设置position:relative;并没有设置left、right、top、bottom属性的时候,元素的定位是没有发生任何改变的,因为这个特性,一般在开发中,<span style="color: #ff000">relative都是用作设置参照物的</span>,一个absolute元素要相对于那个元素进行移动,就给那个元素设置relative的定位就可以了。

 <div class=”wrapper”>
       <div class=”box”>
             <div class=”content”></div>
       </div>
 </div>
.wrapper { 
      width: 200px;
      height: 200px;
      background-color: orange;
      margin-top: 100px;
      margin-left: 100px;
}
.box{
      width:100px;
      height: 100px;
      background-color: black;
      margin-left:100px;
}
.content{
      width: 50px;
      height: 50px;
      background-color: yellow;  
}

此时我们在浏览器中看到的样式是这个样子的:



现在我们给content加上定位的样式。

.content{
      position:absolute;
      left: 50px;
      width: 50px;
      height: 50px;
      background-color: yellow;
}

这个时候浏览器中的样式就会发生改变,content那个黄色的小方块会跑到橘黄色的方块外面:


这是因为,当我们给 content设置position:absolute;之后,浏览器在渲染的时候,会先向上找到box这个div,看看这个div有没有定位,因为没有,所以继续向上找wrapper,依然没有,再向上找body,还是没有,所以最后就是相对于浏览器边框定位,这个时候contentleft属性就是相对于浏览器边框左边有50px的距离的意思。

现在我们把content的定位换成relative,浏览器中的结果变成了这个样子:


本来content黄色小方块在黑色方块的左上角,然后relative相对与自身的位置进行定位,这个时候的left属性的意思就是相对于本来在黑色左上角的那个位置向右移动了50px的距离,也就是现在这个黄色小方块所在的位置。
div {
      width: 100px;
      height: 100px;
      position: absolute;
      left: 50%;
      top: 50%;
      margin-left: -50px;
      margin-top: -50px;
      background-color: red;
}

这个div就会在有定位的父级里面水平垂直居中了

上一篇 下一篇

猜你喜欢

热点阅读