2013-03-14 3 views
2

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

Ситуация:

.singleOrder:first-child { 
    border-radius: 5px 0 0 0; 
} 

.singleOrder:last-child { 
    border-radius: 0 5px 0 0; 
} 

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

Какой самый короткий и элегантный способ решить эту проблему?

ответ

4

Split это:

.singleOrder:first-child { 
    border-top-left-radius: 5px; 
} 

.singleOrder:last-child { 
    border-bottom-left-radius: 5px; 
} 

Или написать дополнительное правило:

.singleOrder:first-child:last-child { 
    border-radius: 5px 5px 0 0; 
} 
+0

Они действительны, а также ваш исходный код был. Однако вы должны также включить префиксные свойства. См. [Этот инструмент] (http://border-radius.com/) – Yogu

+0

См. Также http://caniuse.com/border-radius – Lekensteyn

+0

Спасибо. Второй работает отлично. Я выберу этот ответ, потому что он появился первым. – SquareCat

1

Использование :only-child:

.singleOrder:only-child { 
    border-radius: 5px 5px 0 0; 
} 

Update: Йогу правильно. Я забыл упомянуть. Это должно произойти после ваших заявлений.

+0

Хороший вход! Спасибо! Он работает также. – SquareCat

+1

Не уверен, что это переопределяет правила ': first-child' и': last-child'. Поэтому вы должны убедиться, что это правило появляется после следующих двух. – Yogu

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