Abd*_*bdu 722 html css vertical-alignment
我有一个div有两个图像和一个h1
.所有这些都需要在div内垂直对齐,彼此相邻.
其中一个图像需要absolute
放在div中.
在所有常见浏览器上工作所需的CSS是什么?
<div id="header">
<img src=".." ></img>
<h1>testing...</h1>
<img src="..."></img>
</div>
Run Code Online (Sandbox Code Playgroud)
Kon*_*lph 872
哇,这个问题很受欢迎.这是基于对vertical-align
房产的误解.这篇优秀的文章解释了它:
vertical-align
Gavin Kistner 理解或"如何(不)垂直居中".
"如何以CSS为中心"是一个很棒的网络工具,它有助于为不同的情况找到必要的CSS居中属性.
简而言之(并防止链接腐烂):
vertical-align: middle
.但是,"context"不是整个父容器的高度,而是它们所在的文本行的高度.jsfiddle示例absolute
,并指定其height
,margin-top
和top
位置.jsfiddle的例子line-height
以填充其高度.根据我的经验,这种方法非常通用.jsfiddle的例子E. *_*ano 149
现在Flexbox支持正在增加,应用于包含元素的CSS将垂直居中包含的项:
.container {
display: flex;
align-items: center;
}
Run Code Online (Sandbox Code Playgroud)
如果您还需要定位Explorer 10和旧的(<4.4)Android浏览器,请使用带前缀的版本:
.container {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-align: center;
-webkit-align-items: center;
-webkit-box-align: center;
align-items: center;
}
Run Code Online (Sandbox Code Playgroud)
小智 109
我使用了这个非常简单的代码:
HTML:
<div class="ext-box">
<div class="int-box">
<h2>Some txt</h2>
<p>bla bla bla</p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
div.ext-box { display: table; width:100%;}
div.int-box { display: table-cell; vertical-align: middle; }
Run Code Online (Sandbox Code Playgroud)
显然,无论你使用a .class
还是an #id
,结果都不会改变.
小智 46
它对我有用:
.vcontainer {
min-height: 10em;
display: table-cell;
vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)
Sam*_*ghe 35
.outer {
display: flex;
align-items: center;
justify-content: center;
}
Run Code Online (Sandbox Code Playgroud)
abe*_*ier 21
我朋友的一项技巧:
HTML:
<div style="height:100px; border:1px solid;">
<p style="border:1px dotted;">I'm vertically centered.</p>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
div:before {content:" "; display:inline-block; height:100%; vertical-align:middle;}
div p {display:inline-block;}
Run Code Online (Sandbox Code Playgroud)
DEMO在这里
Bla*_*nic 18
要将块元素定位到中心(在IE9及以上版本中工作),需要一个包装器div
:
.vcontainer {
position: relative;
top: 50%;
transform: translateY(-50%);
-webkit-transform: translateY(-50%);
}
Run Code Online (Sandbox Code Playgroud)
Sho*_*og9 16
所有这些都需要在div中垂直对齐
对齐怎么样?图像的顶部与文本顶部对齐?
其中一个图像需要在div中绝对定位.
相对于DIV绝对定位?也许你可以勾勒出你正在寻找的东西......?
fd描述了绝对定位的步骤,以及调整H1
元素的显示,使图像与其内嵌.为此,我将添加您可以使用vertical-align
样式对齐图像:
#header h1 { display: inline; }
#header img { vertical-align: middle; }
Run Code Online (Sandbox Code Playgroud)
...这会将标题和图像放在一起,顶边对齐.存在其他对齐选项; 看文档.您可能还会发现删除DIV并在H1
元素内移动图像是有益的- 这为容器提供了语义值,并且无需调整以下内容的显示H1
:
<h1 id=header">
<img src=".." ></img>
testing...
<img src="..."></img>
</h1>
Run Code Online (Sandbox Code Playgroud)
小智 15
使用这个公式,它将始终没有裂缝:
#outer {height: 400px; overflow: hidden; position: relative;}
#outer[id] {display: table; position: static;}
#middle {position: absolute; top: 50%;} /* For explorer only*/
#middle[id] {display: table-cell; vertical-align: middle; width: 100%;}
#inner {position: relative; top: -50%} /* For explorer only */
/* Optional: #inner[id] {position: static;} */
Run Code Online (Sandbox Code Playgroud)
<div id="outer">
<div id="middle">
<div id="inner">
any text
any height
any content, for example generated from DB
everything is vertically centered
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
Sha*_*bob 12
几乎所有方法都需要指定高度,但通常我们没有任何高度.
所以这里有一个CSS3 3线技巧,不需要知道高度.
.element {
position: relative;
top: 50%;
transform: translateY(-50%);
}
Run Code Online (Sandbox Code Playgroud)
甚至在IE9中也支持它.
及其供应商前缀:
.element {
position: relative;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
Run Code Online (Sandbox Code Playgroud)
资料来源:http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/
joa*_*16v 10
我的诀窍是在div中放入一个包含1行和1列的表,设置100%的宽度和高度,以及属性vertical-align:middle.
<div>
<table style="width:100%; height:100%;">
<tr>
<td style="vertical-align:middle;">
BUTTON TEXT
</td>
</tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
小提琴:http: //jsfiddle.net/joan16v/sbqjnn9q/
用于垂直对齐: d-flex align-items-center
用于水平对齐: d-flex justify-content-center
.container {
height: 180px;
width:100%;
}
Run Code Online (Sandbox Code Playgroud)
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
rel="stylesheet"/>
<div class="d-flex align-items-center justify-content-center bg-info container">
<div class="bg-light p-2">I am in Center</div>
</div>
Run Code Online (Sandbox Code Playgroud)
.container {
display: flex;
align-items: center;
justify-content: center;
background-color: #17a2b8;
height: 180px;
width:100%;
}
.child {
background-color: #f8f9fa;
padding: 0.5rem;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="child">I am in Center</div>
</div>
Run Code Online (Sandbox Code Playgroud)
使用display flex,首先需要包装要对齐的项目的容器:
<div class="outdiv">
<div class="indiv">
<span>test1</span>
<span>test2</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
然后应用以下 CSS 内容来包装我的示例中的div或outdiv :
<div class="outdiv">
<div class="indiv">
<span>test1</span>
<span>test2</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
/* First way */
.parent1 {
background: darkcyan;
width: 200px;
height: 200px;
position: relative;
}
.child1 {
background: white;
height: 30px;
width: 30px;
position: absolute;
top: 50%;
left: 50%;
margin: -15px;
}
/* Second way */
.parent2 {
display: flex;
justify-content: center;
align-items: center;
background: darkcyan;
height: 200px;
width: 200px;
}
.child2 {
background: white;
height: 30px;
width: 30px;
}
/* Third way */
.parent3 {
position: relative;
height: 200px;
width: 200px;
background: darkcyan;
}
.child3 {
background: white;
height: 30px;
width: 30px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent1">
<div class="child1"></div>
</div>
<hr />
<div class="parent2">
<div class="child2"></div>
</div>
<hr />
<div class="parent3">
<div class="child3"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
使用CSS垂直居中,您可以让外部容器像表格一样,而内容像表格单元格一样。在这种格式中,您的对象将保持居中。:)
我在 JSFiddle 中嵌套了多个对象作为示例,但核心思想是这样的:
超文本标记语言
<div class="circle">
<div class="content">
Some text
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
<div class="circle">
<div class="content">
Some text
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
多个对象示例:
超文本标记语言
<div class="container">
<div class="content">
<div class="centerhoriz">
<div class="circle">
<div class="content">
Some text
</div><!-- content -->
</div><!-- circle -->
<div class="square">
<div class="content">
<div id="smallcircle"></div>
</div><!-- content -->
</div><!-- square -->
</div><!-- center-horiz -->
</div><!-- content -->
</div><!-- container -->
Run Code Online (Sandbox Code Playgroud)
CSS
.circle {
/* Act as a table so we can center vertically its child */
display: table;
/* Set dimensions */
height: 200px;
width: 200px;
/* Horizontal center text */
text-align: center;
/* Create a red circle */
border-radius: 100%;
background: red;
}
.content {
/* Act as a table cell */
display: table-cell;
/* And now we can vertically center! */
vertical-align: middle;
/* Some basic markup */
font-size: 30px;
font-weight: bold;
color: white;
}
Run Code Online (Sandbox Code Playgroud)
结果
https://jsfiddle.net/martjemeyer/ybs032uc/1/
归档时间: |
|
查看次数: |
1261898 次 |
最近记录: |