#html #css
#HTML #css
Вопрос:
В <body>
<section>
У меня есть фоновое изображение:
<img src="img/background.png" class="back-img">
css:
.back-img {
width: 100%;
height: auto;
overflow:hidden;
}
вот так:
<section>
<div id="topLine">
<img src="img/background.png" class="back-img">
</div>
</section>
Я пытаюсь выровнять разные отдельные квадратные изображения одинакового размера по горизонтали в центре над фоновым изображением в окне браузера с помощью position: fixed;
, чтобы сохранить его в центре экрана с прокруткой и упорядочить по вертикали на экране мобильного устройства:
<img src="img/square1.png" class="image">
<img src="img/square2.png" class="image">
<img src="img/square3.png" class="image">
.css:
.image {
position: fixed;
width: 69px;
height: auto;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
для архивирования чего-то вроде этого:
Цвет фона подразумевает фоновое изображение, а белые квадраты — изображения того же размера.
Я пробовал этот пример:
<div class="row">
<div class="column">
<img src="img/square1.png">
</div>
<div class="column">
<img src="img/square1.png">
</div>
<div class="column">
<img src="img/square1.png">
</div>
</div>
с помощью:
* {
box-sizing: border-box;
}
.column {
float: left;
width: 33.33%;
padding: 5px;
}
.row::after {
content: "";
clear: both;
display: table;
}
который не упорядочивает изображения, как требуется в моем случае, и должен выравнивать изображения в одну строку, но с position: fixed;
у меня на экране только одно изображение.
Я пытаюсь найти какой-то правильный способ получить результат, возможно, с использованием <table>
, <tr>
<td>
для автоматической организации различных изображений в соответствии с размером экрана от горизонтальной до вертикальной групповой линии с ручным сужением окна браузера.
Прежде всего, я должен повторить то же изображение в горизонтальной линии в центре над фоновым изображением в фиксированном положении:
Любое руководство или пример были бы полезны
Ответ №1:
CSS grid или flex были бы идеальными для этого (при условии современных браузеров).
Мне непонятно, зачем вам нужен img
элемент для вашего фонового изображения, но у меня было много причин в прошлом, поэтому для использования img
элемента потребовалось бы немного больше.
Вот самый простой пример моей интерпретации того, что вы ищете: https://codepen.io/Ilkai/pen/abNdZQK
В основном:
- Настройте свой
section
с помощьюbackground-image
, а также используйте его в качестве источника размера контейнера (во весь экран с помощью100 vw/vh
)
<section class="bg">
...
</section>
.bg {
background-image: url('...');
background-size: cover;
width: 100vw;
height: 100vh;
}
- Создайте div, который будет предназначен для того, чтобы быть вашим родительским макетом, с использованием
display: flex/grid
(Flexbox немного старше Grid, поэтому у него немного лучшая поддержка). Расположите дочерние элементы с помощьюalign-items
иjustify-content
.
<section class="bg">
<div class="layout">
...
</div>
</section>
.bg { ... }
.layout {
width: inherit;
height: inherit;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
}
- Вы также примените свой медиа-запрос к макету div.
.bg {...}
.layout {...}
@media (min-width: 720px) {
.layout {
flex-direction: row;
}
}
- Добавьте свои
img
элементы в качестве дочерних элементов макета div, соответствующего размера.
<section class="bg">
<div class="layout">
<img src="..." />
<img src="..." />
<img src="..." />
<img src="..." />
</div>
</section>
.bg {...}
.layout {...}
@media (...) {}
.layout img {
width: 6rem;
height: 6rem;
object-fit: cover;
margin: 1rem;
}
Если я неправильно понял, что вам нужно, дайте мне знать в комментариях
Комментарии:
1. Здравствуйте, извините за поздний повтор и пропущенный момент. Вы заметили «Мне не ясно, зачем вам нужен элемент <img>». Я должен изменить исходный цвет изображения на серый фильтр при наведении курсора мыши, в любом случае, это то же самое с background-image: url
Ответ №2:
С position: fixed
изображения, вероятно, перекрываются.
Попробуйте поместить их в фиксированный элемент и разрешить им быть дочерними элементами в этом элементе, которые затем вы могли бы использовать display: inline block; text-align: center;
или display: flex; justify-content: center;
для достижения своей цели.
Я рекомендую использовать flex, поскольку вы можете очень легко изменить это для вашего мобильного CSS.