#css
Вопрос:
Мне нужно решить небольшую проблему. Я создаю сетку CSS. Это сетка.
.cover {
max-width: 1080px;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: auto;
}
figure {
margin: 1px;
position: relative;
background-repeat: no-repeat;
background-size: cover;
}
.horizontal {
padding-top: calc(700 / 1400 * 100%);
grid-column: span 2;
grid-row: span 1;
max-width: 720px;
}
.large {
padding-top: calc(700 / 700 * 100%);
grid-column: span 2;
grid-row: span 2;
max-width: 720px;
}
.vertical {
padding-top: calc(560 / 360 * 100%);
grid-column: span 1;
grid-row: span 2;
max-width: 360px;
}
.small {
padding-top: calc(700 / 700 * 100%);
grid-column: span 1;
grid-row: span 1;
max-width: 360px;
}
<section class="cover">
<figure style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5)), url('https://via.placeholder.com/1350x700.png?text=1350x700')" class="horizontal"></figure>
<figure style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5)), url('https://via.placeholder.com/675x700.png?text=675x700')" class="small"></figure>
<figure style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5)), url('https://via.placeholder.com/675x700.png?text=675x700')" class="small"></figure>
<figure style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5)), url('https://via.placeholder.com/675x700.png?text=675x700')" class="small"></figure>
<figure style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5)), url('https://via.placeholder.com/675x700.png?text=675x700')" class="small"></figure>
</section>
Мне нужно удалить изображение из figure tag
стиля фона, заменив его тегом изображения.
В то же время изображение должно быть доступно для кликабельности.
Я пытаюсь с
<section class="cover">
<a href="">
<figure class="horizontal">
<img src="https://via.placeholder.com/1350x700.png?text=1350x700">
</figure>
</a>
<a href="">
<figure class="small">
<img src="https://via.placeholder.com/700x700.png?text=1350x700">
</figure>
<a href="">
....
но я не могу найти способ сохранить сетку. Все сломано.
Изменить: Я добавляю две информации. Сетка генерируется динамически бэкендом и имеет разные макеты, структура каждой плитки должна быть одинаковой.
Размер и соотношение сторон каждой плитки определяются классом, который, конечно же, присваивается элементу в соответствии с макетом.
Поэтому я должен использовать класс.
Ответ №1:
Пожалуйста, измените свой стиль вот так.
...
a {
grid-column: span 2;
grid-row: span 1;
max-width: 720px;
}
img {
max-width: 720px;
}
.horizontal {
grid-column: span 2;
grid-row: span 1;
max-width: 720px;
}
...
Ответ №2:
Пожалуйста, взгляните на фрагмент ниже:
.cover {
max-width: 1080px;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: auto;
}
figure {
margin: 1px;
position: relative;
background-repeat: no-repeat;
background-size: cover;
}
a {
grid-column: span 2;
grid-row: span 1;
max-width: 720px;
margin-bottom: -4px;
}
a .horizontal {
padding-top: 0 !important;
}
img {
width: 100%;
}
.horizontal {
padding-top: calc(700 / 1400 * 100%);
grid-column: span 2;
grid-row: span 1;
max-width: 720px;
}
.large {
padding-top: calc(700 / 700 * 100%);
grid-column: span 2;
grid-row: span 2;
max-width: 720px;
}
.vertical {
padding-top: calc(560 / 360 * 100%);
grid-column: span 1;
grid-row: span 2;
max-width: 360px;
}
.small {
padding-top: calc(700 / 700 * 100%);
grid-column: span 1;
grid-row: span 1;
max-width: 360px;
}
<section class="cover">
<a href="">
<figure class="horizontal">
<img src="https://via.placeholder.com/1350x700.png?text=1350x700">
</figure>
</a>
<!--<figure style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5)), url('https://via.placeholder.com/1350x700.png?text=1350x700')" class="horizontal"></figure>-->
<figure style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5)), url('https://via.placeholder.com/675x700.png?text=675x700')" class="small"></figure>
<figure style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5)), url('https://via.placeholder.com/675x700.png?text=675x700')" class="small"></figure>
<figure style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5)), url('https://via.placeholder.com/675x700.png?text=675x700')" class="small"></figure>
<figure style="background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5)), url('https://via.placeholder.com/675x700.png?text=675x700')" class="small"></figure>
</section>
Комментарии:
1. спасибо, но мне нужно сохранить класс, потому что это только один из 6 макетов, которые может использовать эта сетка. И с бэкэнда я могу назначить фигуре, или ссылке, или изображению каждой плитки класс.