【问题标题】:How to put a spinner in the center of a bootstrap 3 div col-md-x?如何将微调器放在引导程序 3 div col-md-x 的中心?
【发布时间】:2021-03-10 14:09:14
【问题描述】:

我想在包含视频的 div 中放置一个微调器。

此视频需要几秒钟才能显示,因为它托管在 aws 上。

我已经成功地制作了微调器,但它占据了整个页面。我无法让它适应输入的 div。

#cover-div-spin {
    position:fixed;
    width:100%;
    left:0;right:0;top:0;bottom:0;
    background-color: rgba(0,0,0,0.7);
    z-index:2;
    /*display:none;*/
}

/* Safari */
@-webkit-keyframes spin {
    from {-webkit-transform:rotate(0deg);}
    to {-webkit-transform:rotate(360deg);}
}

@keyframes spin {
    from {transform:rotate(0deg);}
    to {transform:rotate(360deg);}
}

#cover-div-spin::after {
    /*position: fixed;*/
    left: 50%;
    top: 50%;
    border: 16px solid #f3f3f3;
    border-radius: 50%;
    border-top: 16px solid #c4040c;
    width: 100px;
    height: 100px;
    -webkit-animation: spin 2s linear infinite; /* Safari */
    animation: spin 2s linear infinite;
    content:'';
    display:block;
    position:absolute;
    left:48%;top:40%;
    -webkit-animation: spin .8s linear infinite;
    animation: spin .8s linear infinite;
}
<div class="col-md-4" style="background:orange;">
  <span><b>Example</b></span>
  <div align="center" class="embed-responsive embed-responsive-16by9">
     <div id="cover-div-spin"></div>
     <video class="embed-responsive-item" src="" controls muted></video>
  </div>
</div>

https://jsfiddle.net/JorgePalaciosZaratiegui/pdzm1ano/17/

有解决这个问题的想法吗?

提前致谢。

【问题讨论】:

    标签: html css twitter-bootstrap-3 spinner


    【解决方案1】:

    首先,您的#cover-div-spin 应该有一个absolute position 而不是fixed

    要了解更多关于定位的信息,请阅读MDN docs

    位置:绝对

    元素从正常的文档流中移除,没有空格 为页面布局中的元素创建。 相对定位 到它最近的定位祖先,如果有的话;否则,它被放置 相对于初始包含块。

    位置:固定

    元素从正常的文档流中移除,没有空格 为页面布局中的元素创建。 相对定位 到视口建立的初始包含块

    我还更改了 hte #cover-div-spin display:flex;,它可以让我们轻松地将微调器居中。

    #cover-div-spin {
        position:absolute; /* absolute instead of fixed */
        width:100%;
        left:0;right:0;top:0;bottom:0;
        background-color: rgba(0,0,0,0.7);
        z-index:2;
        display: flex;  /* Allow us to easily center the spinner */
        align-items: center; /* Vertical alignement */
        justify-content: center; /* Horizontal alignement */
    }
    
    /* Safari */
    @-webkit-keyframes spin {
        from {-webkit-transform:rotate(0deg);}
        to {-webkit-transform:rotate(360deg);}
    }
    
    @keyframes spin {
        from {transform:rotate(0deg);}
        to {transform:rotate(360deg);}
    }
    
    #cover-div-spin::after {
        /* Removed all position rules */
        border: 16px solid #f3f3f3;
        border-radius: 50%;
        border-top: 16px solid #c4040c;
        width: 100px;
        height: 100px;
        -webkit-animation: spin 2s linear infinite; /* Safari */
        animation: spin 2s linear infinite;
        content:'';
        display:block;
        -webkit-animation: spin .8s linear infinite;
        animation: spin .8s linear infinite;
    }
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    <div class="col-md-4" style="background:orange;">
      <span><b>Example</b></span>
      <div align="center" class="embed-responsive embed-responsive-16by9">
         <div id="cover-div-spin"></div>
         <video class="embed-responsive-item" src="" controls muted></video>
      </div>
    </div>

    【讨论】:

      【解决方案2】:

      确切地说,lefttop 不能是完整的50%,但是,50% - 微调器宽度的一半(在您的情况下微调器是 100 像素,所以一半是 50 像素),例如这个(我只是改变左边和顶部,并在底部删除重复的左边和顶部)

      #cover-div-spin::after {
          /*position: fixed;*/
          left: calc(50% - 50px);
          top: calc(50% - 50px);
          border: 16px solid #f3f3f3;
          border-radius: 50%;
          border-top: 16px solid #c4040c;
          width: 100px;
          height: 100px;
          -webkit-animation: spin 2s linear infinite; /* Safari */
          animation: spin 2s linear infinite;
          content:'';
          display:block;
          position:absolute;
          /* left:48%; top:40%; remove this */
          -webkit-animation: spin .8s linear infinite;
          animation: spin .8s linear infinite;
      }
      

      如果您只想在 div 上制作微调器,只需将 #cover-div-spin 上的位置更改为绝对位置,就像这样

      #cover-div-spin {
        position:absolute;
      }
      

      【讨论】:

        【解决方案3】:
        #cover-div-spin::after {
          left:50%;
          top:50%;
          transform:translate(-50%, 50%);
        }
        

        你必须在 #cover-div-spin::after 中添加这 3 行,否则所有代码行都是完美的。

        当我们将任何元素向上和向左移动 50% 时,我们必须减去我们使用的元素 -50%。

        如果我们想垂直居中对齐,那么它将类似于 top:50%;翻译:翻译Y(-50%);如果我们需要水平居中,那么 left:50%;翻译:翻译X(-50%);如果我们需要水平和垂直居中,那么你可以使用上面的代码;

        【讨论】:

          【解决方案4】:

          以下示例可能会有所帮助。

          .col-md-4,
          .embed-responsive {
            display: flex;
            align-items: center;
            align-content: center;
            justify-content: center;
            flex-flow: column;
          }
          .col-md-4 span {
            height: 100%;
          }
          .col-md-4 {
            height: 12rem;
          }
          @-webkit-keyframes spin {
            from {
              -webkit-transform: rotate(0deg);
            }
            to {
              -webkit-transform: rotate(360deg);
            }
          }
          @keyframes spin {
            from {
              transform: rotate(0deg);
            }
            to {
              transform: rotate(360deg);
            }
          }
          #cover-div-spin {
            background-color: transparent;
            z-index: 2;
            width: 8rem;
            height: 8rem;
            position: absolute;
          }
          #cover-div-spin::after {
            border: 1rem solid #f3f3f3;
            border-radius: 50%;
            border-top: 1rem solid #c4040c;
            width: 6rem;
            height: 6rem;
            align-self: center;
            content: '';
            display: inline-flex;
            -webkit-animation: spin .8s linear infinite;
            animation: spin .8s linear infinite;
          }
          .embed-responsive-item {
            z-index: 1;
            top: 2rem;
            position: absolute;
          }
          <div class="col-md-4" style="background:orange;">
            <span><b>Example</b></span>
            <div id="cover-div-spin"></div>
            <div class="embed-responsive embed-responsive-16by9">   
              <video class="embed-responsive-item" src="" controls muted></video>
            </div>
          </div>

          【讨论】:

            猜你喜欢
            • 2013-11-23
            • 2018-01-29
            • 1970-01-01
            • 2018-12-01
            • 2018-01-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-02
            相关资源
            最近更新 更多