- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个带有阴影的夜晚行星的球形图像,以在浏览器中渲染以用于模拟网页,但我一直在与一个我似乎无法弄清楚的奇怪视觉问题作斗争。
这是在 Chrome 中显示的 SVG 图像片段(这也发生在 IE 中),然后放大 3 倍:
您会注意到,在昼/夜终结符的正上方,有一条较暗的微弱水平带,宽度约为其在终结符上方的距离的 1/3。那不应该在那里,我无法弄清楚它为什么在那里或如何摆脱它。
以下是 HTML 片段中的 SVG 代码,以便于查看:
<div style="position:absolute; z-index:1; margin:15px;
width:640px; height:640px;
background-color:black">
<svg id="svgEa" style="width:100%; height:100%;" viewBox="-5000 -5000 10000 10000" preserveAspectRatio="xMidYMid meet" clip-path="url(#svgEaClip)" transform="scale(1.0,1.0)" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- NOTE: All internal units are in KM (or %) -->
<defs id="defsEa">
<clipPath id="svgEaClip">
<rect width="100%" height="100%" />
</clipPath>
<linearGradient id="lgdEaSphere">
<stop style="stop-color:#ffffff;stop-opacity:1.00;" offset="0.00" id="stopEarthCenter" />
<stop style="stop-color:#dfffef;stop-opacity:1.00" offset="0.30" id="stopEarthInner" />
<stop style="stop-color:#91ffc8;stop-opacity:1.00" offset="0.31" id="stopEarthMid" />
<stop style="stop-color:#00A064;stop-opacity:1.00" offset="0.95264" id="stopEarthOuter" />
<stop style="stop-color:#44ffff;stop-opacity:0.66" offset="0.95264" id="stopAirInner" />
<stop style="stop-color:#44ffff;stop-opacity:0.10" offset="1.00" id="stopAirOuter" />
</linearGradient>
<radialGradient id="rgdEaSphere" xlink:href="#lgdEaSphere"
gradientUnits="userSpaceOnUse"
cx="0" cy="0"
fx="0" fy="0"
r="3339.05"
/>
<linearGradient id="lgdEaNightSide"
x1="0%" y1="0%" x2="0%" y2="100%"
spreadMethod="pad" >
<stop style="stop-color:#000000;stop-opacity:0.7;" offset="0.00" id="stopEaMidnight" />
<!-- this stop seems to cause the artifact -->
<stop style="stop-color:#000000;stop-opacity:0.6;" offset="0.99" id="stopEaDusk" />
<stop style="stop-color:#000000;stop-opacity:0.5;" offset="1.00" id="stopEaTerminator" />
</linearGradient>
</defs>
<g id="gEaAll" transform="scale(1.2,1.2)" >
<g id="gEaSunFacing" >
<!-- contains everything that stays oriented with the Sun -->
<circle
id="cEarthAir"
cx="0" cy="0" r="3339.05"
style="display:inline;fill-opacity:1;fill:url(#rgdEaSphere)" />
<!-- overlay to give Earth a night side. -->
<path id="pNight"
style="stroke:none; fill:url(#lgdEaNightSide)"
d="M -3189.05,0
A 3189.05,15945.25 0 1,1 3189.05,0
Z"
/>
</g>
</g>
</svg>
</div>
#stopEaDusk
在第 33 行,在线性渐变中
#lgdEaNightSide
,用作覆盖路径
#pNight
的填充.这种伪影可能看起来很微弱,但当没有缩小 300% 时,它是真实的并且更加明显。我的实际 SVG 也有一个免费的
#pDay
我删除的覆盖层以简化代码。但是当它被添加时,我得到了三个暗带伪像,一个在上面,一个在另一边的相应位置(我有另一个黎明/黄昏停止),一个在两个叠加层相遇的中点.当它们三个都可见时,它看起来很可怕,所以我不能忽略它。
lgdEaNightSide
是为了一个明确的效果而写的,它似乎正在做,但它也产生了一个不想要的副作用,这不是故意的,据我所知,SVG 不应该发生。
最佳答案
代码没有任何问题。
出现 strip 是因为显示器没有足够的颜色来表示细微的变化。您正在尝试在大范围内更改 10% 的不透明度,这是大多数显示器无法实现的。
您可以通过切换屏幕来确定这是显示器问题。根据显示器的质量和像素密度,您会看到略有不同的结果。一些浏览器使用抖动,通过像素化的权衡来减少色带。
解决这个问题的唯一方法是像普林斯那样引入更多的颜色变化。
另一篇文章的答案很好地解释了这个概念。值得一读,但我将引用解决方案以节省人们的点击次数。 https://stackoverflow.com/a/11274627/6794536
If you want to make it less obvious with your current 24-bit color monitor, you can:
Change your design to introduce a subtle color shift into your gradient (e.g. from dark blue to gray-green). This causes different RGB channels bits can transition at different times, breaking up your bands into a smaller differentiated colors.
Change your design to increase your dynamic range (e.g. from pure white to pure black) so that you have more color bars to work with.
Change your design to reduce the overall distance that the gradient occurs over, reducing the widths of the bands.
…or some combination of the above.
<div style="position:absolute; z-index:1; margin:15px;
width:640px; height:640px;
background-color:#0c0c26">
<svg id="svgEa" style="width:100%; height:100%;" viewBox="-5000 -5000 10000 10000" preserveAspectRatio="xMidYMid meet" clip-path="url(#svgEaClip)" transform="scale(1.0,1.0)" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- NOTE: All internal units are in KM (or %) -->
<defs id="defsEa">
<clipPath id="svgEaClip">
<rect width="100%" height="100%" />
</clipPath>
<linearGradient id="lgdEaSphere">
<stop style="stop-color:#ffffff;stop-opacity:1.00;" offset="0.00" id="stopEarthCenter" />
<stop style="stop-color:#dfffef;stop-opacity:1.00" offset="0.30" id="stopEarthInner" />
<stop style="stop-color:#91ffc8;stop-opacity:1.00" offset="0.31" id="stopEarthMid" />
<stop style="stop-color:#00A064;stop-opacity:1.00" offset="0.95264" id="stopEarthOuter" />
<stop style="stop-color:#44ffff;stop-opacity:0.66" offset="0.95264" id="stopAirInner" />
<stop style="stop-color:#44ffff;stop-opacity:0.10" offset="1.00" id="stopAirOuter" />
</linearGradient>
<radialGradient id="rgdEaSphere" xlink:href="#lgdEaSphere"
gradientUnits="userSpaceOnUse"
cx="0" cy="0"
fx="0" fy="0"
r="3339.05"
/>
<linearGradient id="lgdEaNightSide" x1="0%" y1="0%" x2="0%" y2="100%" spreadMethod="pad">
<stop style="stop-color:#00033e;stop-opacity:0.7;" offset="0.00" id="stopEaMidnight"></stop>
<!-- this stop seems to cause the artifact -->
<stop style="stop-color:#090d24;stop-opacity:0.6;" offset="0.99" id="stopEaDusk"></stop>
<stop style="stop-color:#000;stop-opacity:0.5;" offset="1.00" id="stopEaTerminator"></stop>
</linearGradient>
</defs>
<g id="gEaAll" transform="scale(1.2,1.2)" >
<g id="gEaSunFacing" >
<!-- contains everything that stays oriented with the Sun -->
<circle
id="cEarthAir"
cx="0" cy="0" r="3339.05"
style="display:inline;fill-opacity:1;fill:url(#rgdEaSphere)" />
<!-- overlay to give Earth a night side. -->
<path id="pNight"
style="stroke:none; fill:url(#lgdEaNightSide)"
d="M -3189.05,0
A 3189.05,15945.25 0 1,1 3189.05,0
Z"
/>
</g>
</g>
</svg>
</div>
关于html - 停止时 SGV 梯度变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61259589/
使用 Vanilla JS,我希望执行如下图所示的操作,其中除了特定部分(最好是椭圆形)之外,大部分 Canvas 都变暗。 我可以通过在前面绘制半透明颜色来轻松使 Canvas 变暗,但我不确定如何
我想将 UIView “变暗”一定程度。现在,我正在像这样进行变暗: UIView *overlay = [[UIView alloc] initWithFrame:mainView.bounds];
我有一个 TCard(TGraphicControl 组件)并且它有一个属性背景(TP图片) 我希望能够使背景变暗或变暗。因此,如果我可以在游戏中玩卡片,那么它是正常的。如果我不能在游戏中玩这张卡,那
如果您熟悉 iTerm2 应用程序,您就会知道您可以像 vim 一样 Split View,并且不活动的 View 会“变暗”。 我通常在 vim 中使用三个垂直 Split View,例如,通过将背
我正在尝试创建一些 jQuery 函数,将对象 bgcolor 更改为更亮或更暗(您将参数设置为色调差异)。我认为它应该可以工作,但是它破裂了。 $.fn.changeBg = function(di
我有两个 fragment ,其中一个具有完整 View 的大小。另一个 fragment 较小并放置在其上方。如何使第一个 fragment 变暗? 最佳答案 在 fragment XML 文件中,
我在一个 Pane 中使用 irssi 和 nicklist.pl在另一个中,每当我在 irssi Pane 中时,昵称列表 Pane 就会变暗: 如何阻止非事件 Pane 变暗? 最佳答案 找到了!
我试图做的是使 UIImageView 更暗,以便图像结果顶部的按钮和 View 。我想给它一个在 ios6 中用户使用 Facebook 分享时给出的效果。它后面的所有内容都变得更暗,但它是可见的。
在单击登录按钮后出现的进度条微调器中,我希望当微调器在屏幕上可见时微调器后面的元素变暗或变暗。我的布局文件目前看起来像这样:
在我的应用程序中,我有一个带有进度条的刷新功能。进度条位于应该刷新的 TextView 上。问题是:如果 textview 中有很多文本,你就看不到进度条了。是否可以在 onPreExcute/onP
操作表自然会使背景 View 稍微变灰,但并不明显。我想让它变得更暗。 还有,我要怎么做才能让您无法点击其他地方?现在,如果您在操作表外部单击,操作表就会消失。我希望这种情况不会发生 - 您必须按下“
我想创建一个主页,其背景图像填充整个页面高度。在此之上,我需要添加白色文本和其他元素。 This website是我想要实现的一个例子。 我想要的: 外观: 使用下面的 CSS,文本看起来非常模糊。
我一直在开发一款增强现实游戏,并且正在实现我的暂停菜单。我的暂停菜单完全可用,UIView 显示为 ARSKView 之上的另一层。但是,我想在显示暂停菜单时使 ARSKView 变暗,然后在关闭暂停
我在 View 的右上角有一个菜单按钮 (+),当按下按钮时,其他几个按钮会下拉供用户选择。 我想有效地调暗所有这些按钮下方的所有 View 。 我目前的做法是在所有内容之上设置一个透明 View ,
我是网络开发的半菜鸟,但我不是在使用错误的术语进行搜索,就是我不是一个非常熟练的 googler。 我正在制作一个单页网站,并且想要这样的效果,即当向下滚动新部分进入 View 时,新部分会变暗。我可
我的应用程序的背景是一个不透明的 UIImageView。在某些情况下,我想以动画方式将它从全亮度调暗到大约 50%。目前我降低了 View 的 alpha 属性并且效果很好。因为 View 后面没有
我需要向用户显示 alert 并且我希望它很漂亮。所以我使用 Bootstrap 的警报类,并像这样向用户显示 div: Some text 这段代码只显示了一个div。我想要的是将所有东
我需要在触摸 UIImageView 时使它变暗, 几乎就像跳板(主屏幕)上的图标一样。 我应该添加具有 0.5 alpha 和黑色背景的 UIView 吗?这看起来很笨拙。我应该使用图层还是其他东西
我正在将图像加载到 BitmapImage 中并将其转换为 PixelColor 的数组。我想要的是能够操纵这些像素中的一些,使它们更亮/更暗/透明,但我似乎无法让它工作。将其设置为某种颜色确实有效,
我找到了 change the opacity of a View 的方法,但我实际上需要使 View 变暗。我最好的办法是在上面放一个透明的黑色矩形,然后慢慢增加矩形的不透明度。 你知道更好的方法吗
我是一名优秀的程序员,十分优秀!