2014-02-06 3 views
5

Я создал несколько плавающих кнопок и ссылку, которая заполняет всю кнопку. Однако вертикальное выравнивание, похоже, не применяется - текст ссылки всегда остается в верхней части кнопки <li>.вертикальный выровнять ссылку внутри div

Вот скрипку пример: http://jsfiddle.net/su7nf/


<div id="ButtonContainer"> 
    <ul> 
     <li> 
      <div class="TemplateButton"><a href="http://www.google.com">Report an Issue</a></div> 
     </li> 
     <li> 
      <div class="TemplateButton"><a href="http://www.google.com">Contact Us</a></div> 
     </li> 
     <li> 
      <div class="TemplateButton"><a href="http://www.google.com">Enter Project</a></div> 
     </li> 
     <li> 
      <div class="TemplateButton"><a href="http://www.google.com">Request Consultation</a></div> 
     </li> 
     <li> 
      <div class="TemplateButton"><a href="http://www.google.com">How to Protect Yourself From Some Really Long Text</a></div> 
     </li> 
    </ul> 
</div> 

ul { 
     list-style-type: none; 
    } 
    /* BUTTONS INSIDE TAB STYLING */ 

    #ButtonContainer { 
     margin: auto; 
     width: 100%; 
     overflow: auto; 
     padding-top: 10px; 
     padding-bottom: 10px; 
    } 

    #ButtonContainer > ul { 
      padding: 0; 
      margin: 0; 
    } 

    #ButtonContainer > ul > li { 
     display: inline-block; 
     vertical-align: bottom; 
    } 

    .TemplateButton { 
     overflow: auto; 
     vertical-align: bottom; 
    } 

    .TemplateButton > a { 
     width: 119px; 
     height: 119px; 
     padding: 15px; 
     float: left; 
     background-color: pink; 
     margin-left: 3px; 
     margin-right: 3px; 
     vertical-align: bottom; 
     text-align: center; 
     font-size: 1.25em; 
     border: 1px solid white; 
     border-radius: 15px; 
     -moz-border-radius: 15px; 
    } 
+1

Если вы имели одно слово или одну строку текста в этих кнопок, вы можете легко выровнять их с помощью 'линии -высот: 119px; '. Но поскольку он многострочный, это сложнее. Взгляните на эту ссылку: http://css-tricks.com/vertically-center-multi-lined-text/ – gskema

ответ

5

В ваших тегах a используется table-cell вместо float и изменить вертикальное выравнивание по middle:

.TemplateButton > a { 
    /*float: left; Remove this*/ 
    display:table-cell; /*Add this*/ 
    vertical-align:middle; /*Change to middle*/ 
} 

Проверить это Demo Fiddle

+0

Поплавок был совершенно бессмысленным, не знаю, почему он был там. Не знал, что это показалось мне таким, хотя хорошо знать. Благодарю. – xolsiion

+0

@ user3280943 np mate рад помочь вам – DaniP

3

Установите якоря line-height к тому, что в DIV, или установите его в display: block в противном случае ваши значения ширина/высота не будет работа

+0

Пока еще не голосовали. Но я бы проголосовал за ответ helion3. дисплей: таблица-клетки; Всегда вызывает проблемы для меня по линии. он также блокирует размер ссылки на размер родительского элемента, что может быть болью. – jp1871

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