【问题标题】:Why is my position: absolute div placed differently in Edge?为什么我的位置:绝对 div 在 Edge 中的位置不同?
【发布时间】:2019-04-27 00:10:24
【问题描述】:

我们正在尝试在图片的一角放置一个徽章。为此,我们使用父 <div> 作为包装器并在内部使用 <span>。到目前为止,它在 Chrome、Firefox 和 IE11 上运行良好,但在 MS Edge 中却没有按预期运行。似乎 Edge 计算的 right: 属性与其他属性非常不同。

结果如预期:

意外结果:

这是我的代码:

.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 的行为与其他浏览器有很大不同?

【问题讨论】:

  • 尝试删除-webkit-transform; Firefox 现在实现了它,IIRC。
  • @Pete 我尝试了 transform-origin: 20px 20px 并且在边缘和铬中仍然得到不同的结果
  • 这个怎么样:jsfiddle.net/po1rvmn7?
  • @Ry- 不幸的是,删除 -webkit-transform 并没有帮助

标签: css css-position microsoft-edge


【解决方案1】:

你可以像下面那样做不同的事情,在 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>

* 我不知道为什么...

更新以使用原始代码 sn-p:

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>

【讨论】:

  • 你改变了什么?一些 cmets / notes 会非常有帮助,比 I don't know why... 和一堆代码更好;)
  • @cale_b 正如我已经评论的那样,我只是做了不同的事情。你会注意到我的代码与 OP 代码无关,所以我改变了一切。我没有优势,也不知道是什么问题,但由于它似乎有效,我将其发布为 wiki 答案。如果您认为需要添加有用的信息,请随时编辑答案。
  • 我将在原始代码中编辑并添加需要更改的内容。
  • 这可能与@cale_b 评论的答案有关,但我还没有机会验证,所以我还没有将其添加到答案中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多