CSS布局

绝对定位

属性:position      属性值:absolute   

1)一个元素被设置为绝对定位,则它被从原来顺序排列的html元素序列中删除(让出自己原来的坑)再基于最近的一个定位了的父容器进行绝对定位(该父容器不要求是绝对定位还是相对定位)。

2)如果没有父容器或者包括该元素的所有层次的父容器都没有定位,则该元素基于body进行定位。

3)显然绝对定位可能造成元素之间的重叠。使用  z-index:-1、2... 决定谁在上谁在下。z-index的值越大,越在上面。

<style>
p.abs{
  position: absolute;
  left: 150px;
  top: 50px;
}
</style>
 
<p >正常文字1</p>
<p >正常文字2</p>
<p class="abs" >绝对定位的文字3</p>
<p >正常文字4</p>
<p >正常文字5</p>

相对定位

属性:position     属性值:relative

相对定位不会把该元素从原文档序列中删除,而是在原文档位置的基础上移动相应距离。(自己移走,但原来的坑还留着

<style>
p.r{
  position: relative;
  left: 150px;
  top: 50px;
} 
</style>
  
<p >正常文字1</p>
<p >正常文字2</p>
<p class="r" >相对定位的文字3</p>
<p >正常文字4</p>
<p >正常文字5</p>

例子

使用相对定位+绝对定位,使得文字3在原来位置的基础上向右平移,但又不占用原来的坑。

<style>
    .d1{
        position: relative;
        left:0px;
        top:0px;
    }
    .d2{
        position:absolute;
        left:150px;
    }
</style>

<p>正常文字1</p>
<p>正常文字2</p>
<div class="d1">
    <div class="d2">
        相对定位文字3
    </div>
</div>
<p>正常文字4</p>
<p>正常文字5</p>
View Code

做法:

1)先用一个div1,用相对定位定在原来位置上(left和top都是0px),但什么内容都不放。

2)在在这个div1内部放一个绝对定位的div2,利用绝对定位使其向右平移。由于绝对定位基于离当前元素最近的定位了的父元素,所以div2的绝对定位基于div1.

3)该方法适用于希望某元素在原来的位置上移动一下,但又不占原来的坑的情况。

浮动

浮动的框可以向设置的浮动方向移动,直到它的外边缘碰到包含框或者另一个浮动框的边框为止。

1)向右浮动:

浮动的文字会让出自己原来的坑,并在原位置的基础上向右浮动;后续的元素补上来,占掉让出的坑。

2)向左浮动:

浮动的文字让出自己原来的坑,并向左浮动直到遇到包含框(其实就是没动);后续的元素“正常文字4”补上来,结果发现浮动文字没有走,于是只能排在其后面,造成了围绕效果。

3)文字环绕图片:

当图片向左浮动时,排在图片下面的文字就会自动围绕再图片周围

4)图片浮动时,禁止文字围绕图片:

对图片使用 clear,clear表示该元素的哪边不允许出现浮动元素。因此给文字设置 clear:left;即表示文字左方不允许出现浮动元素,则文字不会围绕在浮动的图片周围。

显示方式

隐藏:  display:none   

使得被选择的元素隐藏,并且不占用原来的坑

块级:  display:block   

设置为块级,使得元素会自动在前面和后面换行,并且设置在其上的width和height也会生效。div是默认的块级元素

内联:   display:inline

设置为内联,则前后没有换行,内联元素都排在一行,并且它的大小只由内容决定,设置在其上的width和height不起作用。span是默认的内联元素

内联块级:   display:inline-block

设置为内联-块级,则具有内联和块级的双重性质,元素可以由width和height决定大小,并且不换行。

水平居中(内容)

内容居中指的是某个元素内部的内容居中

1)通过div的属性 align=“center” 进行居中

2)通过css  text-align:center 进行居中

水平居中(元素)

元素居中,指的是某html元素(如div)居中

1)div的宽度是默认100%的,此时本身就是居中的。若设置div的宽不到100%,则可通过使用样式 margin:0 auto;使其居中。

2)span是内联元素,无法设置宽度,因此无法通过 margin:0 auto使其居中。但span可以放在div中作为div的内容,然后再设置div的 text-algin 使其居中

overflow属性

overflow属性用于处理内容溢出。比如当div固定宽高,而其内部内容过多而超出div边框的情况。

overflow:visible  溢出的内容会呈现在边框外

overflow:hidden  溢出的内容会被隐藏,没有滚动条

overflow:scroll  溢出内容被隐藏,但可以通过滚动条查看隐藏内容

overflow:auto  由浏览器决定如何显示

固定在左端

使用 float:left;

垂直居中(内容)

1)使用line-height行高(适合单独一行内容的垂直居中)

<style>
#d {
line-height: 100px;
}
div{
  border:solid 1px lightskyblue;
}
</style>
 
<div id="d">line-height 适合单独一行垂直居中</div>

line-height可以大致理解为每行文字所占的高度(包括字本身的高度和字间距空白),所以把line-height设置为div的高度,就可以使得该行文字在div的正中间。

2)内边距方式(适合多行文本)

div {
    padding: 30 0;
}

3) table方式(不仅可以使文本居中,还可以作用于图片)

先用 display:table-cell; 将div用单元格形式显示,再利用html中所学的表格的垂直居中 vertical-align 对图片进行居中

div {
display: table-cell;
vertical-align: middle;
}

左右固定,中间自适应

<style>
 .left{
   width:200px;
   float:left;
   background-color:pink
  }
  .right{
   width:200px;
   float:right;
   background-color:pink
  }
  .center {margin:0 200px;   background-color:lightblue}
</style>
  
<div class="left">左边固定宽度</div>
<div class="right">左边固定宽度</div>
 <div class="center">中间自适应</div>
 
</head>
 
<body>
 
</html>

左右两端用 float 分别浮动在左边和右边

让一个div始终贴在下方

<style>
#div1
        {
            position: relative;
            height: 300px;
            width: 90%;
            background-color: skyblue;
        }
        #div2
        {
            position: absolute;
            bottom: 0;
            height: 30px;
            width: 100%;
            background-color: lightgreen;
        }
    </style>
 
<div id="div1">
    <div id="div2"> 无论蓝色div高度如何变化,绿色div都会贴在下面
    </div>
</div>

先有div1,其定位为相对定位。 然后再div1的内部有div2,将div2的定位设置为绝对定位,bottom为0,则div2的绝对定位基于父元素div1,故紧贴在div1下方

span之间的空格

连着写的几个span之间会出现空格,这时可以在span上设置向左浮动,并在最后一个span上设置clear,禁止后续元素和上面的span重复在一起

posted @ 2019-01-09 17:41  ZHUQW  阅读(173)  评论(0编辑  收藏  举报