Как оформить картинку в div? - PullRequest
2 голосов
/ 07 февраля 2020

Итак, я делаю магазин и хочу оформить образ. Прямо сейчас я не вижу лиц в div:

webshop

Я знаю, что это мелочь, но я не могу этого добиться:

Компонент пункта меню:

import React из "реагировать"; import "./menu-item.styles.scss";

const MenuItem = ({ title, imageUrl, size }) => (
  <div className={`${size} menu-item`}>
    <div
      className="img"
      style={{
        backgroundImage: `url(${imageUrl})`
      }}
    />
    <div className="content">
      <h1 className="title">{title}</h1>
    </div>
  </div>
);

export default MenuItem;

Стилизация элементов меню:

    .menu-item {
  min-width: 30%;
  height: 240px;
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid black;
  margin: 0 7.5px 10px;
  border-radius: 10px;

  .img {
    width: 100%;
    height: 100%;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center center;
    position: relative;
    right: 0px;
    border-radius: 10px;
  }

  &:hover {
    .title {
      transition: ease-in 0.6s;
      opacity: 1;
      cursor: pointer;
    }
  }

  &.small-sneakers {
    background-position: center;
  }

  &.large {
    height: 420px;
  }

  &:first-child {
    margin-right: 7.5px;
  }

  &:last-child {
    margin-left: 7.5px;
  }
  .content {
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
  }

  .title {
    font-weight: bold;
    margin-bottom: 6px;
    font-size: 22px;
    color: white;
    text-transform: uppercase;
    align-items: center;
    opacity: 0;
    z-index: 3;
    position: absolute;
  }
}

Когда я пытаюсь сделать background-position: top - 50px по центру, то изображение не отзывчивое: /

Спасибо за помощь!

1 Ответ

1 голос
/ 07 февраля 2020

Когда вы используете background-position: top -50px center, вы нарушите намерение background-size: cover; поскольку он (обложка) будет определять, следует ли «обрезать» изображение по горизонтали или по вертикали в зависимости от размера изображения, поэтому, если обрезка происходит по бокам, 50 пикселей верхней части изображения будет находиться за пределами контейнера.

Вы можете управлять требуемым поведением, задав переполнение: скрыто в родительском элементе, установите отрицательное поле в верхней части дочернего элемента и установите для высоты дочернего элемента значение 100% + [значение верхнего поля] с помощью cal. c.

пример кода на код ручки здесь

.menu-item 
  min-width: 30%;
  height: 240px;
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid black;
  margin: 0 7.5px 10px;
  border-radius: 10px;
  overflow: hidden;
}

.img {
  margin-top: -50px;
  width: 100%;
  height: calc(100% + 50px);
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  background-image: url(https://image.cnbcfm.com/api/v1/image/106069136-1565284193572gettyimages-1142580869.jpeg?v=1576531407&w=1400&h=950);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...