1. 程式人生 > >vue的基本用法

vue的基本用法

efault div otto 組件 ror init spa this found

公共樣式---pc版的404報錯

動態src
這個是vue組件template部分

 <div class="not-found">
        <img :src="img" alt="404">
    </div>
     <div>{{fish}}</div>

script部分

import './404.css'   //先引入less
import img from './error-404.png'
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: '你還沒有登錄,請先登錄',
      img, //es6用法   等同於  img:img
      fish:'你好'
    }
  }
}

引入的404.css部分

.not-found {
    margin: 10% 0 0;
    text-align: center;
}

下面是現象
技術分享圖片

公共樣式loading pc端,根據傳過來的參數,來顯示loading
style用法
父組件:

<template>
     <!-- 顯示loading -->
     <Load :option="test"></Load>
  </div>
</template>
<script>
import load from './loading'
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: '你還沒有登錄,請先登錄',
      test:{
        show:true,
        progress:60
      }
    }
  },
  components:{
    Load:load
  }
}
</script>

子組件

<template>
  <div class="hello">
     哈哈哈
     <!-- 顯示loading -->
    <div class="loadingbar-wrapper" v-show="option.show">
        <div id="loadingbar" class="waiting" :style="{ width: option.progress+'%'}">
            <dt></dt><dd></dd>
        </div>
    </div>
     
  </div>
</template>

<script>

export default {
  name: 'HelloWorld',
  props:['option'],
  data () {
    return {
      msg: '你還沒有登錄,請先登錄'
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
  font-weight: normal;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
@import "../assets/var.less";
@loading-bar-color: @color-white;
#loadingbar {
  position: fixed;
  z-index: 2147483647;
  top: 100px;
  left: -6px;
  width: 1%;
  height: 2px;
  background: @loading-bar-color;
  -moz-border-radius: 1px;
  -webkit-border-radius: 1px;
  border-radius: 1px;
  -moz-transition: all 500ms ease-in-out;
  -ms-transition: all 500ms ease-in-out;
  -o-transition: all 500ms ease-in-out;
  -webkit-transition: all 500ms ease-in-out;
  transition: all 500ms ease-in-out;
}

#loadingbar.left {
  left: 100%;
  right: 0px;
  width: 100%;
}

#loadingbar.up {
  left: 0px;
  top: 100%;
  width: 5px;
  bottom: 0px;
  height: 100%;
}

#loadingbar.down {
  left: 0;
  width: 5px;
  height: 0;
}

#loadingbar.waiting dd, #loadingbar.waiting dt {
  -moz-animation: pulse 2s ease-out 0s infinite;
  -ms-animation: pulse 2s ease-out 0s infinite;
  -o-animation: pulse 2s ease-out 0s infinite;
  -webkit-animation: pulse 2s ease-out 0s infinite;
  animation: pulse 2s ease-out 0s infinite;
}

#loadingbar dt {
opacity: .6;
width: 180px;
right: -80px;
clip: rect(-6px,90px,14px,-6px);
}

#loadingbar dd {
  opacity: .6;
  width: 20px;
  right: 0;
  clip: rect(-6px,22px,14px,10px);
}

#loadingbar dd, #loadingbar dt {
  position: absolute;
  top: 0;
  height: 2px;
  -moz-box-shadow: rgb(255, 156, 50) 1px 0 6px 1px;
  -ms-box-shadow: rgb(255, 156, 50) 1px 0 6px 1px;
  -webkit-box-shadow: rgb(255, 156, 50) 1px 0 6px 1px;
  box-shadow: rgb(255, 156, 50) 1px 0 6px 1px;
  -moz-border-radius: 100%;
  -webkit-border-radius: 100%;
  border-radius: 100%;
}

#loadingbar.left dt {
opacity: .6;
width: 180px;
left: -4px;
clip: rect(-6px,185px,14px,25px);
}

#loadingbar.left dd {
  opacity: .6;
  width: 20px;
  left: 0;
  margin: 0;
  clip: rect(-6px,22px,14px,0px);
}

#loadingbar.left dd, #loadingbar.left dt {
  top: 0;
  height: 2px;
}

#loadingbar.down dt {
  opacity: .6;
  height: 180px;
  top: auto;
  bottom: -47px;
  clip: rect(-6px,20px,130px,-6px);
}

#loadingbar.down dd {
  opacity: .6;
  height: 20px;
  top: auto;
  bottom: 0;
  clip: rect(-6px,22px,20px,10px);
  margin: 0;
}

#loadingbar.down dd, #loadingbar.down dt {
  left: -5px;
  right: auto;
  width: 10px;
}

#loadingbar.up dt {
  opacity: .6;
  height: 180px;
  bottom: auto;
  top: -10px;
  clip: rect(13px,20px,190px,-6px);
}

#loadingbar.up dd {
  opacity: .6;
  height: 20px;
  bottom: auto;
  top: 0;
  clip: rect(-6px,22px,25px,10px);
  margin: 0;
}

#loadingbar.up dd, #loadingbar.up dt {
  left: -5px;
  right: auto;
  width: 10px;
}

@keyframes pulse {
  30% { opacity:0.6; }
  60% { opacity:0; }
  100% { opacity:0.6; }
}

@-moz-keyframes pulse 
{
  30% { opacity:0.6; }
  60% { opacity:0; }
  100% { opacity:0.6; }
}

@-ms-keyframes pulse 
{
  30% { opacity:0.6; }
  60% { opacity:0; }
  100% { opacity:0.6; }
}

@-webkit-keyframes pulse 
{
  30% { opacity:0.6; }
  60% { opacity:0; }
  100% { opacity:0.6; }
}

.loadingbar-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1000;
  width: 100%;
}

.loadingbar-wrapper::after {
  position: absolute;
  right: 5px;
  top: 10px;
  z-index: 1001;
  content: '';
  width: 16px;
  height: 16px;
  border-radius: 100%;
  -webkit-animation-fill-mode: both;
          animation-fill-mode: both;
  border: 2px solid @loading-bar-color;
  border-bottom-color: transparent;
  -webkit-animation: rotate 0.75s 0s linear infinite;
          animation: rotate 0.75s 0s linear infinite;
}

@keyframes rotate {
  0% {
    -webkit-transform: rotate(0deg);
            transform: rotate(0deg); }
  100% {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg) } 
}
</style>

效果 :
技術分享圖片
這個位置會根據傳過來的數不一樣而移動,這裏主要是父傳子的實際應用吧~

vue的基本用法