首页 > 代码库 > 元素对齐,居中相关
元素对齐,居中相关
对于一个绝对定位的元素,他的水平居中对齐将left和right设为0,margin设为auto
对于一个绝对定位的元素,他的垂直居中对齐将top和bottom设为0,margin设为auto
如果想定位在外部对齐,那么将对应的位置设为0,然后对应的margin设置为负宽度
<style>
.container {
background-color: #ee0000;
width: 500px;
height: 500px;
margin: auto;
position: relative;
}
.container div {
width: 100px;
height: 50px;
background-color: #66ccff;
}
.box1{
position: absolute;
left: 0;
right: 0;
margin: auto;
}
.box2{
position: absolute;
top: 0;
bottom: 0;
margin: auto;
}
.box3 {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
}
.box4{
position: absolute;
left: 0;
margin-left: -100px;
}
</style>
<div class="container">
<div class="box1">box1</div>
<div class="box2">box2</div>
<div class="box3">box3</div>
<div class="box4">box4</div>
</div>
文字的居中对齐相关:
对于文字的换行,将word-wrap设置为break-word 然后word-break设置为截断或者单
词边界截断即可
当然还会有一些问题,在以后的text-wrap可能也会解决一些,现在还没有支持的浏
览器)
(如果不想换行,可以用white-space: nowrap;)
对于文字的居中,一行的情况下非常简单,只要line-height和父元素的height一样
即可
多行一直是一个比较头疼的问题
如果不固定高度也简单,把里面的span变成block,给个paddingtop和bottom顶开他…
…………………
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box1{
width: 100px;
background-color: #66ccff;
margin: auto;
word-break: break-all;
word-wrap: break-word;
}
.box1 span {
display: block;
padding: 50px 0;
}
</style>
</head>
<body>
<div class="container">
<div class="box1"><span>111111111111111111111111111111</span></div>
</div>
</body>
</html>
以下为父元素固定高度的垂直居中:
如果参考表格的话,那还是有解决方法的.但是并不是谁都是表格,虽然css有
display这个东西,但它的兼容啊= =又是ie……
表格有valign这个东西,而一般的span可没有,在有valign的时候,可以用vertical-
align来对齐
不理ie的话,我们有这种方法
将父元素display:table(word-break: break-all;word-wrap: break-word;否则只是
单行的居中) 行内元素 display:table-cell;vertical-align: middle;
(发现这种方法在firefox下,父元素的在container里的中心的定位炸了,只有水平
居中,没有垂直居中了…………)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.container {
background-color: #ee0000;
width: 500px;
height: 500px;
margin: auto;
position: relative;
}
.container div {
width: 100px;
height: 100px;
background-color: #66ccff;
position: absolute;
top:0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
.box1{
word-break: break-all;
word-wrap: break-word;
display: table;
}
.box1 span {
display: table-cell;
vertical-align: middle;
}
</style>
</head>
<body>
<div class="container">
<div class="box1"><span>111111111111111111111111111111</span></div>
</div>
</body>
</html>
加一个小元素的方法
这种方法需要在内部加一层div或者p,然后放一个东西占位
margin和padding是消除p本身自带的边距
这是让一个看不见的东西撑起整个高度,然后把一个p设定为中间对齐
其实是p做了垂直居中
规则是p {vertical-align:middle, display: inline-block;}
看不见元素和p同级(显然不是包进去,因为他要撑开空间).vi {width: 0;height:
100%;vertical-align: middle;display: inline-block;}
不能给vi宽度,否则就不能和p一行了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box1 {
width: 100px;
height: 200px;
margin: auto;
background-color: #ee0000;
text-align: center;
}
.box1 p {
margin: 0;
padding: 0;
vertical-align: middle;
display: inline-block;
word-break: keep-all;
word-wrap: break-word;
background-color: #66ccff;
}
.vi {
width: 0;
height: 100%;
vertical-align: middle;
display: inline-block;
}
</style>
</head>
<body>
<div class="middle-box">
<div class="box1">
<p>
<span>11111111111</span>
<span>22212222122</span>
</p>
<i class="vi"></i>
</div>
<i class="visible"></i>
</div>
</body>
</html>
元素对齐,居中相关