为什么我的位置:绝对div在Edge中的位置不同?

问题描述 投票:8回答:1

我们正试图在图片的角落贴上徽章。为此我们使用父<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行为与其他浏览器有什么不同?

css css-position microsoft-edge
1个回答
3
投票

你可以像下面这样做,它似乎在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()and和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>
© www.soinside.com 2019 - 2024. All rights reserved.