Почему моя позиция: абсолютный div по-разному размещается в Edge? - PullRequest
8 голосов
/ 26 апреля 2019

Мы пытаемся разместить значок в углу картинки. Для этого мы используем родителя <div> в качестве оболочки и <span> внутри. Пока он работает нормально для Chrome, Firefox и IE11, но в MS Edge работает не так, как ожидалось. Похоже, Edge вычисляет свойство right:, очень отличающееся от других.

Результат, как и ожидалось:
enter image description here

Неожиданный результат:
enter image description here

Вот мой код:

.parent {
  width: 200px;
  height: 200px;
  border: 1px solid black;
  position: relative;
  overflow: hidden;
}

.child {
  background-color: #e2001a;
  position: absolute;
  right: -65px;
  width: 220px;
  height: 50px;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
  padding-left: 100px;
  display: table;
  z-index: 10;
  color: white;
  text-align: center;
  line-height: 1.2;
}
<div class="parent">
  <span class="child">Some cool text</span>
</div>

Я что-то не так делаю, или поведение Edge сильно отличается от других браузеров?

1 Ответ

3 голосов
/ 26 апреля 2019

Вы можете сделать это по-другому, как показано ниже, на Edge вроде бы нормально *

.parent {
  width: 200px;
  height: 200px;
  border: 1px solid black;
  position: relative;
  overflow: hidden;
}

.child {
  background-color: #e2001a;
  position: absolute;
  top: 0;
  left: -20px;
  right: -20px;
  height: 50px;
  text-align: center;
  transform: translateX(30%) rotate(45deg) translateY(70%);
  z-index: 10;
  color: white;
  text-align: center;
  line-height: 1.2;
}
<div class="parent">
  <span class="child">Some cool text</span>
</div>

* Не знаю почему ...

Обновление для работы с оригинальным фрагментом кода:

transform необходимо изменить, как указано выше, а translateX() и translateY() необходимо немного настроить для работы.

Вот код, который работает в Chrome, Firefox, Edge и IE11:

.parent {
  width: 200px;
  height: 200px;
  border: 1px solid black;
  position: relative;
  overflow: hidden;
}

.child {
  background-color: #e2001a;
  position: absolute;
  right: -65px;
  width: 220px;
  height: 50px;
  transform: translateX(10%) rotate(45deg) translateY(100%); //wokring with translateX and translateY instead of just rotate
  display: table;
  z-index: 10;
  color: white;
  text-align: center;
  line-height: 1.2;
}
<div class="parent">
  <span class="child">Some cool text</span>
</div>
...