我想绝对在我的图像上放置一个文本,但它似乎并没有居中。我尝试了一些东西,但这很奇怪。我正在寻找一个响应式网站,但随之而来的,它看起来很奇怪。这是我的代码。
HTML
<div id="container"></div>
<div class="parent">
<div class="child">
<h1> Richy Photography </h1>
</div>
</div>
CSS
#container {
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
background-image:url(image.jpg);
background-size:cover;
background-position:50% 50%;
background-repeat: no-repeat;
}
body, html
{
height:100%;
width:100%;
}
.parent {
position:relative;
font-family: Helvetica, Arial, sans-serif;
width: 100%;
height: 100%;
margin:0;
padding:0;
}
.child {
position: absolute;
left:37%;
top:37%;
margin:0;
padding:0;
}
答案 0 :(得分:4)
由于37%的顶部和左侧偏移,如果视口太小,文本将显示在屏幕外。
更简单的解决方案是将.parent
元素设置为table
,然后将.child
元素设置为table-cell
,水平和垂直显示对齐的内容:
.parent {
display: table;
height: 100%;
width: 100%;
}
.child {
display: table-cell;
text-align: center;
vertical-align: middle;
}
从IE8开始,all modern browsers支持此功能。
为了让内容显示在背景图片的顶部,您需要为.parent
元素提供更高的z-index
属性并为其提供相对定位:
.parent {
display: table;
height: 100%;
position: relative;
width: 100%;
z-index: 2;
}
虽然您可以简单地为.parent
元素添加背景并完全删除#container
元素。
答案 1 :(得分:1)
您只需要根据需要更改宽度,现在您也可以删除左侧:
.child {
position: absolute;
text-align:center;
margin:0;
padding:0;
width:100%;
}
因为绝对定位元素不覆盖相对元素的整个宽度 所以你需要自己指定,你可以使用text-align:center
答案 2 :(得分:1)
你不能依赖左:37%;为了使您的元素在不同的屏幕尺寸中居中。
试试left: 0; text-align: center; width: 100%;
,无论父级有多大,都应使.child
元素居中。
如果你真的需要职位:绝对;尝试一下,否则请与@James Donnelly一起回答,这是击球手。
祝你的项目充满乐趣。
答案 3 :(得分:1)
将左右边距设置为自动,添加宽度,并使用左:0;和右:0;应该工作。
这样的事情:
.child {
position: absolute;
top: 0;
width:26%;
margin: 0 auto;
left:0;
right:0;
}