css - как использовать часть изображения в качестве фона - PullRequest
2 голосов
/ 26 мая 2020

Я пытаюсь использовать часть изображения в качестве фона для div.

Это работает для моего экрана с фиксированной шириной.

desired output

Но когда я изменяю ширину экрана, он теряет правильное положение, показывая другие части изображения.

behavior while resizing

Кто-то может помочь?

HTML

<div class="game">
  <div class="slice top_estrada"></div>
</div>

CSS

.game{
  display:block;
  width:100%;
  .slice{
    display:block;
    width:100%;
    background-image:url('/assets/maps/tilemaps/mymap.png');
    background-repeat: no-repeat;
    background-size: 100% auto;
    &.top_estrada{
      background-position:0 -125px;      /* <========= HERE */
      height:88px;                       /* <========= AND HERE */
    }
  }
}

.game {
  display: block;
  width: 100%;
}

.game .slice {
  display: block;
  width: 100%;
  background-image: url('https://i.imgur.com/rdx8FHt.png');
  background-repeat: no-repeat;
  background-size: 100% auto;
}

.game .slice.top_estrada {
  background-position:0 -125px;      /* <========= HERE */
  height:88px;                       /* <========= AND HERE */
}
<div class="game">
  <div class="slice top_estrada">
    top_estrada
  </div>
</div>

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Не использовать проценты. Сохраните размер в пикселях, включите повтор, затем отрегулируйте положение, как хотите:

.game {
  display: block;
  width: 100%;
}

.game .slice {
  display: block;
  width: 100%;
  background-image: url('https://i.imgur.com/rdx8FHt.png');
  background-size: auto 350px;
}

.game .slice.top_estrada {
  background-position:0 -155px;      
  height:88px;                       
}
<div class="game">
  <div class="slice top_estrada">
    top_estrada
  </div>
</div>

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

.game {
  display: block;
  width: 100%;
}

.game .slice {
  display: block;
  width: 100%;
  background-image: url('https://i.imgur.com/rdx8FHt.png');
}

.game .slice.top_estrada {
  background-position:0 -155px;      
  height:88px;                       
}
<div class="game">
  <div class="slice top_estrada">
    top_estrada
  </div>
</div>
1 голос
/ 26 мая 2020

Это должно сработать, я изменил свойства background-size и background position, с этим вы можете внести некоторые корректировки для достижения желаемого.

  .game{
  display:block;
  width:100%;
  .slice{
    display:block;
    width:100%;
    background-image:url('https://i.imgur.com/rdx8FHt.png');
    background-repeat: no-repeat;
    background-size: 100%;
    &.top_estrada{
      background-position:0 60%;      // <========= HERE
      height:88px;                       // <========= AND HERE
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...