2013-09-15 4 views
0

У меня есть небольшая таблица 2x2 HTML. Каждая ячейка содержит одно изображение и один фрагмент текста.Выравнивать изображение и текст внутри одной ячейки по вертикали?

Пример изображения:

enter image description here

Как можно видеть, текст вертикально ниже по вертикали среднего уровня изображения. Как сделать текст вертикально по центру относительно изображения слева?

Я пробовал несколько разных значений display, которые я не могу исправить.

JSFiddle: http://jsfiddle.net/ahmadka/rbJNQ/

ответ

0

Ну. Попробуйте это:

<td> 
<a id="social_twitter" onclick="window.open(this.href,'external'); return false;" href="http://twitter.com/JenierTeas"> 
    <span>icon</span> 
</a> 
    <span style="vertical-align: middle;">Twitter</span> 
</td> 
+0

Я не хочу ставить стиль непосредственно в HTML. Не может ли он быть связан с CSS? – Ahmad

+0

, конечно, вы можете просто дать ID размаху и поставить дополнительные CSS, как это: ' Twitter' CSS: '# социально-имя { вертикально-выровненный: средний; } ' – Adrian

+0

Это не работает. Уже пробовал. Я только сказал свой предыдущий комментарий, потому что иногда стиль работает из HTML, а не из CSS. Поэтому я подумал, что, возможно, у вас это работает так, как вы написали свое решение. – Ahmad

0

Использовать этот Css // CSS

#nst_block #social_body table { 
background: none repeat scroll 0 center transparent; 
border: 1px dashed black; 
height: 75px; 
margin: 0 auto; 
width: 280px; 
} 

#nst_block #social_body table a { 
border: 0 none; 
font-family: inherit; 
font-size: 16px; 
font-style: inherit; 
font-weight: inherit; 
line-height: 24px; 
margin: 0; 
outline: 0 none; 
padding: 0; 
vertical-align: baseline; 
} 

Обновлено Ссылка: http://jsfiddle.net/rbJNQ/16/

+0

если вы хотите, то прежняя высота стола тогда просто добавьте высоту: 75px; in #nst_block #social_body table {height: 75px; .......} – luckyamit

+0

Есть ли способ избежать установки фиксированного края? Это вызовет проблемы при просмотре на разных устройствах/разрешениях/размерах шрифтов и т. Д. – Ahmad

+0

вы можете попробовать img {height: 30px; } И #text {line-height: 30px; вертикально-Align: средний; } высота строки должна быть такой же, как высота вашего изображения. – luckyamit

0

Ваш код выглядит путь к сложным для этого. Это также не табличные данные, поэтому вы не должны использовать элемент <table>.

Вы можете решить эту проблему так просто. Я включил только важные правила CSS в этот ответ.

HTML

<div class="social_body"> 
    <a class="facebook">Facebook</a> 
    <a class="twitter">Twitter</a> 
    <a class="google">Google+</a> 
    <a class="share">Share This</a> 
</div> 

CSS

.social_body { 
    width: 280px; 
    overflow: hidden; 
    margin: 0 auto; 
    border: 1px dashed black; 
} 

.social_body a { 
    float: left; 
    width: 50%; 
    font-size: 16px; 
    line-height: 24px; 
} 

.social_body a:before { 
    content: ''; 
    float: left; 
    width: 24px; 
    height: 24px; 
    margin: 0 10px 0 0; 
    background: transparent 0 0 no-repeat; 
} 

.social_body a.facebook:before { 
    background-image: url(http://i.imgur.com/QglLT5Q.png); 
} 

.social_body a.twitter:before { 
     background-image: url(http://i.imgur.com/QglLT5Q.png); 
} 

/* […] You see where this is going. */ 

Demo

Try before buy

0

Я понимаю, что этому вопросу 4 года, но эй, почему бы не ответить на него - может быть, это помогает кому-то другому, поскольку ОП, вероятно, так или иначе решал его.

В 2017 году ваша проблема, Ахмад, решена довольно легко с помощью flexbox (просто Google это, вам обязательно понравится - если вы еще не слышали об этом, то есть), установленном для прямого «дети» стола td-с. То, что вы должны сделать, это добавить следующее в CSS в вашей скрипке:

#nst_block #social_body table td > * 
    { 
    display: flex; 
    justify-content: flex-start; 
    align-items: center; 
    } 

Основное позиционирование оси осуществляется justify-content и поперечное расположение оси (вертикальная одна, в вашем случае) осуществляется align-items.

Это все.

0

Вы можете спроектировать его, используя таблицы. Сохранить значок в одной ячейке и текст в другой ячейке. Сделайте их вертикально-выровненными как средние. Итак, как бы высота была иконка, текст будет выровнен по вертикали. Или, если вы ориентируетесь только на новые браузеры, вы можете спроектировать это с использованием модели гибких ящиков.

1

это все Div ведут себя как таблице: это прямоугольный блок, участвующий в контексте форматирования блока

.main-контейнер Таблица .container является РЯДЫ .inner-контейнер является КЛЕТКИ

теперь все DIV ведут себя как стол, я только вертикальное выравнивание среднего изображения, так что все содержание выравнивать в средней

.main-container{ 
 
    display:table; 
 
    background:#bcbbbb; 
 
    width:100%; 
 
    height:100vh; 
 
} 
 
.container{ 
 
    display:table-row; 
 

 
} 
 
.inner-container { 
 
    vertical-align: middle; 
 
    display: table-cell; 
 
    text-align: center; 
 
} 
 
.inner-container figure{ 
 
    background-color:#807c7c; 
 
    vertical-align: middle; 
 
     display: inline-block; 
 
    margin: 0; 
 
    
 
} 
 
.inner-container p { 
 
    display: inline-block; 
 
}
<div class="main-container"> 
 
    
 
<div class="container"> 
 
    <div class="inner-container"> 
 
    <figure> 
 
     <img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.svg?v=6e4af45f4d66" alt="stack" width="100" height="100"> 
 
    </figure> 
 
    <p>Example</p> 
 
</div> 
 
    <div class="inner-container"> 
 
    <figure> 
 
     <img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.svg?v=6e4af45f4d66" alt="stack" width="100" height="100"> 
 
    </figure> 
 
    <p>Example</p> 
 
</div> 
 
</div> 
 
<div class="container"> 
 
    <div class="inner-container"> 
 
    <figure> 
 
     <img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.svg?v=6e4af45f4d66" alt="stack" width="100" height="100"> 
 
    </figure> 
 
    <p>Example</p> 
 
</div> 
 
    <div class="inner-container"> 
 
    <figure> 
 
     <img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.svg?v=6e4af45f4d66" alt="stack" width="100" height="100"> 
 
    </figure> 
 
    <p>Example</p> 
 
</div> 
 
</div> 
 
</div>

+0

Объяснение кода, который вы вставили, резко улучшит ваш ответ и поможет другим людям понять, что необходимо для их собственной работы. – Sagar

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