2013-04-20 2 views
1

Я строю форму, но по сумасшедшей причине nth-child не работает на поля ввода, как кажется. Jsfiddle, чтобы проиллюстрировать проблему: http://jsfiddle.net/nGuLp/. Второе поле ввода не должно иметь правое правое поле, но это так. Почему это не работает? HTML:CSS, nth-child не работает?

<div class="block-inner"> 
<h1>Blah</h1> 
<hr /> 
<input type="text" placeholder="Voornaam" name="firstname" id="firstname" class="left" /> 
<input type="text" placeholder="Achternaam" name="surname" id="surname" class="left" /> 

</div> 

CSS:

input { 
width: 45%; 
margin-right: 10%; 
} 

input:nth-child(2){ 
margin-right: 0; 
} 

ответ

2

Вы можете сделать это, это CSS2 и поддерживается всеми браузерами.

div input + input{ } 

Выберет второй вход.

Вы второй ребенок выберете вход, если вход был вторым ребенком. Второй ребенок в div - это час.

+0

'input + input' выбирает второй' ', поэтому он работает в примере OPs, но это не общее решение. Используйте 'input: nth-of-type (2)' вместо этого - см. Https://developer.mozilla.org/en-US/docs/CSS/:nth-of-type –

+0

@RobW: он не является общим, если OP ищет каждый второй «вход», чтобы не иметь правого края. (Что вполне может быть правдой, но я не могу сказать по этому вопросу.) Если OP фактически просто хочет, чтобы второй «ввод» не имел правильного поля, тогда код Нильса правильный, а «nth-child» будет неправильный выбор. –

+0

Вам здесь не нужен div. И 'elt + elt' выбирает любой' elt', который является прямым другом другого: он может выбрать третий, четвертый, если они существуют. – FelipeAls

5

Вам необходимо использовать :nth-of-type(n), в противном случае счетчик увеличивает для каждого элемента в пределах .block-inner, поэтому два входа приводят к 3-му и 4-му положениям.

0

Селектор nth-child не выделяет элементы того же типа. Ваш первый элемент ввода является третьим дочерним элементом его родителя.