Ответ:
Вы пытаетесь указать CSS:
- найти родителя с несколькими детьми
- затем найдите специалиста c child в каждом из этих родителей
Начиная с 2020 года, это не поддерживается чистым CSS, и ответ по иронии судьбы с 2009 года. Читать это , это и это .
Другие обходные пути:
A) По jQuery (или аналогичное решение) по JS)
// Find all parents
$('.parent').each(function() {
// Find all children of this parent
var $children = $(this).find('div[class^="child"]');
if($children.length > 1) {// if has 2 or more children
$children.css('borderRight', 'none');
// -- or --
$children.addClass('my_child_no_border_class');
} else {// Has 1 or 0 children
$children.css('borderRight', '1px solid red');
// -- or --
$children.addClass('my_child_border_class');
}
});
Если вы предпочитаете добавлять классы, обязательно создайте CSS classes .my_child_border_class
и .my_child_no_border_class
B) По HTML & CSS
Добавить специальные классы для детей с рамкой и без рамки:
<!-- HTML -->
<div class="container">
<div class="parent">
<div class="child1 noborder">
<div class="child2">
</div>
<div class="parent">
<div class="child1 noborder">
<div class="child2">
</div>
<div class="parent">
<div class="child1 withborder">
</div>
</div>
<!-- CSS -->
.noborder {
border-right: none;
}
.withborder {
border-right: 1px solid red;
}
C) По CSS
/* All child1 get this css */
.parent > child1 {
border-right: none;
}
/* then we override last parent's child1 with different css */
.parent:last-child > child1 {
border-right: 1px solid red;
}
Вывод:
Могут быть и другие обходные пути, но не чистое CSS решение.