Я возился с внутренними границами в CSS. Я пытаюсь скопировать этот макет для сетки изображений на своем веб-сайте:
Я не могу воссоздать способ, которым горизонтальные и вертикальные границы не соприкасаются друг с другом, как здесь выделено красным:
Это самое близкое, что я получаю:
(Копирование кода NY Times здесь бесполезно, так как у них другая настройка. Верхняя граница — это нижняя граница другого div
. Нижняя граница — это верхняя граница другого div
.)
Я понимаю, что границы соприкасаются с одной стороны, потому что я использую отступы вместо полей. Но какие у меня есть другие варианты?
Мой вопрос: Как сделать так, чтобы границы не касались горизонтальной линии?
/* @media (min-width: 765px) { */
.cards {
display: flex;
flex-wrap: wrap;
margin-top: 1.1rem;
}
.cards article {
border-right: 1px solid #e2e2e2;
box-sizing: content-box;
flex-grow: 1;
width: 28%;
border-top: 1px solid #e2e2e2;
padding: 1.1rem;
padding-bottom: 0;
margin-top: 1.2rem;
}
.cards article:nth-child(1),
.cards article:nth-child(2),
.cards article:nth-child(3) {
border-top: none;
padding-top: 0;
}
.cards article:nth-child(3n) {
border-right: none;
padding-right: 0;
}
/* TODO formulate expression */
.cards article:nth-child(1),
.cards article:nth-child(4),
.cards article:nth-child(7),
.cards article:nth-child(10),
.cards article:nth-child(13),
.cards article:nth-child(16),
.cards article:nth-child(19) {
padding-left: 0;
}
.cards-wrapper .page-title {
margin-top: 3.2rem;
margin-bottom: 0;
font-size: 220%;
}
/* } */
<article>
<a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">
<figure>
</figure>
</a>
<p class = "date"><time datetime = "2022-03-18">18. mars 2022</time></p>
<h2 itemprop = "headline"><a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">Ullandhaug, tirsdag ettermiddag</a></h2>
<p class = "description">@ Acros</p>
</article>
Я отключил медиа-запрос, чтобы карты отображались в небольшой демонстрации. Пожалуйста, измените, чтобы оно выглядело ближе к вашему изображению.
С вашей текущей структурой HTML я бы использовал псевдоэлемент ::after
для достижения этой цели.
.cards {
display: flex;
flex-wrap: wrap;
margin-top: 1.1rem;
}
.cards article {
position: relative;
border-right: 1px solid #e2e2e2;
box-sizing: content-box;
flex-grow: 1;
width: 28%;
padding: 1.1rem;
margin: 1.1rem 0;
}
.cards article::after {
content: '';
position: absolute;
bottom: -1.1rem;
left: 0;
display: block;
width: 101%;
height: 1px;
background: #e2e2e2;
}
.cards article:nth-child(1),
.cards article:nth-child(2),
.cards article:nth-child(3) {
border-top: none;
padding-top: 0;
}
.cards article:nth-child(3n) {
border-right: none;
padding-right: 0;
}
/* TODO formulate expression */
.cards article:nth-child(1),
.cards article:nth-child(4),
.cards article:nth-child(7),
.cards article:nth-child(10),
.cards article:nth-child(13),
.cards article:nth-child(16),
.cards article:nth-child(19) {
padding-left: 0;
}
.cards-wrapper .page-title {
margin-top: 3.2rem;
margin-bottom: 0;
font-size: 220%;
}
<div class = "cards">
<article>
<a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">
<figure>
</figure>
</a>
<p class = "date"><time datetime = "2022-03-18">18. mars 2022</time></p>
<h2 itemprop = "headline"><a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">Ullandhaug, tirsdag ettermiddag</a></h2>
<p class = "description">@ Acros</p>
</article>
<article>
<a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">
<figure>
</figure>
</a>
<p class = "date"><time datetime = "2022-03-18">18. mars 2022</time></p>
<h2 itemprop = "headline"><a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">Ullandhaug, tirsdag ettermiddag</a></h2>
<p class = "description">@ Acros</p>
</article>
<article>
<a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">
<figure>
</figure>
</a>
<p class = "date"><time datetime = "2022-03-18">18. mars 2022</time></p>
<h2 itemprop = "headline"><a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">Ullandhaug, tirsdag ettermiddag</a></h2>
<p class = "description">@ Acros</p>
</article>
<article>
<a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">
<figure>
</figure>
</a>
<p class = "date"><time datetime = "2022-03-18">18. mars 2022</time></p>
<h2 itemprop = "headline"><a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">Ullandhaug, tirsdag ettermiddag</a></h2>
<p class = "description">@ Acros</p>
</article>
<article>
<a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">
<figure>
</figure>
</a>
<p class = "date"><time datetime = "2022-03-18">18. mars 2022</time></p>
<h2 itemprop = "headline"><a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">Ullandhaug, tirsdag ettermiddag</a></h2>
<p class = "description">@ Acros</p>
</article>
<article>
<a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">
<figure>
</figure>
</a>
<p class = "date"><time datetime = "2022-03-18">18. mars 2022</time></p>
<h2 itemprop = "headline"><a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">Ullandhaug, tirsdag ettermiddag</a></h2>
<p class = "description">@ Acros</p>
</article>
<article>
<a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">
<figure>
</figure>
</a>
<p class = "date"><time datetime = "2022-03-18">18. mars 2022</time></p>
<h2 itemprop = "headline"><a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">Ullandhaug, tirsdag ettermiddag</a></h2>
<p class = "description">@ Acros</p>
</article>
<article>
<a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">
<figure>
</figure>
</a>
<p class = "date"><time datetime = "2022-03-18">18. mars 2022</time></p>
<h2 itemprop = "headline"><a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">Ullandhaug, tirsdag ettermiddag</a></h2>
<p class = "description">@ Acros</p>
</article>
<article>
<a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">
<figure>
</figure>
</a>
<p class = "date"><time datetime = "2022-03-18">18. mars 2022</time></p>
<h2 itemprop = "headline"><a itemprop = "url" href = "/foto/ullandhaug-tirsdag-ettermiddag/">Ullandhaug, tirsdag ettermiddag</a></h2>
<p class = "description">@ Acros</p>
</article>
</div>
Ваше здоровье. Я заметил, что мы должны установить width: 101%
, чтобы предотвратить крошечное пространство между границами. Почему?
Из-за свойства border-right
ширина элемента article
увеличивается, а псевдоэлемент не учитывает это, поэтому мы соответствующим образом корректируем. Использование width: calc(100% + 1px)
— идеальный способ сделать это с 1px
размером вашего border-right
.
Здравствуйте, я отредактировал ваше сообщение, чтобы включить фрагмент исполняемого кода, пожалуйста, убедитесь, что он выполняется так, как задумано. Я ничего не менял в коде.