您的位置:首页 > Web前端 > CSS

CSS学习笔记:3 布局

2017-04-15 16:43 417 查看

绝对定位

属性:position

值: absolute

设置了绝对定位的元素,相当于该元素被从原文档中删除了

绝对定位文字如果不是在绝对定位的div中,是以body为基础移动的。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>前端练习</title>
</head>

<body>

<style>
p.abs{
position: absolute;
left: 150px;
top: 75px;
}
</style>

<p >正常文字1</p>
<p >正常文字2</p>
<p class="abs" >绝对定位的文字3</p>
<p >正常文字4</p>
<p >正常文字5</p>

</body>
</html>




绝对定位的块级元素与绝对定位的文字

绝对定位的文字,如果在块级元素内部,以块级元素为基准。

<style>
p.abs{
position: absolute;
left: 0px;
top: 50px;
}
.absdiv{
position: absolute;
left: 150px;
top: 100px;
width:215px;
border: 1px solid blue;
}
</style>

<div>
<p >正常文字a</p>
<p >正常文字b</p>
<p >正常文字c</p>
<p >正常文字d</p>
<p >正常文字e</p>
<p >正常文字f</p>
<p >正常文字g</p>
</div>

<div class="absdiv">
这是一个定位了的div
<p class="abs" >绝对定位的文字</p>
</div>




注:”绝对定位的文字” 这个p 的父容器div,并没有定位。 所以它的”最近的一个定位了的父容器” 即body

<style>
p.abs{
position: absolute;
left: 100px;
top: 50px;
}
</style>

<div>
<p >正常文字a</p>
<p >正常文字b</p>
<p >正常文字c</p>
<p >正常文字d</p>
</div>

<div >
这是一个div
<p class="abs" >绝对定位的文字</p>
</div>




z-index 覆盖问题

通过绝对定位可以把一个元素放在另一个元素上,这样位置就重复了。

z-index属性, 当z-index的值越大,就表示放上面,z-index:越小就表示放下面。

<style>
img#i1{
position: absolute;
left: 60px;
top: 20px;
z-index:1;
}

img#i2{
position: absolute;
left: 60px;
top: 120px;
z-index:-1;
}

</style>

<div>
<p >正常文字a</p>
<p >正常文字b</p>
<p >正常文字c</p>
<p >正常文字d</p>
</div>

<img id="i1" src="xxxx.gif" />
<img id="i2" src="xxxx.gif" />


相对定位

相对定位

属性:position

值:relative

相对定位不会将元素从源文档中删除,是在原位置的基础是移动一定距离

<style>
p.r{
position: relative;
left: 100px;
top: 50px;
}
</style>

<p >正常文字a</p>
<p >正常文字b</p>
<p class="r" >相对定位的文字,不在div内</p>
<p >正常文字c</p>
<p >正常文字d</p>




不占用位置的相对位置

<style>
.abs{
position: absolute;
left:50px;
top:100px;
}
p.r{
position: relative;
left: 100px;
top: 50px;
}
</style>

<p >正常文字a</p>
<p >正常文字b</p>
<div class="abs">
<p class="r" >相对定位的文字,在绝对定位的div内</p>
</div>
<p >正常文字c</p>
<p >正常文字d</p>




浮动

文字向右移动

属性:float

值:right

在原来高度基础上,文字向右浮动,让出原来的位置,

<style>
.f{
float:right;
}

</style>

<div >正常文字1</div>
<div >正常文字2</div>
<div class="f">浮动的文字</div>
<div >正常文字4</div>
<div >正常文字5</div>




文字向左浮动

属性:float

值:left



文字围绕图片

在块级元素div中,设置图片浮动来实现

<style>
.f{
float:left;
}

div{
width:320px;
}
</style>

<div >
<img src="file://C:/Users/Administrator/Desktop/ss.png"/>

<p>  当图片不浮动时,文字就会换行出现在下面
当图片不浮动时,文字就会换行出现在下面
当图片不浮动时,文字就会换行出现在下面
当图片不浮动时,文字就会换行出现在下面
当图片不浮动时,文字就会换行出现在下面
当图片不浮动时,文字就会换行出现在下面
</p>
</div>

<div >
<img  class="f" src="file://C:/Users/Administrator/Desktop/ss.png"/>

<p>
当图片浮动时,文字围绕着图片
当图片浮动时,文字围绕着图片
当图片浮动时,文字围绕着图片
当图片浮动时,文字围绕着图片
当图片浮动时,文字围绕着图片
</p>
</div>




文字不环绕图片

不允许出现浮动元素

属性:clear

值:left(左侧不能环绕)、right(右侧…)、both(两侧都不可环绕)、none(可以环绕)

<style>
.f{
float:right;
}

div{
width:320px;
}

.clearp{
clear:right;
}

</style>

<div >
<img class="f" src="file://C:/Users/Administrator/Desktop/ss.png"/>

<p class="clearp">
当图片浮动时,文字却不想围绕图片
当图片浮动时,文字却不想围绕图片
当图片浮动时,文字却不想围绕图片
当图片浮动时,文字却不想围绕图片
</p>
</div>




块级元素div的水平排列

默认的div排列是会换行的

如果使用float就可以达到水平排列的效果,通常会用在菜单,导航栏等地方

如果超出了父容器,还会有自动换行的效果

<style>
div#floatingDiv{
width:100px;
}
div#floatingDiv div{
float:left;
}
</style>
默认的div排列是会换行的

<div>
菜单1
</div>
<div>
菜单2
</div>
<div>
菜单3
</div>

--------分隔线--------

<div id="floatingDiv">
<div>
菜单1
</div>
<div>
菜单2
</div>
<div>
菜单3
</div>
<div>
菜单4
</div>

</div>




显示方式

隐藏

display:none; 使得被选择的元素隐藏,并且不占用原来的位置

visibility:hidden; 隐藏元素,元素继续占用原空间。

http://blog.csdn.net/lizhongping00/article/details/70170167#t20

块级

display:block; 表示块级元素

块级元素会自动在前面和后面加上换行,并且在其上的width和height也能够生效

div默认是块级元素

span默认是内联元素(不会有换行,width和height也不会生效)

<style>
div,span{
border: 1px solid lightgray;
margin:10px;
width:200px;
height:100px;
}

.d{
display:block;
}
</style>

<div>普通的div块</div>
<span>这是普通span</span> <span>这是普通span</span> <span>这是普通span</span>
<span class="d">这是span,被改造成了块级元素</span>




内联

display:inline 内联元素

内联元素前后没有换行,并且在其上的width和height也无效。 其大小由其中的内容决定

<style>
div{
border: 1px solid lightgray;
margin:10px;
width:200px;
height:100px;
}

.d{
display:inline;
}
</style>

<div>普通的div块</div>
<div class="d">这是div,被改造成了内联元素</div>




内联–块级 结合

内联元素不换行,且不能指定大小(宽度和高度)

块级元素能指定大小,换行。

元素处于同一行,同时能指定大小

属性:display

值:inline-block

<style>
span{
display:inline-block;
margin:10px;
width:100px;
}
</style>
<span>路飞</span>
<span>艾斯</span>
<span>萨博</span>




其它显示方式

list-item:显示为列表

table:显示为表格

inline-table:显示为前后无换行的表格

table-cell:显示为单元格

水平居中

内容居中

设置内容居中有两种方式:

1 align=”center” 属性

2 style=”text-align” 样式

<style>
div{
border:1px solid lightgray;
margin:10px;
}
</style>
<div align="center">
通过设置属性align="center" 居中的内容
</div>

<div  style="text-align:center">
通过样式style="text-align:center" 居中的内容
</div>




元素居中

块级元素div使用auto样式居中

内联元素span放入到块级元素中居中

<style>
div{
border: solid 1px lightgray;
margin: 10px;
}
span{
border: solid 1px lightskyblue;
}
</style>
<div> 默认情况下div会占用100%的宽度,所以无法观察元素是否居中</div>

<div style="width:300px;margin:0">
设置本div的宽度,然后再使用样式 margin: 0,未设置auto</div>

<div style="width:300px;margin:0 auto">
设置本div的宽度,然后再使用样式 margin: 0 auto来使得元素居中</div>

<br>
<span style="width:300px;margin:0 auto">
span 是内联元素,无法设置宽度,所以不能通过margin:0 auto居中</span>

<div style="text-align:center">
<span>span的居中可以通过放置在div中,然后让div text-align实现居中</span>
</div>




垂直居中

line-weight方式

单行垂直居中

<style>
#d {
line-height: 100px;
}
div{
border:solid 1px lightskyblue;
}
</style>

<div id="d">line-height 适合单独一行垂直居中</div>


内边距方式

<style>
#d {
padding: 30 0;
}
div{
border:solid 1px lightskyblue;
}
</style>

<div id="d">设置内边距的方法来实现多行数据的垂直居中效果</div>


table方式

首先通过display:table-cell; 把div用单元格的形式显示,然后借用单元格的垂直居中 vertical-align:middle;来达到效果。

<style>
#d {
display: table-cell;
vertical-align: middle;
height:200px;
}

div{
border:solid 1px lightskyblue;
}
</style>

<div id="d">
<img src="file://C:/Users/Administrator/Desktop/ss.png"/>
</div>




左侧固定

左侧固定宽度通过浮动float来实现。

<style>
.left{
width:200px;
float:left;
backgrount-color:pink;
}
.right{
overflow:hidden;
background-color:lightskyblue;
}
</style>
<div class="left">左侧固定宽度</div>
<div class="right">右侧自动填满</div>


左右固定

<style>
.left{
width:200px;
float:left;
background-color:lightskyblue;
}
.right{
width:200px;
float:right;
background-color:lightskyblue;
}
.center{
margin:0 200px;
text-align:center;
background-color:lightgray;
}
</style>
<div class="left">左侧固定宽度</div>
<div class="right">右侧固定宽带</div>
<div class="center">中间自适应</div>




贴在下方

设置下面的块bottom为0,并且绝对定位。

<style>
#div1
{
position: relative;
height: 100px;
width: 30%;
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>




块之间的空格

内联元素span不同的写法产生空格

<style>
span{
border-bottom:2px solid blue;
}
</style>

<div class="continue">
<span>连续的span</span><span>连续的span</span><span>连续的span</span><span>连续的span</span>
</div>
<div class="nocontinue">
<span>有换行的span</span>
<span>有换行的span</span>
<span>有换行的span</span>
</div>




使用浮动解决空格问题

<style>
div.nocontinue span{
border-bottom:2px solid lightgray;
float:left;
}
</style>

<div class="nocontinue">
<span>有换行的span</span>
<span>有换行的span</span>
<span>有换行的span</span>
</div>

<div style="clear:both"></div>

<div>后续的内容</div>


<div style="clear:both"></div>
用于使得后续的元素,不会和这些span重复在一起

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: