html5新增标签progress

首先,请允许我在这里先表达一下对张鑫旭这位大牛的尊重之情,在学progress的时候,在他的网站上学到了很多我们会忽略的事情,也找到了自己的困惑的答案~~

推荐给大家:http://www.zhangxinxu.com/wordpress/2013/02/html5-progress-element-style-control/comment-page-1/#comment-169478

参考网站:http://www.w3.org/TR/html5/forms.html#the-progress-element

一:progress简介

  progress是HTML5中的新增标签,是进度条,注意与同样是HTML5新增标签的meter的区别,小女子看来meter值得是占比,而progress指的是进度;

  不支持的浏览器:IE10以下;firefox;

  可设置width:*;跟height:*;样式,所以我理解为display:inline-block;标签,但是IE10以下的浏览器宽高却不表现,firefox虽不支持,但是宽、高、边框、背景还是有显示的。

  基本属性:value || max || position || labels

interface HTMLProgressElement : HTMLElement {
           attribute double value;
           attribute double max;
  readonly attribute double position;
  readonly attribute NodeList labels;
};

上边是定义,由此可知,position跟labels属性是只读的;
  • max值得是最大值,缺省的话,默认是1,进度范围是0.0~1.0;max="100";则进度范围是0~100;
  • value值是已经完成的进度的值;缺省这个属性的话,表示不清楚当前进度,各个浏览器表现不同;IE10此时最好玩,是各种动态的点点;感兴趣的可以看看;只写value属性,而不写值的时候表现跟前者又不相同;这两种情况返回的value值是0;这些都是大家可以自己尝试的,自己试试~~
  • position属性只读,可以在js中获取,值是value/max;当进度条是不确定的时候,也就是value不定的时候,返回-1;
  • labels获得的是一个列表,for属性值是progress的id的所有label集合;(这个我真不知道有什么实际用途,有经验以后告知);在支持progress的浏览器中IE跟girefox还不支持该属性,得到的是undefined;

progress常常跟js合作来完成进度的动态表示,下边是一个简单的demo;

    <section>
     <h2>Task Progress结合javascript的使用实现进度条的变化</h2>
     <p>Progress: <progress id="p" max=100><span>0</span>%</progress></p>
     <label for="p">我不知道这些label实际有什么用处,得查查,w3上也没有详细说用途</label>
     <label for="p">我不知道这些label实际有什么用处,得查查,w3上也没有详细说用途</label>
     <script>
      var progressBar = document.getElementById(‘p‘);

      var value = 0;
      function updateProgress(newValue) {
        progressBar.value = newValue;
        progressBar.getElementsByTagName(‘span‘)[0].textContent = newValue;
        value++;
        setTimeout(function(){
            if(value>100){return;}
            updateProgress(value);
            // progress属性position的值是value/max,是只读的
            console.log("position",progressBar.position);
            // 最后一个属性也是只读的labels,是id是该progress的label的集合,支持progress的浏览器中IE10还不支持,
            // Firefox也不支持
            console.log("labels",progressBar.labels);
        },100);
      }

      updateProgress(value);
     </script>
    </section>

二:progress元素的样式控制

  之所以会单独说这个,也是因为其各个浏览器的不同实现。这个时候,表格的确用途很大;

  术语解释:“边框”指的是整个进度条的边框;“背景”指的是整个进度条的背景;“已完成背景”指的是已经完成的进度的背景;

  background效果在刚开始的时候,我并没有在chrome跟opera浏览器中看到,但是后来在张鑫旭的网站中看到才知道其实是有效果的,只是被下边的-webkit-progress-bar的默认样式给覆盖了而已;当::-webkit-progress-bar{background:transparent;}的时候,progress{background:*;}就能够显示出来;另外,奇葩的竟然是,IE是通过color实现已经完成进度的背景的。

三:浏览器解决方案

  因为IE6~IE9和Safari不支持我们就不适用该元素了吗?天啊,这也太不爽了吧,别急,有兼容方式的哦。

  识别progress的浏览器是会忽略其内部的html代码的,所以我们可以这样写:<progress><div>这里写兼容IE的东东</div></progress>

  下边是一个小demo:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>progress兼容实例</title>
    <style>
        *{margin:0;padding:0;}
        progress{
            display:inline-block;
            width:200px;
            height:30px;
            border:1px solid #f0f;
            background-color:#eee;
            color:#f00;
        }
        progress::-webkit-progress-bar{background:#eee;}
        progress::-moz-progress-bar{background:#f00;}
        progress::-webkit-progress-value{background:#f00;}
        /*IE6~9*/
        progress ie{
            display:block;
            height:100%;
            background-color:#f00;
        }
    </style>
    <script>
        if (typeof window.screenX !== "number") {
            document.createElement("progress");
            document.createElement("ie");
        }
    </script>
</head>
<body>
    <progress max="100" id="p"><ie style="width:0;"></ie></progress>
    <input type="button" value="点击开始上传">
    <span id="show"></span>
    <script>
        var oProgress = document.getElementById("p");
        var oBtn = document.getElementsByTagName("input")[0];
        var oShow = document.getElementById("show");
        var oIe = oProgress.getElementsByTagName("ie")[0];
        var newValue = 1;

        function updateProgress(newValue){
            oProgress.value = newValue;
            oIe.style.width = newValue + "%";
            oShow.innerHTML = oIe.style.width;
            newValue++;
            if(newValue>100){
                oBtn.value="上传成功";
                return;
            };
            setTimeout(function(){
                updateProgress(newValue);
            },100);
        }

        oBtn.onclick = function(){
            setTimeout(function(){
                updateProgress(newValue);
            },1000);
        }
    </script>
</body>
</html>

  你可以在各个浏览器下做测试~~

  现在真心觉得写一篇博客不容易,所以,转载请注明出处~~

时间: 2024-10-25 04:32:49

html5新增标签progress的相关文章

html5新增标签与传统html的区别

一.文档声明以及编码声明的改变 html5之前的版本声明: 文档类型- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 文档编码- <meta http-equiv="Content-Type" content="text/ht

CSS浏览器前缀,HTML5新增标签

1.浏览器样式前缀 为了让CSS3样式兼容,需要加上 例如:-ms- 兼容IE浏览器-moz 兼容Firefox-webkit- 兼容chrome和safaridiv{-ms-transform:rotate(30deg);...........} 2.自动添加浏览器前缀 目前的状态是,有些CSS3属性需要加前缀,有些不需要加,有些只需加部分,可以用插件,安装autoprefixer 3.HTML5新增标签 (1)<header> 页面头部.页眉(2)<nav>页面导航(3)<

第二篇、HTML5新增标签

<html> <head> <meta charset="UTF-8"> <title>html5新增的标签</title> </head> <body> <!--结构性标签 常用于新闻.文章等--> <article> <header> </header> <section> </section> <section>

CSS3主要知识点复习总结+HTML5新增标签

1.显示属性,自身属性,文本属性 推荐样式编写顺序 1 显示属性 :display,list-style,position,float,clear [注意按照横着的顺序] 2 自身属性(合模型):width,height,margin,padding,border,background(第3点)     3 背景:background     4 行高:line-height     5 文本属性:color,font,text-decoration,text-align,vertical-al

HTML5新增标签总结和说明

HTML5出来这么久,都没有真正的理解和花时间去看,经常看到一些网页的里面包含很多陌生的标签元素,一直不清楚是什么功能.像<article>.<aside>. 其实这两个标签和<div>的功能一样仅仅是一个块级元素没有任何的样式和功能事件上的特点完全可以理解为div,.但是HTML5为什么要增加这些看似"毫无作用"标签呢.        我们知道经这么长时间的发展,HTML5的应用已经普及了.从使用的特点上来看,HTML5相对以前版本来看给人的感觉就

Html5新增标签的学习。

随笔,记录的比较随便. 今天新学习了9个标签. <audio> 简单的说就是一个音频标签,他的主要常用属性有src=""音频的路径 controls="controls" 控制参数,他就是可以让其在页面显示一个播放器的效果autoplay="autoplay"自动播放属性 loop="loop"循环次数 <video>同audio标签一样.是一个视频标签.主要常用的属性同上面一样 <datalis

html5新增标签与删除标签

新增标签 1.结构标签(块状元素)--有意义的div <article>     标记定义一篇文章 <header>     标记定义一个页面或一个区域的头部 <nav>         标记定义导航链接 <section> 标记定义一个区域 <aisde> 标记定义页面内容的侧边栏 <hgroup> 标记定义文件中一个区块的相关信息 <figure> 标记定义一组媒体内容以及他们的标题 <figcaption>

HTML5新增标签&lt;video&gt;

视频格式 <video> 标签的属性 属性 值 描述 autoplay autoplay 如果出现该属性,则视频在就绪后马上播放. controls controls 如果出现该属性,则向用户显示控件,比如播放按钮. height pixels 设置视频播放器的高度. loop loop 如果出现该属性,则当媒介文件完成播放后再次开始播放. preload preload 如果出现该属性,则视频在页面加载时进行加载,并预备播放. 如果使用 "autoplay",则忽略该属性

【转】H5 - HTML5新增标签

下面分别是传统的div+css的页面布局方式 下面是HTML5布局方式: 是不是精简了很多呢  现在来说说图片中出现的标签: 结构标签:(块状元素) 有意义的div artical 标记定义一篇文章 header 标记定义一个页面或一个区域的头部 nav 标记定义导航链接 section 标记定义一个区域 aside 标记定义页面内容部分的侧边栏 hgroup 标记定义文件中一个区块的相关信息 figure 标记定义一组媒体内容以及它们的标题 figcaption 标签定义 figure 元素的