代码之家  ›  专栏  ›  技术社区  ›  deostroll

在另一个分区内整体应用一个分区并设置不透明度

  •  0
  • deostroll  · 技术社区  · 14 年前

    假设我有一个HTML对象树,如下所示:

    <div>
        <p>Text 1</p>
        <p>Text 2</p>
        <div></div>
    </div>
    

    我想让CSS淹没外部的内部分区。不过,我希望文本等看起来完好无损。我的想法是我可以设置一个背景颜色和不透明度的内部分区,而不影响文本。我该怎么做?

    编辑:强调我的观点: 我可以很好地设置外部分区的不透明度,但内部的文本也会淡出。我不想发生这种事

    5 回复  |  直到 14 年前
        1
  •  1
  •   Alex    14 年前

    可以将外部DIV设置为position:relative,然后将内部DIV设置为:

    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    

    把你想要的放在上面。它现在应该覆盖第一个分区中的所有内容。如果您希望文本显示在它上面,只需设置:

    div p {
       position: relative;
       z-index: 1;
    }
    
    div div {
       z-index: 0;
    }
    
        2
  •  0
  •   Randy the Dev    14 年前

    你是说像这样?

    div>div {
        background-color: red;
        opacity: 0.5;
    }
    

    它使用子选择器,因此只选择直接位于另一个DIV内的DIV。因为div几乎是最常见的HTML元素,所以我建议至少为它们中的一个指定一个类名。

    <div class="innerDiv"></div>
    

    然后你可以用 .innerDiv {} 在CSS样式表中。

        3
  •  0
  •   JamesStuddart    14 年前

    您将无法做到这一点,您需要做的是:

    <div class="maindiv">
        <p>Text 1</p>
        <p>Text 2</p>
    </div>
    
    <div class="floatingbkg"></div>
    

    并将不透明度应用于floatingbkg,然后将它们放在一起,将floatingdiv放在maindiv后面。

    我确实创建了一个jqueryplugin,但是我还没有完成它,它模拟了iPhone的弹出窗口。

    您将需要使用相对定位或这样的方式,以使潜水器彼此过度。

        4
  •  0
  •   OverLex    14 年前

    我不清楚你所说的“泛滥”是什么意思,但要实现这一点,你可以使用CSS规则hyerarchy:

    div {}
    

    影响所有分区

    div div{}
    

    影响其他分区内的所有分区

        5
  •  0
  •   whostolemyhat    14 年前

    使用RGBA-见 CSS-Tricks 举个例子。这会改变背景的不透明度,但不会改变文本的透明度。