在font-awesome图标

时间:2018-05-24 20:41:01

标签: javascript css font-awesome

我正在测试一个字体很棒的微调器。我想在它上面或下面有一行文本,理想情况下是一行(但仍然与bootstrap集成)。下面的代码显示了微调器下方的文本,但文本不在一行中。设置spinner-text{width}属性可以将它放在一行上,但它不会以图标为中心,也不会在窗口大小改变时使用引导程序调整大小。

我的HTML:

<div class="center-parent" id="spinner">
    <div class="center-container">
        <i class="fa fa-cog fa-spin"></i>
        <span class="spinner-text">Please wait while we gather data from wherever...</span>
    </div>
</div>

我的CSS:

.center-parent {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
}

.center-container {
    width: 0 auto;
    height: 0 auto;
    font-size: 40px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -30px;
    margin-right: 0;
    margin-bottom: 0;
    margin-left: -30px;
    z-index: -1;
}

.spinner-text {
    margin: 0 auto;
    display: table;
    width: 100%;
    height: 0 auto;
    font-size: 20px;
    position: absolute;
    text-align: center;
}

我使用以下JavaScript测试微调器:

<script type="text/javascript">
    var spinnerVisible = false;
    $(document).ready(function () { showSpinner() });
    function showSpinner() {
        if (!spinnerVisible) {
            $("div#spinner").fadeIn("fast");
            spinnerVisible = true;
        }
        setTimeout(hideSpinner, 4000);
    };

    function hideSpinner() {
        if (spinnerVisible) {
            var spinner = $("div#spinner");
            spinner.stop();
            spinner.fadeOut("fast");
            spinnerVisible = false;
        }
    };
</script>

我调查了以下内容并没有找到解决办法:

Font awesome icon button with label below

Center text above font awesome icon?

Centering FontAwesome icons vertically and horizontally

centering text below font awesome icon

1 个答案:

答案 0 :(得分:2)

你在示例中使它太复杂了。它可以用更简单的标记和CSS flexbox来完成,我建议使用固定而不是绝对位置,因此它总是可以覆盖整个视口。

var spinnerVisible = false;
$(document).ready(function() {
  showSpinner()
});

function showSpinner() {
  if (!spinnerVisible) {
    $("div#spinner").fadeIn("fast");
    spinnerVisible = true;
  }
  setTimeout(hideSpinner, 4000);
};

function hideSpinner() {
  if (spinnerVisible) {
    var spinner = $("div#spinner");
    spinner.stop();
    spinner.fadeOut("fast");
    spinnerVisible = false;
  }
};
.spinner-container {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: -1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

.spinner-container .fa {
  font-size: 30px;
}
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="spinner-container" id="spinner">
  <i class="fa fa-cog fa-spin"></i>
  <span class="spinner-text">Please wait while we gather data from ...</span>
</div>