<div>标签的透明背景CSS

11

对于那些不能等待的人,Fiddle

我在CSS中遇到了这个问题。 HTML和CSS代码的结构如下所示

HTML:

<div class="one">
    <div class="two">
        <div class="three">

        </div>
    </div>
</div>

CSS:

.one{
    width: 500px;
    height: 500px;
    background: url('http://www.moonlightcompanies.com/wp-content/uploads/2013/01/6973_MOONF-PomegranatesOnTree-8536-1.jpg');
    background-size: cover;
    background-repeat: no-repeat;
    padding: 20px;
}

.two{
    width: 300px;
    height: 300px;
    background: blue;
    padding: 20px;
}

.three{
    width: 200px;
    height: 200px;
    background: transparent;
    padding: 20px;
    border: 5px solid yellow;
}
我的问题是如何使<div class="three"></div>的背景透明,并与<div class="one"></div>的背景混合。我希望我的期望输出结果像附加的图片一样。这可能吗?

2
背景是透明的,但它对其父元素也是透明的,其父元素的背景颜色是蓝色。考虑“切换”div,second div将成为透明的,而third div将成为蓝色背景的。 - Ofir Baruch
三的背景是透明的,但二的背景不是透明的。 - ketan
这是相关的:https://dev59.com/8Ibca4cB1Zd3GeqPRBL2 - web-tiki
请问为什么您没有使用堆栈片段来发布您的代码呢?您甚至将HTML与CSS分开,将其集成起来只需要几秒钟。考虑使用它而不是使用像jsfiddle这样的外部服务。 - Bakuriu
6个回答

14

你可以尝试像这样做:示例

.three{
    width: 200px;
    height: 200px;
    background: transparent;
    padding: 20px;
    border: 5px solid yellow;
    outline:solid 100px rgba(0,0,255,.5);
}

根据您的要求更新边框值。

更新演示

.three {
    background: transparent;
    border: solid blue;
    margin: 10px 0px;
    border-width:20px 40px 40px 20px;
}
.inner {
    outline: 5px solid yellow;
    width: 200px;
    height: 60px;
    margin:0;
    padding: 20px;
}

这个很好用,先生 :) 我还有一个问题。我更新了我的fiddle http://jsfiddle.net/johnsemblante/ouy9thkk/5/ 如果我有那种结构怎么办?我该如何处理呢?:) 不管怎样,非常感谢您的回答,我有一些想法但还有一些问题值得研究:) 先生,提前谢谢您。 - John
太棒了 :) 非常感谢您。祝您有美好的一天 :) - John
很高兴我的回答对您有所帮助 :) - G.L.P
也许这些内容也能帮到你:CSS混合模式基础,以及检查浏览器兼容性的caniuse混合模式 - Usman Arshad
良好的轮廓使用 +1!您可能可以提到box-shadow可以产生相同的输出,并在四个方向上提供对蓝色部分宽度的更多控制。 - web-tiki

4

3

根据您更新的fiddle:https://jsfiddle.net/ouy9thkk/14/

我使用了盒子阴影来达到预期的效果。

HTML

<div class="one">
    <div class="two">
        <div class="three"></div>
        <div class="three"></div>
        <div class="three"></div>
    </div>
</div>

CSS

.one{
    width: 800px;
    height:800px;
    background: url('http://www.moonlightcompanies.com/wp-content/uploads/2013/01/6973_MOONF-PomegranatesOnTree-8536-1.jpg');
    background-size: cover;
    background-repeat: no-repeat;
    padding: 20px;
}

.two{
    width: 300px;
    height: 300px;
    padding: 20px;
}

.three{
    width: 200px;
    height: 80px;
    background: transparent;
    padding: 20px;
    margin-bottom:30px;
    border: 5px solid yellow;
    box-shadow: 10px 0px 0 30px blue
}

3
尝试这个Fiddle
.one{
    width: 500px;
    height: 500px;
    background: url('http://www.moonlightcompanies.com/wp-content/uploads/2013/01/6973_MOONF-PomegranatesOnTree-8536-1.jpg');
    background-size: cover;
    background-repeat: no-repeat;
    padding: 20px;    
}
.blue{
    position: relative;
    width: 200px;
    height: 200px;
    border: 1px solid blue; 
    border-width: 20px 115px 65px 20px;
}
.yellow{
    width: 95%;
    height: 95%;
    border: 5px solid yellow;
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;
    margin: auto;    
}

2

在这种特殊情况下,我能找到的最接近的解决方案是:

.two{
width: 250px;
height: 250px;
background: trasparent;
padding: 0px;
border-top: 20px solid blue;
border-right: 60px solid blue;
border-bottom: 60px solid blue;
border-left: 20px solid blue;
}

JSFiddle


这也可以,先生 :) 我还有一个问题。我已经更新了我的 fiddle jsfiddle.net/johnsemblante/ouy9thkk/5 如果我有那种结构怎么办?我该怎么做呢?:) 无论如何,感谢您的答案 :) 先生,提前致谢。 - John

-1
尝试这个例子:()
jsfiddle.net/MxspA/6/

请使用类似以下示例的矩形图像,其中应该从中心透明。

jsfiddle.net/MxspA/6/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接