Można to zrobić na przykład tak:
Stworzyć div o powiedzmy nazwie hero.
Dla niego w css nadać:
.hero {
display: flex;
justify-content: center;
align-items: center
}
Powyższy kod wyśrodkuje wszytko wewnątrz hero, pod warunkiem, że dodamy wysokość:
.hero {
display: flex;
justify-content: center;
align-items: center;
height: 100vh
}
100vh oznacza 100 procent wysokości okna przeglądarki.
Wewnątrz diva hero wstawiamy nasze zdjęcie, które zostanie wyśrodkowane.
Jeżeli jest to duże zdjęcie na cały ekran, i stolik jest zawsze na środku, a reszta zdjęcia zostaje ucięte dla urządzeń mobilnych, można dla hero wstawić to zdjęcie w background o tak:
.hero {
background: url(zdjęcie) center/cover;
height: 100vh
}
center/cover nieco może zmniejszyć i wyśrodkowuje zdjęcie nieco ucinając boki tła.
Samo center jednak twardo ucina tło zostawiając tą samą wielkość tego co jest w centrum zdjęcia w tle, więc chyba o to ci chodzi.
Sam tekst prawdopodobnie ma nadane takie wartości:
.text {
position: absolute;
top: 20rem;
left: calc(50% - 10rem)
}
Wysokość w top musi być ustalona adekwatnie dla danego przykładu, tutaj wpisałem randomowo 20 rem.
Podobnie 10 rem randomowo, im więcej tym bardziej będzie od centrum się oddalać dany tekst. Jednak po ustaleniu, jak tutaj np 10 rem, wciąż przy resizowaniu przeglądarki będzie się wyświetlał w tej samej odległości od centrum.
Więc jeśli chcesz by tekst przesunąć 10rem od centrum, a sam tekst ma szerokość powiedzmy 12 rem, to należy nadać mu:
left: calc(50% - 16rem)
Dlaczego 16 rem?
Bo, dla tekstu o szerokości 12 rem, by go wyśrodkować (przy position absolute oczywiście) trzeba nadać:
left: calc(50% - 6rem)
50 procent minus połowa naszego elementu, a żeby o 10 rem przesunąć w lewo to 6 rem + 10 rem.