【问题标题】:cover only a specific div with another div [duplicate]仅用另一个 div 覆盖特定 div [重复]
【发布时间】:2020-10-08 13:31:51
【问题描述】:

我试图仅将叠加层放在预览 div 上。 This question 有一个有用的代码,但覆盖覆盖了完整的#step3 div。 我希望它只涵盖#preview 之一。否则底部的按钮将无法点击。显然有很多类似的问题,但这里的问题不是如何制作叠加层,而是如何将叠加层仅放在特定的 div 上。

/*overlay per preview form*/
#preview > .container {
    width: 80% !important;
    margin: 0 auto;
    border: 1px solid #e64646;
    margin-top: 20px;
}
.overlay {
    opacity:0.2;
    filter: alpha(opacity = 0.2);
    position:absolute;
    top:0; bottom:11%; left:0; right:0;
    display:block;
    z-index:2;
    background:#09f;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet" />
<div class="container">
    <div class="tab-pane" role="tabpanel" id="step3">
        <h1>Anteprima del tuo form: <small>ecco come lo visualizzeranno gli utenti</small></h1>
        <div id="preview">
            <div class="container">
                <div class="page-header">
                    <h1>Google: <small>Compila un form</small></h1>
                </div>
                <div class="row">
                    <div class="col-md-12">
                        <form name="form_3" method="post" class="form-horizontal">
                            <div class="well">Qual � il tuo nome di battesimo?</div>
                            <div class="form-group"><label class="col-md-2" for="nome">nome</label>
                                <div class="col-md-10"><input type="text" class="form-control" name="nome"> </div>
                            </div>
                            <div class="well">Qual � il tuo cognome? Per le donne il cognome da nubile</div>
                            <div class="form-group"><label class="col-md-2" for="cognome">cognome</label>
                                <div class="col-md-10"><input type="text" class="form-control" name="cognome"></div>
                            </div>
                            <div class="well">Sei d'accordo ad essere contattato per ricevere informazioni sui nuovi progetti che partiranno?</div>
                            <div class="form-group">
                                <div class="col-md-10 col-sm-offset-2">
                                    <div class="radio"><label><input type="radio" name="Consenso" value="Si">Si</label></div>
                                    <div class="radio"><label><input type="radio" name="Consenso" value="No">No</label></div>
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-sm-offset-2 col-sm-10">
                                    <button type="submit" class="btn btn-default">Invia</button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
                <div class="overlay"></div>
            </div>
        </div>
        <button type="button" class="btn standard-button" id="submit3">Conferma</button>
        <button type="button" class="btn standard-button" id="back-1">Modifica</button>
        <button type="button" class="btn secondary-button back">Annulla</button>
    </div>
</div>

【问题讨论】:

    标签: html css


    【解决方案1】:

    你已经很接近了,为了让 position absolute 工作,父母需要 position relative 让它留在里面而不是溢出到页面的其余部分

    /*overlay per preview form*/
          #preview > .container {
              width: 80% !important;
              margin: 0 auto;
              border: 1px solid #e64646;
              margin-top: 20px;
          }
        .overlay {
            opacity:0.2;
            filter: alpha(opacity = 0.2);
            position:absolute;
            top:0; bottom:11%; left:0; right:0;
            display:block;
            z-index:2;
            background:#09f;
        }
        #preview{
          position: relative;
        }
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet"/>
    <div class="container">
      <div class="tab-pane" role="tabpanel" id="step3">
        <h1>Anteprima del tuo form: <small>ecco come lo visualizzeranno gli utenti</small></h1>
        <div id="preview">
          <div class="container">
                  <div class="page-header">
                <h1>Google: <small>Compila un form</small></h1>
            </div>
            <div class="row">
                <div class="col-md-12">
                    <form name="form_3" method="post" class="form-horizontal">
                        <div class="well">Qual � il tuo nome di battesimo?</div><div class="form-group"><label class="col-md-2" for="nome">nome</label><div class="col-md-10"><input type="text" class="form-control" name="nome"></div></div><div class="well">Qual � il tuo cognome? Per le donne il cognome da nubile</div><div class="form-group"><label class="col-md-2" for="cognome">cognome</label><div class="col-md-10"><input type="text" class="form-control" name="cognome"></div></div><div class="well">Sei d'accordo ad essere contattato per ricevere informazioni sui nuovi progetti che partiranno?</div><div class="form-group"><div class="col-md-10 col-sm-offset-2"><div class="radio"><label><input type="radio" name="Consenso" value="Si">Si</label></div><div class="radio"><label><input type="radio" name="Consenso" value="No">No</label></div></div></div>                    <div class="form-group">
                            <div class="col-sm-offset-2 col-sm-10">
                                  <button type="submit" class="btn btn-default">Invia</button>
                            </div>
                        </div>
                    </form>
                </div>        
            </div>
        <div class="overlay"></div>
          </div>
        </div>
        <button type="button" class="btn standard-button" id="submit3">Conferma</button>
        <button type="button" class="btn standard-button" id="back-1">Modifica</button>
        <button type="button" class="btn secondary-button back">Annulla</button>
      </div>
    </div>

    【讨论】:

      【解决方案2】:

      我不确定你想用覆盖实现什么,但老实说,我会使用覆盖 div 的pseudo-element,而不是为其使用专用的 div 元素。只有position: absoluteposition: relative 可以容纳另一个绝对元素。

      /*overlay per preview form*/
            #preview > .container {
                position: relative; /** added **/
                width: 80% !important;
                margin: 0 auto;
                border: 1px solid #e64646;
                margin-top: 20px;
            }
          #preview > .container::before {
              content: ''; /** added **/
              opacity:0.2;
              filter: alpha(opacity = 0.2);
              position:absolute;
              top:0; bottom:11%; left:0; right:0;
              display:block;
              z-index:2;
              background:#09f;
          }
      <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet"/>
      <div class="container">
        <div class="tab-pane" role="tabpanel" id="step3">
          <h1>Anteprima del tuo form: <small>ecco come lo visualizzeranno gli utenti</small></h1>
          <div id="preview">
            <div class="container">
                    <div class="page-header">
                  <h1>Google: <small>Compila un form</small></h1>
              </div>
              <div class="row">
                  <div class="col-md-12">
                      <form name="form_3" method="post" class="form-horizontal">
                          <div class="well">Qual � il tuo nome di battesimo?</div>
                          <div class="form-group"><label class="col-md-2" for="nome">nome</label>
                          <div class="col-md-10"><input type="text" class="form-control" name="nome">         </div></div>
                          <div class="well">Qual � il tuo cognome? Per le donne il cognome da nubile</div>
                          <div class="form-group"><label class="col-md-2" for="cognome">cognome</label>
                          <div class="col-md-10"><input type="text" class="form-control" name="cognome"></div></div>
                          <div class="well">Sei d'accordo ad essere contattato per ricevere informazioni sui nuovi progetti che partiranno?</div>
                          <div class="form-group"><div class="col-md-10 col-sm-offset-2">
                          <div class="radio"><label><input type="radio" name="Consenso" value="Si">Si</label></div>
                          <div class="radio"><label><input type="radio" name="Consenso" value="No">No</label></div></div></div>
                          <div class="form-group">
                              <div class="col-sm-offset-2 col-sm-10">
                                    <button type="submit" class="btn btn-default">Invia</button>
                              </div>
                          </div>
                      </form>
                  </div>        
              </div>
          <!-- <div class="overlay"></div> -->
          </div>
          </div>
          <button type="button" class="btn standard-button" id="submit3">Conferma</button>
          <button type="button" class="btn standard-button" id="back-1">Modifica</button>
          <button type="button" class="btn secondary-button back">Annulla</button>
        </div>
      </div>

      【讨论】:

      • 与我的解决方案相比,伪元素的优点是什么?目的是覆盖红色边框内的内容,防止被点击
      • 更简洁的代码。您可以稍后使用 javascript 切换 .container 元素上的类以显示或隐藏覆盖。
      • 好的。谢谢你的信息
      猜你喜欢
      • 2021-07-12
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 2013-01-27
      • 2021-06-21
      相关资源
      最近更新 更多