#html #css
#HTML #css
Вопрос:
У меня есть следующий HTML
<dl>
<dt>A</dt>
<dd>B</dd>
<dt>C</dt>
<dd>D</dd>
<dt>E</dt>
<dd>F</dd>
</dl>
и следующий CSS
dt,
dd {
border-bottom: 1px solid #000;
}
dt:last-child,
dd:last-child {
border-bottom: none;
}
Проблема в том, что у последнего dt
есть граница.
Что не так? Чего мне не хватает?
Вот jsfiddle.
Комментарии:
1. Это потому, что последний
<dt>
не является последним дочерним элементом.<dd>
Он взят в качестве последнего дочернего элемента вашего списка2. Так что на самом деле CSS работает так, как ожидалось ;).
3. Он работал правильно, но не так, как я ожидал. Теперь я понимаю, почему.
Ответ №1:
Проблема в том, что ваш dt
элемент не является последним дочерним элементом, а является последним dd
элементом. Родительский объект может иметь только один последний дочерний объект, поэтому last-of-type
вместо него следует использовать:
dt,
dd {
border-bottom: 1px solid #000;
}
dt:last-of-type,
dd:last-of-type {
border-bottom: none;
}
<dl>
<dt>A</dt>
<dd>B</dd>
<dt>C</dt>
<dd>D</dd>
<dt>E</dt>
<dd>F</dd>
</dl>
Ответ №2:
вам нужно настроить таргетинг dt:last-of-type
, так как последний dt
не является last-child
его родительским элементом (на самом деле за ним следует другой dd
элемент).
В качестве дополнительного примечания вы могли бы оптимизировать свой код следующим образом
dt:not(:last-of-type),
dd:not(:last-child) {
border-bottom: 1px solid #000;
}
Таким образом, вам не нужно будет позже сбрасывать границу с помощью определенного правила.
Пример (оптимизированный): https://jsfiddle.net/bxf8v8mg/5 /
Ответ №3:
Здесь dt
не последний дочерний dd
элемент является последним дочерним элементом dl
Используйте
dt:last-of-type { border-bottom: none; }
Селектор :last-of-type соответствует каждому элементу, который является последним дочерним элементом определенного типа его родительского элемента.
Ответ №4:
Попробуйте этот:
dt:nth-last-of-type(1), dd:nth-last-of-type(1){
border-bottom: none;
}
Ответ №5:
вы должны написать dd:nth-last-child(2)
так, чтобы нацеливаться на предпоследний дочерний элемент родительского элемента, который есть dl
. Или вы можете просто написать dd:last-of-type
, чтобы настроить таргетинг на последний dd