CSS:为什么不透明度只适用于 children 而不是 parent 元素?
CSS: Why is opacity applying ONLY to the children and NOT to the parent element?
我已经设置了特定 parent 元素 (.container) 的不透明度。它不适用于容器,而仅适用于容器内部的 children (.donate-btn)(最终我希望相反的情况成立,因为 parent 具有降低的不透明度和children 是可靠的,因此在 SO 中有多个答案,但我没有看到任何相反的问题)。 .container
的 parent(#main) 有背景图片。
当我第一次开始使用不透明度时,parent div 显示应用的不透明度。出于某种原因,它不是,我不知道发生了什么变化。
这里是相关的CSS:
.container {
margin-right: 10%;
margin-left: 10%;
display: block;
padding: 30px;
padding: top 300px;
opacity: .5;
border: 2px solid black;
border-radius: 2em;
}
.donate-btn{
border: 2px solid black;
border-radius: 2em;
display: inline-block;
margin: 15px;
padding: 15px;
width: 200px;
height: 80px;
}
HTML:
<section id="main">
<div class="container">
<form id="sendDonation">
<input id='donation-amt' type="hidden" name="amount">
<button class='donate-btn' data-amt='25'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='50'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='100'>
<div class='amt'>0</div>
</button>
</form>
</div>
</section>
这是一个jsfiddle。
为了简单起见,我将背景设置为绿色(而不是图像)。
为什么 .container 的不透明度不变,只有 children?
我怎样才能改变 .container
的不透明度?
那是因为你的容器没有背景颜色——默认是透明的。
这种错觉使不透明度似乎不影响容器,实际上它会影响。
要清楚地看到不透明效果,请添加纯色背景:
#main {
/* background-image: url("img/donate-background.jpg"); */
background-color: green;
background-size: cover;
padding-top: 30px;
padding-bottom: 30px;
}
.container {
margin-right: 10%;
margin-left: 10%;
display: block;
padding: 30px;
padding: top 300px;
opacity: .5;
border: 2px solid black;
border-radius: 2em;
background: white;
}
.donate-btn {
border: 2px solid black;
border-radius: 2em;
display: inline-block;
margin: 15px;
padding: 15px;
width: 200px;
height: 80px;
}
<section id="main">
<div class="container">
<form id="sendDonation">
<input id='donation-amt' type="hidden" name="amount">
<button class='donate-btn' data-amt='25'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='50'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='100'>
<div class='amt'>0</div>
</button>
</form>
</div>
</section>
您的 .container
元素 具有不透明度,但是该元素内部(直接)没有 content/background/anything 使其不透明。
如果(例如)您将 .container
的背景设置为 red
,您可以看到它具有不透明度:
body {
background: white;
}
#main{
/* background-image: url("img/donate-background.jpg"); */
background-color: green;
background-size: cover;
padding-top: 30px;
padding-bottom: 30px;
}
.container {
margin-right: 10%;
margin-left: 10%;
display: block;
padding: 30px;
padding: top 300px;
opacity: 0.5;
border: 2px solid black;
border-radius: 2em;
background: red;
}
.donate-btn{
border: 2px solid black;
border-radius: 2em;
display: inline-block;
margin: 15px;
padding: 15px;
width: 200px;
height: 80px;
}
<section id="main">
<div class="container">
<form id="sendDonation">
<input id='donation-amt' type="hidden" name="amount">
<button class='donate-btn' data-amt='25'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='50'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='100'>
<div class='amt'>0</div>
</button>
</form>
</div>
</section>
我已经设置了特定 parent 元素 (.container) 的不透明度。它不适用于容器,而仅适用于容器内部的 children (.donate-btn)(最终我希望相反的情况成立,因为 parent 具有降低的不透明度和children 是可靠的,因此在 SO 中有多个答案,但我没有看到任何相反的问题)。 .container
的 parent(#main) 有背景图片。
当我第一次开始使用不透明度时,parent div 显示应用的不透明度。出于某种原因,它不是,我不知道发生了什么变化。
这里是相关的CSS:
.container {
margin-right: 10%;
margin-left: 10%;
display: block;
padding: 30px;
padding: top 300px;
opacity: .5;
border: 2px solid black;
border-radius: 2em;
}
.donate-btn{
border: 2px solid black;
border-radius: 2em;
display: inline-block;
margin: 15px;
padding: 15px;
width: 200px;
height: 80px;
}
HTML:
<section id="main">
<div class="container">
<form id="sendDonation">
<input id='donation-amt' type="hidden" name="amount">
<button class='donate-btn' data-amt='25'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='50'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='100'>
<div class='amt'>0</div>
</button>
</form>
</div>
</section>
这是一个jsfiddle。 为了简单起见,我将背景设置为绿色(而不是图像)。
为什么 .container 的不透明度不变,只有 children?
我怎样才能改变 .container
的不透明度?
那是因为你的容器没有背景颜色——默认是透明的。
这种错觉使不透明度似乎不影响容器,实际上它会影响。
要清楚地看到不透明效果,请添加纯色背景:
#main {
/* background-image: url("img/donate-background.jpg"); */
background-color: green;
background-size: cover;
padding-top: 30px;
padding-bottom: 30px;
}
.container {
margin-right: 10%;
margin-left: 10%;
display: block;
padding: 30px;
padding: top 300px;
opacity: .5;
border: 2px solid black;
border-radius: 2em;
background: white;
}
.donate-btn {
border: 2px solid black;
border-radius: 2em;
display: inline-block;
margin: 15px;
padding: 15px;
width: 200px;
height: 80px;
}
<section id="main">
<div class="container">
<form id="sendDonation">
<input id='donation-amt' type="hidden" name="amount">
<button class='donate-btn' data-amt='25'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='50'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='100'>
<div class='amt'>0</div>
</button>
</form>
</div>
</section>
您的 .container
元素 具有不透明度,但是该元素内部(直接)没有 content/background/anything 使其不透明。
如果(例如)您将 .container
的背景设置为 red
,您可以看到它具有不透明度:
body {
background: white;
}
#main{
/* background-image: url("img/donate-background.jpg"); */
background-color: green;
background-size: cover;
padding-top: 30px;
padding-bottom: 30px;
}
.container {
margin-right: 10%;
margin-left: 10%;
display: block;
padding: 30px;
padding: top 300px;
opacity: 0.5;
border: 2px solid black;
border-radius: 2em;
background: red;
}
.donate-btn{
border: 2px solid black;
border-radius: 2em;
display: inline-block;
margin: 15px;
padding: 15px;
width: 200px;
height: 80px;
}
<section id="main">
<div class="container">
<form id="sendDonation">
<input id='donation-amt' type="hidden" name="amount">
<button class='donate-btn' data-amt='25'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='50'>
<div class='amt'></div>
</button>
<button class='donate-btn' data-amt='100'>
<div class='amt'>0</div>
</button>
</form>
</div>
</section>