悬停时的CSS缩放,叠加和边框之间的空间

时间:2016-05-26 13:17:32

标签: html css

当我在div上盘旋时,左边似乎有一个小间隙,右边是黑色边缘。这是div的左右两部分;

enter image description here

这是重现问题的小提琴和代码; https://jsfiddle.net/hqk54p9k/

HTML:

<div class="form">
    <div class="poster-list">
        <div class="poster">
            <div class="poster-overlay">
                HELLO
            </div>
            <div class="poster-image">
            </div>
        </div>
    </div>
</div>

CSS:

.form {
  position:absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 500px;
  background-color: black;
}

.poster {
  position: relative;
  display: inline-block;
  width: 16.66667%;
  padding-bottom: 25%;
  border: 4px solid transparent;
  vertical-align: top;

  transition: all .2s ease-in-out;
  overflow: hidden;

  &:hover {
    border: 4px solid #1599d6 !important;
    transform: scale(1.1);
  }

  .poster-image {
    background-color: red;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    position: absolute;
  }

  .poster-overlay {
    height: 50px;
    background-color: white;
    opacity: 1;
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    z-index: 1;
    text-align: center;
  }
}

.poster-list {
  margin: 20px;
}

这个问题的原因是什么?

1 个答案:

答案 0 :(得分:0)

怪异。这是一种视错觉。

我刚尝试将.poster-image { background-color: red; }颜色更改为green,然后就消失了。此外blue没有“空格”,只有red

设置background-color: red时(使用Chrome / Ubuntu),我看不到左侧有任何“间隙”,右侧只有黑色间隙。

修改

将CSS更改为此

.poster-image {
  ...
  border: 1px solid transparent;
  background-color: white;

  &:hover {
    outline: 4px solid #1599d6 !important;
    ...

如果border: 1px然后有一个微小的白色边框,效果确实

如果不存在border: 0px和微小的白色边框,则会产生效果。

当我使用浏览器缩放放大时,效果会增加大小。它仍然是一条很小的线,不到一个完整的像素宽。我认为从浏览器的抗锯齿到边缘是一个渲染问题。