iT邦幫忙

1

circular progress bars (Vue或Bootstrap)實際應用範本

  • 分享至 

  • xImage

最近公司有一個專案正在開發
USER可以在畫面下po number 搜尋資料庫
將po相同的項目秀在list上面
這些功能是已經完成的項目

但主管希望在搜尋資料庫等待的這幾秒鐘
能夠用circular progress bars美觀畫面
我在網路上搜尋一些用法
發現都沒有實際的範例可以參考

小弟剛接觸這部分
不知道有沒有大大有實際用在這方面的範本可以提供參考
感謝

froce iT邦大師 1 級 ‧ 2018-05-08 09:04:50 檢舉
https://cn.vuejs.org/v2/guide/instance.html#%E5%AE%9E%E4%BE%8B%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%92%A9%E5%AD%90
你會需要的東西。
vue我還沒實際用在專案上,所以沒辦法給實例給你。
不過大概是在 beforeMount 時期載入 progress bar。
歪歪 iT邦新手 3 級 ‧ 2018-05-10 11:23:34 檢舉
謝謝你^^
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
Homura
iT邦高手 1 級 ‧ 2018-05-08 20:32:30
最佳解答

bootstrap4好像沒有圓形的progress bar
那就用原本的示範一下好了
首先先複製一下官方範例

<div class="progress">
  <div class="progress-bar" role="progressbar" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
</div>

至於怎麼用呢?
只要控制style的width就可以了
動畫部分bootstrap都幫你做好了
我們要做的就是用vue控制with
設定一個變數barValue幫變數用
在mounted事件裡改變數值

new Vue({
    el: '#app',
    mounted:function(){
        setTimeout(() => {
            this.barValue = '100%'
        }, 1000);
    },
    data: {
        barValue: '10%',
        test:'123'
    }
})

因為怕他一進去就跑完所以settimeout延遲一秒

然後html繫節部分改成下面這樣

<div class="progress">
    <div class="progress-bar" role="progressbar" v-bind:style="{width: barValue}" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
    </div>
</div>

style改成v-bind:style
大概就這樣

完整範例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
</head>
<body>
    <div id="app">
        <div class="progress">
            <div class="progress-bar" role="progressbar" v-bind:style="{width: barValue}" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
        </div>
    </div>
              
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js" integrity="sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T" crossorigin="anonymous"></script>         
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            mounted:function(){
                setTimeout(() => {
                    this.barValue = '100%'
                }, 1000);
            },
            data: {
                barValue: '10%'
            }
        })
    </script>
</body>
</html>
歪歪 iT邦新手 3 級 ‧ 2018-05-10 11:23:15 檢舉

謝謝你
我知道怎麼使用囉

我要發表回答

立即登入回答