【问题标题】:show loading icon until the page is load?在页面加载之前显示加载图标?
【发布时间】:2014-05-28 08:53:06
【问题描述】:

我想在页面元素完全加载之前向用户显示加载图标。我怎样才能用 javascript 做到这一点,我想用 javascript 而不是 jquery 做到这一点?

Here是一个链接google是怎么做的 我怎样才能做到这一点? 在 onload 事件或类似的事情上触发一些功能.. 我知道它会像这样或任何其他方式来完成? 或者有什么活动?

更新 我使用 display 属性做了一些事情,我隐藏了 body 元素,但是 onload 的 body 标签我改变了它的属性,但是在哪里放置加载图标并添加更多的交互性。

【问题讨论】:

  • 显示您尝试过的内容?

标签: javascript html css


【解决方案1】:

HTML

<body>
    <div id="load"></div>
    <div id="contents">
          jlkjjlkjlkjlkjlklk
    </div>
</body>

JS

document.onreadystatechange = function () {
  var state = document.readyState
  if (state == 'interactive') {
       document.getElementById('contents').style.visibility="hidden";
  } else if (state == 'complete') {
      setTimeout(function(){
         document.getElementById('interactive');
         document.getElementById('load').style.visibility="hidden";
         document.getElementById('contents').style.visibility="visible";
      },1000);
  }
}

CSS

#load{
    width:100%;
    height:100%;
    position:fixed;
    z-index:9999;
    background:url("https://www.creditmutuel.fr/cmne/fr/banques/webservices/nswr/images/loading.gif") no-repeat center center rgba(0,0,0,0.25)
}

注意:
如果您的页面加载速度很快,您将看不到任何加载 gif,因此在加载时间较长的页面上使用此代码,我还建议您将js 在页面底部。

演示

http://jsfiddle.net/6AcAr/ - 有超时(仅用于演示)
http://jsfiddle.net/47PkH/ - 无超时(用于实际页面)

更新

http://jsfiddle.net/d9ngT/

【讨论】:

  • 它同时显示内容和加载图标我希望隐藏内容直到整个页面加载...同时出现加载图标并且页面加载时我想加载图标消失并显示内容。
  • thnx 哥们,你能告诉我 YouTube 如何禁用标题栏中的加载图标,并在顶部显示一个从左到右填充的红色条。
  • @Sky 从标题栏加载图标?当你的页面加载时你已经有了加载图标为什么你需要像 youtube 这样的加载栏?
  • 为什么会有 document.getElementById('interactive'); ?
  • 我正在使用 XMLHTTP 填充一些下拉菜单,而这正在加载我想显示加载屏幕。有任何想法吗 ?另外,根据互联网连接速度,初始页面加载情况如何。因此,在页面加载时调出加载屏幕,并在页面完全加载时隐藏。
【解决方案2】:

将加载程序放入网站的最简单方法。

HTML:

<div id="loading"></div>

CSS:

#loading {
position: fixed;
width: 100%;
height: 100vh;
background: #fff url('images/loader.gif') no-repeat center center;
z-index: 9999;
}

查询:

<script>
jQuery(document).ready(function() {
    jQuery('#loading').fadeOut(3000);
});
</script>

【讨论】:

  • OP特意说,“没有jQuery”
【解决方案3】:

在 body 标签中添加 class="loading" 然后使用下面的脚本和下面的 css 代码

body {
            -webkit-transition: background-color 1s;
            transition: background-color 1s;
        }
        html, body { min-height: 100%; }
        body.loading {
            background: #333 url('http://code.jquery.com/mobile/1.3.1/images/ajax-loader.gif') no-repeat 50% 50%;
            -webkit-transition: background-color 0;
            transition: background-color 0;
            opacity: 0;
            -webkit-transition: opacity 0;
            transition: opacity 0;
        }

使用此代码

var body = document.getElementsByTagName('body')[0];
var removeLoading = function() {
    setTimeout(function() {
        body.className = body.className.replace(/loading/, '');
    }, 3000);
};
removeLoading();

演示:https://jsfiddle.net/0qpuaeph/

【讨论】:

    【解决方案4】:

    HTML、CSS、JS 都很好,如上述答案所示。但是他们不会阻止用户点击加载器和访问页面。如果页面时间很长,它看起来会被破坏并且无法达到目的。

    所以在 CSS 中考虑添加

    pointer-events: none;
    cursor: default;
    

    此外,如果您使用的是现在每个人都在使用的 fontawesome,而不是使用 gif 文件,请考虑在您的 html 中使用

    <i class="fa fa-spinner fa-spin">
    

    【讨论】:

      【解决方案5】:

      进行ajax调用的元素可以调用如下的loading(targetElementId)方法将loading/icon放入目标div,准备好后会被ajax结果覆盖。这对我很有用。

      <div style='display:none;'><div id="loading" class="divLoading"><p>Loading... <img src="loading_image.gif" /></p></div></div>
      <script type="text/javascript">
      function loading(id) {
          jQuery("#" + id).html(jQuery("#loading").html());
          jQuery("#" + id).show();
      }
      

      【讨论】:

        【解决方案6】:

        HTML 页面

        <div id="overlay">
        <img src="<?php echo base_url()?>assest/website/images/loading1.gif" alt="Loading" />
         Loading...
        </div>
        

        脚本

        $(window).load(function(){ 
         //PAGE IS FULLY LOADED 
         //FADE OUT YOUR OVERLAYING DIV
         $('#overlay').fadeOut();
        });
        

        【讨论】:

          【解决方案7】:

          首先,在您的主页中使用加载图标

          然后,从您的主页中删除您的&lt;/body&gt;&lt;/HTML&gt; 并将其替换为

          <?php include('footer.php');?>
          

          在footer.php文件类型中:

          <?php
              $iconPath="myIcon.ico" // myIcon is the final icon
              echo '<script>changeIcon($iconPath)</script>'; // where changeIcon is a javascript function whiwh change your icon.
              echo '</body>';
              echo '</HTML>';
          ?>
          

          【讨论】:

          • op 要求 js 解决方案
          • 我想在我的页面加载之前显示一个加载(预加载器)图标。当页面完全加载时,我想用 html 元素(页面内容)替换加载图标。
          • 是js函数会改变图标!!我只是展示如何调用函数来做他想做的事
          • @angel 这被标记为javascript htmlcss,这篇文章没有php 标签。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-23
          • 2013-12-29
          • 2014-08-26
          相关资源
          最近更新 更多