Если бы я делал это, я бы сделал это одним из двух способов.
Вы можете использовать изображение, чтобы объявить высоту элемента, а затем поместить текстовую область сверху так:
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.row {
width: 100%;
margin: 0 auto;
position: relative;
}
.text-area {
width: auto;
height: auto;
position: absolute;
top: 50%;
left: 50%;
-ms-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
z-index: 1;
text-align: center;
}
.bg-image {
width: 100%;
height: auto;
margin: 0 auto;
position: relative;
display: block;
}
</style>
<div class="row">
<div class="text-area">
<i class="icon ion-md-exit"></i>
<h2>TEXT</h2>
<p>TEXT</p>
</div>
<img class="bg-image" src="https://ichef.bbci.co.uk/images/ic/720x405/p0517py6.jpg">
</div>
Или установите высоту поля и используйте фоновое изображение, например:
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.row {
width: 100%;
height: 100vh;
margin: 0 auto;
position: relative;
background-image: url(https://ichef.bbci.co.uk/images/ic/720x405/p0517py6.jpg);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.text-area {
width: auto;
height: auto;
position: absolute;
top: 50%;
left: 50%;
-ms-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
z-index: 1;
text-align: center;
}
.bg-image {
width: 100%;
height: auto;
margin: 0 auto;
position: relative;
display: block;
}
</style>
<div class="row">
<div class="text-area">
<i class="icon ion-md-exit"></i>
<h2>TEXT</h2>
<p>TEXT</p>
</div>
</div>