При наведении, как я могу сделать границу моего ребенка пересекающейся с родительской границей?

У меня есть родитель с красной рамкой. Когда пользователь наводит на детей, я пытаюсь изменить границу детей, чтобы перекрывать родителя. Как я могу достичь этого?

.parent{
  border:1px solid red;
  display:inline-block;
}

.parent a {
  display:block;
  padding:1em;
  border-bottom:1px solid #ddd;
}

.parent a:hover{
  border:1px solid #ddd;
}
<div class="parent">
      <a href="#">1</a>
      <a href="#">2</a>
      <a href="#">3</a>
      <a href="#">4</a>
      <a href="#">5</a>
    </div>

Ответы

Ответ 1

Пока вы знаете ширину границ и можете использовать относительное позиционирование... Я здесь преувеличил границы для ясности.

.parent {
  border:5px solid red;
  display:inline-block;
  position: relative;
}

.parent a {
  display:block;
  padding:1em;
  border-bottom:1px solid #ddd;
  position: relative;
}

.parent a:hover{
  border:5px solid #ddd;
  margin: -5px;
}

https://jsfiddle.net/kd0gf31z/

Ответ 2

Я сделал некоторые изменения в вашем стиле:

.parent{
  display:inline-block;
}

.parent a {
  display:block;
  padding:1em;
  border-right:1px solid red;
  border-left:1px solid red;
  border-bottom:1px solid #ddd;
  border-top: none;
}

.parent a:first-of-type{
  border-top:1px solid red;
}

.parent a:last-of-type{
  border-bottom:1px solid red;
}

.parent a:hover{
  border-color:#ddd;
}

см. результат здесь https://jsfiddle.net/IA7medd/343ydvhs/

Ответ 3

Вы можете достичь этого, используя абсолютно позиционированные псевдоэлементы, например:

*,*::before,*::after{box-sizing:border-box;font-family:sans-serif;}
.parent{
    border:1px solid red;
    display:inline-block;
}
.parent a{
    display:block;
    padding:1em;
    border-bottom:1px solid #ddd;
    position:relative;
}
.parent a:last-child{
    border:0;
}
.parent a:hover::after{
    border:1px solid #ddd;
    bottom:-1px;
    content:"";
    left:-1px;
    position:absolute;
    right:-1px;
    top:-1px;
}
<div class="parent">
    <a href="#">1</a>
    <a href="#">2</a>
    <a href="#">3</a>
    <a href="#">4</a>
    <a href="#">5</a>
</div>

Ответ 5

Почему бы не просто изменить родительский CSS на зависание ребенка?

.parent a:hover .parent {
//Some CSS
}