【问题标题】:See background color only through circle center仅通过圆心查看背景颜色
【发布时间】:2015-09-02 00:35:01
【问题描述】:

我有一个黄色背景和一个没有背景颜色但带有灰色边框的圆圈。如果我希望那个圆圈之外的所有东西都是白色的,我会怎么做,除了圆圈内部你可以从下面的 div 中看到黄色背景的所有东西?

我不需要解决方法来用图像替换 css 圆圈。我需要找出一个 CSS 和如果需要 JS 解决方案。

HTML

<div id="background">
    <div class="circle">
    </div>
</div>

CSS

#background{
    width:100%;
    height:100%;
    position:absolute;
    top:0;
    left:0;
    background:#ffff99;
    white-space: nowrap;
    text-align:center;
}
#background:before{
    content: "";
    display: inline-block;
    vertical-align: middle;
    height: 100%;
}
.circle{
    width:100px;
    height:100px;
    position:relative;
    border-radius:50%;
    border:2px solid #999;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
}

jsFiddle 进行测试。

预期输出:

越来越近

..使用径向渐变。现在唯一剩下的就是保留 圆形,而 div 的高度和宽度为 100%。

jsFiddle

更新 2

这是我想要达到的目标,但不是我想象中的目标 它...有没有更好的方法来获取this

【问题讨论】:

  • 为什么不直接更改background-color 值?你有预期输出的图像/屏幕截图吗?
  • @ManojKumar 更新了预期输出的代表性图像:)

标签: jquery css


【解决方案1】:

这里有点 hack.. 只是在圆圈中添加了一个 巨大 边框.. 然后将其放置在 #background div 内..

这里是更新的小提琴:http://jsfiddle.net/jormaechea/n3c1t0ee/6/

#background {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  background: #ffff99;
  white-space: nowrap;
  text-align: center;
  overflow: hidden;
}
#background:before {
  content: "";
  display: inline-block;
  vertical-align: middle;
  height: 100%;
}
.circle {
  width: 100px;
  height: 100px;
  position: relative;
  border-radius: 50%;
  border: 1000px solid #999;
  display: inline-block;
  vertical-align: middle;
  white-space: normal;
  position: relative;
  left: -900px;
  top: -900px;
}
<div id="background">
  <div class="circle">
  </div>
</div>

【讨论】:

  • 唯一的问题是我无法将圆居中:-?
  • 好吧,我用你的方法解决了我的问题并做了一些工作,所以我想我会把你的答案标记为正确的:)祝你有美好的一天:)
【解决方案2】:

尝试为 .circle 创建父元素,利用 z-Index ,将 .circle background 设置为 transparent !important

`background:transparent;`

#background{
    width:100%;
    height:100%;
    position:absolute;
    top:0;
    left:0;
    background:#000;
    white-space: nowrap;
    text-align:center;
    z-Index:0;
}
#background:before{
    content: "";
    display: inline-block;
    vertical-align: middle;
    height: 100%;
}

.wrap {
    left:40%;
    top:100px;
    position:absolute;
    z-Index:10;
    background:#fff !important;
    width:100px;
    height:100px;
    border-radius:50%;
}
.circle{
    top:-2px;
    left:-2px;
    width:100px;
    height:100px;
    position:absolute;
    border-radius:50%;
    border:2px solid #999;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    background:transparent !important;
}
<div id="background">
    <div class="wrap">
        abc
    <div class="circle">
    </div>
    </div>
</div>

jsfiddle http://jsfiddle.net/n3c1t0ee/3/

【讨论】:

  • 您好!好吧,它已经是了,未定义它一开始有点透明......我想要的是它周围的所有东西都是白色的,除了那个圆圈,所以我可以通过它看到#background div颜色。
  • 类似这样的东西:jsfiddle.net/brilliancedisplay/n3c1t0ee/2 但要保持圆圈的形状。
  • 这行不通..你只有 2 个宽度和高度相同的 div 一个在另一个下面...这与在初始圆圈中添加背景颜色相同。我需要从#background div 中看到黄色并保持 100% 的宽度和高度。请参阅我的答案更新中的 jsfiddle。我现在只需要保持圆形......我不知道如何。
  • @Alin "这不起作用..你只有 2 个宽度和高度相同的 div 一个在另一个下面...这与在初始圆圈中添加背景颜色相同. 我需要从#background div" 中看到黄色吗? #background div 的黄色是什么颜色?在 Question 处的图片,#background div 背景设置为黑色?
  • 这只是一个从后面显示像素的 Photoshop 模拟。在这里,来自这里的黄色:jsfiddle.net/brilliancedisplay/n3c1t0ee/2 但是当窗口不是方形时,圆圈会不断改变它的形状,我需要它保持一个圆圈,但我还需要
【解决方案3】:

这就是我想出的,我用透明的radial-gradient 打洞,用pointer-events: none 确保你可以选择图层下面的东西。然后我将文本对齐到 div 的中间。看看吧:

.background {
  width: 600px;
  height: 600px;
  background: deepskyblue;
}
.circle {
  width: inherit;
  height: inherit;
  background: -moz-radial-gradient(transparent 100px, rgba(0, 0, 0, 1) 100px);
  background: -webkit-radial-gradient(transparent 100px, rgba(0, 0, 0, 1) 100px);
  background: -ms-radial-gradient(transparent 100px, rgba(0, 0, 0, 1) 100px);
  background: -o-radial-gradient(transparent 100px, rgba(0, 0, 0, 1) 100px);
  pointer-events: none;
  display: table;
}
.circle p {
  display: table-cell;
  vertical-align: middle;
  text-align: center;
}
<div class="background">
  <div class="circle">
    <p>Lorem ipsum dolor sit amet</p>
  </div>
</div>

【讨论】:

  • 您刚刚复制了我的代码并添加了方形背景!这如何满足我的要求?我说'高度和宽度都是100%。'我需要#background 100% 的宽度和高度。不是正方形,就像我说的那样,您没有“想出它”,您只是复制并更改了背景大小和颜色...:|
  • 对不起,先生,但我在编写代码时什至没有看到您的 Update 2 小提琴
  • 第一次更新中也有同样的事情:)) 抱歉,如果你在我的位置,你会不会想到同样的事情? :)) 祝你有美好的一天,谢谢。
【解决方案4】:

我给圆圈加了一个白色阴影

box-shadow: 0px 0px 0px 1000px white;

#background{
    width:100%;
    height:100%;
    position:absolute;
    top:0;
    left:0;
    background:#ffff99;
    white-space: nowrap;
	text-align:center;
}
#background:before{
    content: "";
    display: inline-block;
    vertical-align: middle;
    height: 100%;
}
.circle{
    width:100px;
    height:100px;
    position:relative;
    border-radius:50%;
    border:2px solid #999;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    box-shadow: 0px 0px 0px 1000px white;
}
<div id="background">
    <div class="circle">
    </div>
</div>

【讨论】:

    猜你喜欢
    • 2016-03-18
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多