响应式 div 中的绝对垂直和水平居中文本
Absolute vertical and horizontal center text in responsive div
我真的很难弄清楚这个问题 - 我正在尝试在悬停时显示在图像上方的响应式 div 中垂直和水平文本。
这是基本 HTML 和 CSS 结构的 jsfiddle。
Here's an example of what I'm attempting to do.
我尝试了很多不同的 CSS 方法 - 使用 table
(这不起作用,因为我使用 absolute
将文本放在图像上方,transform: translate(-50%, -50%); top: 50%; left: 50%;
抵消了文本,还有其他我现在不记得的。
主要问题是我有两个 "layers" - 文本和下面的图像。为此,我需要使用 absolute
,这会导致 table
选项不起作用。
如果您有任何建议,我将不胜感激。
注意:我使用的图像必须保持 16:9 纵横比。
谢谢!
.work{
display:table;
}
.work a{
position:relative;display:table;
}
.work h1{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%, -50%);
margin:0;
width:80%;
text-align:center;
}
.work img{
width:800px;
height:450px;
display:block;
max-width:100%;
}
发布 css 水平居中代码 and/or 垂直居中纯 css
(改编自我的 responsive.css
脚本)。包括对在线资源的引用。根据需要使用。 注意对于某些情况,您可能需要稍微调整 html 结构以包含包装器(参见评论)
/* center alignment classes */
/* http://www.dev-metal.com/center-div-vertically-horizontally-modern-method-without-fixed-size/ */
.center-vertical-wrapper
{
margin: 0;
padding: 0;
width: 100%;
height: 100%;
display: table;
}
.center-horizontal-wrapper
{
margin: 0;
padding: 0;
display: table-cell;
text-align: center;
vertical-align: middle;
}
.center-h
{
margin-left: auto;
margin-right: auto;
}
.center-contents-h
{
text-align: center;
}
/* http://coding.smashingmagazine.com/2013/08/09/absolute-horizontal-vertical-centering-css/#Height */
.center-absolute /* needs width/height to be set */
{
position: absolute;
bottom: 0;
left: 0;
top: 0;
right: 0;
float:left;
margin: auto;
}
.center-transform /* needs width/height to be set */
{
position: absolute;
margin: auto;
top: 50%; left: 50%;
transform: translate(-50%,-50%);
}
/* http://coding.smashingmagazine.com/2013/05/22/centering-elements-with-flexbox/ */
.center-flexbox
{
display: -webkit-box; /* OLD: Safari, iOS, Android browser, older WebKit browsers. */
display: -moz-box; /* OLD: Firefox (buggy) */
display: -ms-flexbox; /* MID: IE 10 */
display: -webkit-flex; /* NEW, Chrome 21–28, Safari 6.1+ */
display: flex; /* NEW: IE11, Chrome 29+, Opera 12.1+, Firefox 22+ */
align-items: center;
justify-content: center;
margin: 0;
height: 100%;
width: 100% /* needed for Firefox */
}
我得到了一个工作示例:https://jsfiddle.net/v1harbqm/7/
我基于@gopalraju 的fiddle。它在 Safari 中不起作用,但是 display: table;
和向标题添加高度的组合起作用。
编辑:在标题中创建了一个 <span>
以使其可以处理更长的文本。这次使用翻译,看起来 Safari 仍然需要 -webkit- 前缀,所以这可能是最初的问题。
无论如何,这是更新的:https://jsfiddle.net/v1harbqm/13/
我真的很难弄清楚这个问题 - 我正在尝试在悬停时显示在图像上方的响应式 div 中垂直和水平文本。
这是基本 HTML 和 CSS 结构的 jsfiddle。
Here's an example of what I'm attempting to do.
我尝试了很多不同的 CSS 方法 - 使用 table
(这不起作用,因为我使用 absolute
将文本放在图像上方,transform: translate(-50%, -50%); top: 50%; left: 50%;
抵消了文本,还有其他我现在不记得的。
主要问题是我有两个 "layers" - 文本和下面的图像。为此,我需要使用 absolute
,这会导致 table
选项不起作用。
如果您有任何建议,我将不胜感激。
注意:我使用的图像必须保持 16:9 纵横比。
谢谢!
.work{
display:table;
}
.work a{
position:relative;display:table;
}
.work h1{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%, -50%);
margin:0;
width:80%;
text-align:center;
}
.work img{
width:800px;
height:450px;
display:block;
max-width:100%;
}
发布 css 水平居中代码 and/or 垂直居中纯 css
(改编自我的 responsive.css
脚本)。包括对在线资源的引用。根据需要使用。 注意对于某些情况,您可能需要稍微调整 html 结构以包含包装器(参见评论)
/* center alignment classes */
/* http://www.dev-metal.com/center-div-vertically-horizontally-modern-method-without-fixed-size/ */
.center-vertical-wrapper
{
margin: 0;
padding: 0;
width: 100%;
height: 100%;
display: table;
}
.center-horizontal-wrapper
{
margin: 0;
padding: 0;
display: table-cell;
text-align: center;
vertical-align: middle;
}
.center-h
{
margin-left: auto;
margin-right: auto;
}
.center-contents-h
{
text-align: center;
}
/* http://coding.smashingmagazine.com/2013/08/09/absolute-horizontal-vertical-centering-css/#Height */
.center-absolute /* needs width/height to be set */
{
position: absolute;
bottom: 0;
left: 0;
top: 0;
right: 0;
float:left;
margin: auto;
}
.center-transform /* needs width/height to be set */
{
position: absolute;
margin: auto;
top: 50%; left: 50%;
transform: translate(-50%,-50%);
}
/* http://coding.smashingmagazine.com/2013/05/22/centering-elements-with-flexbox/ */
.center-flexbox
{
display: -webkit-box; /* OLD: Safari, iOS, Android browser, older WebKit browsers. */
display: -moz-box; /* OLD: Firefox (buggy) */
display: -ms-flexbox; /* MID: IE 10 */
display: -webkit-flex; /* NEW, Chrome 21–28, Safari 6.1+ */
display: flex; /* NEW: IE11, Chrome 29+, Opera 12.1+, Firefox 22+ */
align-items: center;
justify-content: center;
margin: 0;
height: 100%;
width: 100% /* needed for Firefox */
}
我得到了一个工作示例:https://jsfiddle.net/v1harbqm/7/
我基于@gopalraju 的fiddle。它在 Safari 中不起作用,但是 display: table;
和向标题添加高度的组合起作用。
编辑:在标题中创建了一个 <span>
以使其可以处理更长的文本。这次使用翻译,看起来 Safari 仍然需要 -webkit- 前缀,所以这可能是最初的问题。
无论如何,这是更新的:https://jsfiddle.net/v1harbqm/13/