2015-01-27 2 views
1

enter image description hereВертикального выравнивания кнопки радио на иконку

Хочу, чтобы выровнять мой Radio Buttons вертикально, что они находятся на середине. Как вы можете видеть на этом экране, они начинаются в нижней строке рядом с иконкой. Я думаю, что это ясно, чего я хочу достичь. Что я должен сделать, чтобы достичь этого красивым способом?

HTML:

<div class="payment-methods"> 
    <div class="method"><input name="1" type="radio"><label class="radio"><img src="https://lol-accs.com/images/ico_visa.jpg" alt=""></label></div> 
    <div class="method"><input name="1" type="radio"><label class="radio"><img src="https://lol-accs.com/images/ico_visa.jpg" alt=""></label></div> 
    <div class="method"><input checked="" name="1" type="radio"><label class="radio"><img src="https://lol-accs.com/images/ico_visa.jpg" alt=""></label></div> 
    <div class="method"><input name="1" type="radio"><label class="radio"><img src="https://lol-accs.com/images/ico_visa.jpg" alt=""></label></div> 
    <div class="method"><input name="1" type="radio"><label class="radio"><img src="https://lol-accs.com/images/ico_visa.jpg" alt=""></label></div> 
</div> 

CSS:

.method { 
    display: inline-block; 
} 

.payment-methods input[type=radio] { 
    margin: 5px 5px 0px 15px; 
} 

Я подготовил JSFiddle, который показывает мой HTML/CSS.

http://jsfiddle.net/fk0zch3d/

ответ

2
  1. Применить vertical-align: middle к img и input.
  2. Удалить margin-top от .payment-methods input[type=radio] (margin: 5px 5px 0px 15px; --->margin: 0px 5px 0px 15px;).

.method, img, input { 
 
    display: inline-block; 
 
    vertical-align: middle; 
 
} 
 
.payment-methods input[type=radio] { 
 
    margin: 0px 5px 0px 15px; 
 
}
<div class="payment-methods"> 
 
    <div class="method"> 
 
    <input name="1" type="radio"> 
 
    <label class="radio"> 
 
     <img src="https://lol-accs.com/images/ico_visa.jpg" alt=""> 
 
    </label> 
 
    </div> 
 
    <div class="method"> 
 
    <input name="1" type="radio"> 
 
    <label class="radio"> 
 
     <img src="https://lol-accs.com/images/ico_visa.jpg" alt=""> 
 
    </label> 
 
    </div> 
 
    <div class="method"> 
 
    <input checked="" name="1" type="radio"> 
 
    <label class="radio"> 
 
     <img src="https://lol-accs.com/images/ico_visa.jpg" alt=""> 
 
    </label> 
 
    </div> 
 
    <div class="method"> 
 
    <input name="1" type="radio"> 
 
    <label class="radio"> 
 
     <img src="https://lol-accs.com/images/ico_visa.jpg" alt=""> 
 
    </label> 
 
    </div> 
 
    <div class="method"> 
 
    <input name="1" type="radio"> 
 
    <label class="radio"> 
 
     <img src="https://lol-accs.com/images/ico_visa.jpg" alt=""> 
 
    </label> 
 
    </div> 
 
</div>

+0

Тот же вопрос для меня здесь. Зачем мне нужно встроить блокировку всех элементов? Почему мне нужно также установить вертикальное выравнивание для внешнего элемента? Спасибо за вашу помощь! – kentor

+1

@kentor - Вам не нужно добавлять 'display: inline-block' в' img' или 'input'. [Они по умолчанию неактивны] (http://www.w3.org/TR/CSS21/sample.html). Я объединил их, чтобы не писать дважды «vertical-align: middle». Я могу отделить их, если вам это не нравится. :) –

+0

Спасибо за объяснение, отлично работает :). – kentor

1

Вы ищете vertical-align: middle;, используемый с display: inline-block;.

.method inpuit, 
.method label{ 
    display: inline-block; 
    vertical-align: middle; 
} 

http://jsfiddle.net/daCrosby/fk0zch3d/1/

+1

Можете ли вы объяснить мне, почему я должен использовать встроенный блок для внутренних элементов, а? Я имею в виду, что они уже встроены по умолчанию, так почему же выравнивание по вертикали не работает без этого? Спасибо за ваш ответ и помощь! – kentor

+0

Я вообще делаю это, потому что очень легко переопределить стиль в другом месте. Например, если вы установите все свои 'label' '' display: block; ', но теперь эти вам нужно как' display: inline-block; ', просто добавив' vertical-align middle', больше не будет работать, потому что это блоки. Также есть некоторые проблемы с настройками по умолчанию для кросс-браузера, не все они одинаковые, так что хорошо просто быть прямым с тем, что вам нужно. Поэтому, даже если это не обязательно необходимо всегда, я добавлю такие простые строки, чтобы сохранить головную боль в будущем. – DACrosby