2016-05-23 3 views
0

Привет, я прошу ваших профессионалов помочь ... Я создаю флюидную галерею с HTML и CSS. Мне нужно добавить текст на изображения во время их зависания, и я хочу, чтобы этот текст был центрирован по горизонтали и по вертикали. Все, что я пробовал, провалилось до сих пор. В настоящий момент текст находится на изображениях с абсолютным, но текст находится сверху слева. Пожалуйста помоги!Как центрировать текст в абсолютном положении div?

body { 
 
    margin: auto; 
 
} 
 
.portfolio-container, 
 
.portfolio-list { 
 
    width: 100%; 
 
} 
 
.portfolio-list { 
 
    margin: 0; 
 
    padding: 0; 
 
    list-style: none; 
 
} 
 
.portfolio-list li { 
 
    position: relative; 
 
    display: block; 
 
    float: left; 
 
    width: 25%; 
 
} 
 
.portfolio-list li img { 
 
    display: block; 
 
    width: 100%; 
 
    margin: 0; 
 
    vertical-align: top; 
 
} 
 
.portfolio-list a:after { 
 
    width: 100%; 
 
} 
 
.portfolio-list li img { 
 
    width: 100%; 
 
    margin: 0 auto; 
 
} 
 
h1, 
 
h2 { 
 
    font-weight: normal; 
 
} 
 
p { 
 
    line-height: 1.5; 
 
} 
 
#description { 
 
    max-width: 40em; 
 
    margin: 0 auto 4.125em; 
 
    padding: 0 3%; 
 
} 
 
.group:before, 
 
.group:after { 
 
    content: ""; 
 
    display: table; 
 
} 
 
.group:after { 
 
    clear: both 
 
} 
 
.group { 
 
    zoom: 1 
 
} 
 
#wrapper .text { 
 
    left: 0; 
 
    right: 0; 
 
    margin: 0 auto; 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 100%; 
 
    top: 0; 
 
    left: 0; 
 
    opacity: 0; 
 
    transition: all 0.5s; 
 
    -webkit-transition: all 0.5s; 
 
    background: rgba(47, 193, 108, 0.6); 
 
} 
 
#wrapper:hover .text { 
 
    opacity: 1; 
 
}
<section class="portfolio-container group"> 
 
    <ul class="portfolio-list group"> 
 
    <li id="wrapper"> 
 
     <img src="http://placehold.it/600x400/c69/?text=%20" class="hover"> 
 
     <p class="text">text</p> 
 
    </li> 
 
    <li id="wrapper"> 
 
     <img src="http://placehold.it/600x400/9c6/?text=%20" class="hover"> 
 
     <p class="text">text</p> 
 
    </li> 
 
    </ul> 
 
    
 
    
 
</section>

ответ

2

Использование display:flex; с justify-content: center; и align-items: center; внутри #wrapper .text

body { 
 
    margin: auto; 
 
} 
 
.portfolio-container, 
 
.portfolio-list { 
 
    width: 100%; 
 
} 
 
.portfolio-list { 
 
    margin: 0; 
 
    padding: 0; 
 
    list-style: none; 
 
} 
 
.portfolio-list li { 
 
    position: relative; 
 
    display: block; 
 
    float: left; 
 
    width: 25%; 
 
} 
 
.portfolio-list li img { 
 
    display: block; 
 
    width: 100%; 
 
    margin: 0; 
 
    vertical-align: top; 
 
} 
 
.portfolio-list a:after { 
 
    width: 100%; 
 
} 
 
.portfolio-list li img { 
 
    width: 100%; 
 
    margin: 0 auto; 
 
} 
 
h1, 
 
h2 { 
 
    font-weight: normal; 
 
} 
 
p { 
 
    line-height: 1.5; 
 
} 
 
#description { 
 
    max-width: 40em; 
 
    margin: 0 auto 4.125em; 
 
    padding: 0 3%; 
 
} 
 
.group:before, 
 
.group:after { 
 
    content: ""; 
 
    display: table; 
 
} 
 
.group:after { 
 
    clear: both 
 
} 
 
.group { 
 
    zoom: 1 
 
} 
 
#wrapper .text { 
 
    left: 0; 
 
    right: 0; 
 
    margin: 0 auto; 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 100%; 
 
    top: 0; 
 
    left: 0; 
 
    opacity: 0; 
 
    transition: all 0.5s; 
 
    -webkit-transition: all 0.5s; 
 
    background: rgba(47, 193, 108, 0.6); 
 
    display:flex; 
 
    justify-content: center; 
 
    align-items: center; 
 
    
 
} 
 
#wrapper:hover .text { 
 
    opacity: 1; 
 
}
<section class="portfolio-container group"> 
 
    <ul class="portfolio-list group"> 
 
    <li id="wrapper"> 
 
     <img src="" class="hover"> 
 
     <p class="text">text</p> 
 
    </li> 
 
    <li id="wrapper"> 
 
     <img src="" class="hover"> 
 
     <p class="text">text</p> 
 
    </li> 
 
    </ul> 
 
</section>

Смежные вопросы