代码之家  ›  专栏  ›  技术社区  ›  Darkowic

缩放元素时,Firefox上看不到边框的一部分

  •  0
  • Darkowic  · 技术社区  · 6 年前

    我正在按比例缩放图像以使用建议的解决方案填充所有可用空间 here . 在Chrome上一切正常,但在Firefox上Border有一个问题:

    铬: enter image description here

    Firefox: enter image description here

    示例代码可用 here (codesandbox) . 我想了解Firefox上发生了什么以及如何解决它。

    var wrapper = document.querySelector('#scaler');
    var iteration = 20
    var direction = 1;
    setInterval(function() {
      direction = iteration > 40 ? -1 : iteration < 20 ? 1 : direction;
      iteration+=direction;
      wrapper.style.transform = "scale(" + (iteration * .01) + ")"
    }, 1000)
    .App {
      font-family: sans-serif;
      text-align: center;
      margin-top: 50px;
    }
    
    .root {
      width: 100%;
      text-align: center;
      position: relative;
      -webkit-flex: 1 1 auto;
      -ms-flex: 1 1 auto;
      flex: 1 1 auto;
      max-height: 40vh;
      height: 100vh;
    }
    
    .image-wrapper {
      height: 100%;
      width: 100%;
      position: absolute;
      padding: 0 10px;
      box-sizing: border-box;
      will-change: opacity, transform;
    }
    
    .overlay-wrapper {
      position: absolute;
      left: 50%;
      top: 50%;
      -webkit-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
      transform: translate(-50%, -50%);
      -webkit-transform-origin: center center;
      -ms-transform-origin: center center;
      transform-origin: center center;
      border: 1px magenta solid;
    }
    
    .overlay-wrapper img {
      display: block;
    }
    <div id="root">
      <div class="App">
        <div class="root">
          <div class="image-wrapper" id="scaler" style="transform: scale(.2);">
            <div class="overlay-wrapper"><img alt="" src="https://dummyimage.com/1420x802/ccc/333"></div>
          </div>
        </div>
      </div>
    </div>
    0 回复  |  直到 6 年前
        1
  •  0
  •   yunzen    6 年前

    这个解决方案怎么样?

    .container {
      width: auto;
      height: 100vh;
      max-width: 100vw;
      max-height: 100vh;
      margin: 0 auto;
      overflow: hidden;
      position: relative;
    }
    .container img {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      display: block;
      max-width: 100%;
      box-sizing: border-box;
      max-height: 100%;
      height: auto;
      width: auto;
      border: 1px solid grey;
      margin: auto;
    }
    
    body {
      margin: 0;
      padding: 0;
    }
    
    /* for demonstration purpose */
    body {
      animation: mw 10s alternate infinite linear;
      background: gold;
      margin: 0 auto;
    }
    
    
    @keyframes mw {
      from {
        width: 400px;
      }
      to {
        width: 200px;
      }
    }
    <div class="container">
      <img src="https://dummyimage.com/1420x802/ccc/333" alt="">
    </div>

    请参阅此代码笔以获取未经授权的版本: https://codepen.io/HerrSerker/pen/WmrZZa?editors=1100

    你也应该看到这个答案: https://stackoverflow.com/a/26967278/476951