【问题标题】:How to remove jaggies?如何去除锯齿?
【发布时间】:2017-04-15 11:09:10
【问题描述】:

我的代码 - Fiddle

body{
  background: url('http://i.imgur.com/RECDV24.jpg');
  background-size: cover;
}
div{
  width: 150px;
  height: 150px;   
  background-image: radial-gradient(circle at 0 0, transparent 28px, tomato 28px);
}
<div></div>

如何去除锯齿?

谢谢你,我很乐意提供任何帮助!

【问题讨论】:

  • img { 图像渲染:优化速度; /* 停止平滑,给我速度 / 图像渲染:-moz-crisp-edges; / Firefox / 图像渲染:-o-crisp-edges; / Opera / 图像渲染:-webkit-optimize-contrast; / Chrome(最终是 Safari)/ image-rendering: pixelated; / Chrome / 图像渲染:优化对比度; / CSS3 提议/ -ms-interpolation-mode:nearest-neighbor; / IE8+ */ }
  • @RïshïKêshKümar crispEdges 适用于 SVG,但无论如何可能会击败提问者试图做的事情。其他属性也是如此。

标签: html css background-image css-shapes radial-gradients


【解决方案1】:

采用不同的方法,在圆形元素上使用大号 box-shadow:

body {
  background: url('https://i.imgur.com/RECDV24.jpg');
  background-size: cover;
}

.bitten {
  height: 150px;
  overflow: hidden;
  position: relative;
  width: 150px;
}

.bitten::before {
  border-bottom-right-radius: 100%;
  box-shadow: 0 0 0 1000px tomato;
  content: '';
  height: 28px;
  position: absolute;
  width: 28px;
  z-index: -1;
}
<div class="bitten"></div>

【讨论】:

    【解决方案2】:

    在某些浏览器中,您可以通过在渐变中不使用锐边来防止出现锯齿。所以比起transparent 28px, tomato 28px,你可以让颜色之间的过渡更平滑一些,比如1px。

    body{
      background: url('https://i.imgur.com/RECDV24.jpg');
      background-size: cover;
    }
    div{
      width: 150px;
      height: 150px;   
      background-image: radial-gradient(circle at 0 0, rgba(255,99,71,0) 28px, rgba(255,99,71,255) 30px);
    }
    <div></div>

    但这并不适用于任何地方。如需更可靠的方法,请参阅其他答案。

    【讨论】:

    • 无论两者之间有多少像素,Chrome 总能设​​法让它看起来参差不齐……
    • 嗯,我不知道为什么我总是认为 Chrome 和我自己的浏览器一样好。感谢您的警告!
    • 是的,我实际上希望它能够工作,现在我必须重写一些使用这种方法的页面:(Zoomed-in Chrome messing this up at 6px
    猜你喜欢
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多