vue常用代码

Xftp软件的前端代码路径
/usr/local/tomcat/webapps/lcwy_home/css
/usr/local/tomcat/webapps 欧洲花园wap页面服务器地址


vue动态修改标题
在main.js中实例之前加这段代码
Vue.directive('title', {
  inserted: function (el, binding) {
    document.title = el.dataset.title
  }
})
在每个子组件页面加v-title data-title="标题内容"
<div v-title data-title="标题内容">
……组件内的内容
这里的div可以是你组件内的任何标签
</div>


视口
<meta content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=2.0, user-scalable=no, width=device-width" name="viewport"> 
<meta name="format-detection" content="telephone=no">//解决苹果电话号码自动变link
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no,telephone=no" name="viewport">


window.location.reload()//强制刷新
document.activeElement.blur();//阻止手机键盘弹出


$.contains() 方法用于判断指定元素内是否包含另一个元素。即判断另一个DOM元素是否是指定DOM元素的后代。
map() 把每个元素通过函数传递到当前匹配集合中,生成包含返回值的新的 jQuery 对象。


// console.log(event.currentTarget)//相当于this
this.activeStatus = event.currentTarget.getAttribute("activeStatus");


常规方法删除数组指定元素
var aa = ["a","b","c","d","e"];
    aa.splice(i,1);//i是索引,1是长度
    console.log(aa)
常规方法从最后添加数组元素
aa.push("ccc");


this.$set(this.screenintSonSelect, i, data);//这里因为vue的规则不能直接给数组设置值
      this.$set(this.screenintSonFlag2, i, j);//只能通过set的方式设置


链接式导航
<router-link class="" to="/mall">
<img src="" alt="">
<span>花卉商城</span>
</router-link >


this.$router.go(-2);//可以回退多步
that.$router.back(-1);//只能回退一步
this.$router.push({
        path: "/mall/flowerGoods",
        query: {
          //通过编程式导航传递参数
          goodsId: goodsId
        }
      });
this.page = this.$route.query.index;//接收上个页面传过来的参数


vue router两种传参方式的区别
routes: [
 { path: '', name: '学习园地', component: study },
        { path: '/home/study', name: '', component: study },
    ]


this.$router.push({ path: "/home/study",query:{userId: 236} });//参数导航栏可见
this.$router.push({ name: '学习园地', params: { userId: 123 }})//参数导航栏不可见


import $ from "jquery"; //导入jquery
import { swiper, swiperSlide } from "vue-awesome-swiper"; //导入轮播图
import axios from "axios"; //导入数据请求插件
import comLink from "./common/common_link"; //导入总线
import { Indicator, Toast, Popup, DatetimePicker, MessageBox } from "mint-ui"; //导入ui插件
import store from "../../store";
import { mapState,mapMutations } from 'vuex'




import axios from 'axios'
Vue.prototype.$axios = axios//这句相当于Vue.use,原理是一样的
// 在每个组件中 this.$axios.get(url).xxx
//axios的post请求
getData: function(i) {
event.stopPropagation();//阻止事件冒泡            
      var goods = this.cartList[index];
      Indicator.open({
        text: "加载中...",
        spinnerType: "snake"
      });
      var that = this;
      let formData = new FormData(); //以formdata的格式上传图片
formData.append('userId',50)
      axios.post(comLink.apihost + "/app/order/logistics.html", formData)
        .then(function(response) {
          console.log(response.data);
          Indicator.close(); //关闭加载动画
          if ((response.data.code = "200")) {
            
          } else {
            Toast({
              message: response.data.msg,
              duration: 2000
            });
          }
        })
        .catch(function(res) {
          Indicator.close(); //关闭加载动画
          console.log(res);
          Toast({
            message: "数据库错误",
            duration: 2000
          });
        });
    }


//上下拉效果
<mt-loadmore :bottom-method="loadBottom" :bottom-all-loaded="allLoaded" :auto-fill="false" ref="loadmore"> 
            <ul>
                <li v-for="(data,i) in itemList" :key="i" :data-id="data.id" @click="goodsLink($event)">
                    <a href="javascript:;">
                      <div style="width: 10.86667rem;height: 11.3rem;">
                        <img :src="data.imgUrl" alt="">
                      </div>
                        <p class="tit">{{data.title}}</p>
                        <p class="text">{{data.sonTitle}}</p>
                        <div class="prices">
                            <div class="left" v-if="data.discountFee>0">¥{{data.discountFee}}</div>
                            <div class="left" v-else>¥{{data.price}}</div>
                            <!-- <div class="right"><span></span>{{data.total}}</div> -->
                            <div class="right">库存:{{data.total}}</div>
                        </div>
                    </a>
                </li>
            </ul>
 </mt-loadmore>




/*********上下拉变量**begin*****/
      allLoaded: false, //是否可以上拉属性,false可以上拉,true为禁止上拉,就是不让往上划加载数据了
      scrollMode: "auto", //移动端弹性滚动效果,touch为弹性滚动,auto是非弹性滚动
      pageNum: 1, //
/*********上下拉变量**end*****/


/****************上下拉效果***begin****************** */
    loadTop: function() {
      //组件提供的下拉触发方法
      //下拉加载
      console.log("下拉刷新");
      this.$refs.loadmore.onTopLoaded();
    },
    loadBottom: function() {
      // 上拉加载
      this.pageNum++;
      var zhuangtai = this.zhuangtai;
      this.getStoryData(
        this.selec3,
        this.pageNum,
        this.selec4,
        this.selec1,
        "",
        this.selec2,
        false,
        false
      );
      console.log("上拉加载");
      this.$refs.loadmore.onBottomLoaded();
    },
    /****************上下拉效果***end****************** */






/********上下拉数据处理**begin*****/
            if (that.datas == "") {
              console.log(response.data);
              that.datas = response.data;
              for (var i = 0; i < that.datas.storyList.length; i++) {
                that.datas.storyList[i].imgUrl =
                  comLink.imgApiHost + that.datas.storyList[i].imgUrl;
              }
            } else {
              if (response.data.storyList.length == "0") {
                Toast({
                  message: "数据加载完毕!",
                  duration: 2000
                });
                return;
              } else {
                var data1 = that.datas.storyList;
                console.log(data1);
                var data2 = response.data.storyList;
                console.log(data2);
                for (var j = 0; j < data2.length; j++) {
                  data2[j].imgUrl = comLink.imgApiHost + data2[j].imgUrl;
                }
                data1 = data1.concat(data2);
                that.datas.storyList = data1;
              }
/********上下拉数据处理**end*****/


<!-- 时间选择器 -->
    <mt-datetime-picker 
        ref="picker"
        type="date"
        @confirm="confirm"
        :startDate="startData"
        :endDate="endDate"
        v-model="pickerValue">
    </mt-datetime-picker>
//时间选择
      pickerValue: new Date(),
      startData: new Date(),
      shengriDate: "1510902396000",
      endDate: new Date("2020-01-01"),
 
// 时间选择函数
    timeGate: function() {
      this.$refs.picker.open();
    },
    confirm: function(date) {
      console.log(date);
      var d = new Date(date); //格式化中国标准时间
      var youWant =
        d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
      console.log(youWant);
      this.location = youWant;
    },




带秒的时间戳过滤器
Vue.filter('dateFmt2', (date) => {
    var date = new Date(parseInt(date)); //如果date为毫秒的不需要乘1000
    var Y = date.getFullYear() + '-';
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
    var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
    var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
    var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
    var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
    return Y + M + D + h + m + s;
    // $(this).parent().siblings(".flowerClassify-leiXing").find("li");
    // $(this).siblings().removeClass()
})








//mui确定取消弹框
MessageBox.confirm('您确定要删除该收藏吗?').then(action => {
                var that = this;
                axios.get(comLink.apihost+'/app/item/cancelFavorite.html',{
                      params:{
                          itemId:acquiesceId,
                          userId:localStorage.gerenxinxiId
                        }
                }).then(function (response) {
                    console.log(response.data);
                    if(response.data.code=="200"){
                        that.favoriteList="";//这样效果不好,网速不好会闪一下
                        that.getData(1);
                    }else{
                        Toast({//mintui提示效果
                              message: response.data.msg,
                              duration: 2000
                            });
                    }
                }).catch(function(res){
                    console.log(res);
                    Toast({//mintui提示效果
                      message: '服务器错误',
                      duration: 2000
                    });
                })
            },action=>{
                console.log("取消");
            });




axios.get(comLink.apihost+'/app/user/saveAddr.html',{
                  params:{
                      id:this.id,
                      phone:this.phone,
                      name:this.name,
                      province:this.province,
                      city:this.city,
                      district:this.district,
                      address:this.address,
                      userId:localStorage.gerenxinxiId,
                    }
            }).then(function (response) {
              console.log(response.data);
                if(response.data.code=="200"){
                  that.$router.push({ path: '/mine/mydizhi'});
                }else{
                    Toast({//mintui提示效果
                          message: response.data.msg,
                          duration: 2000
                        });
                }
            }).catch(function(res){
                console.log(res);
                Toast({//mintui提示效果
                  message: '服务器错误',
                  duration: 2000
                });
            })




//图片预览插件
<img class="preview-img" v-for="(data,i) in imgs" :key="i" :src="data.src" @click="$preview.open(i, imgs,options)">




imgs: [],
options: {
        index: 3,
        escKey: false,
        allowPanToNext:true,
        timeToIdle: 4000
      }


for (var i = 0; i < response.data.imgs.length; i++) {//改变数据格式,适配图片预览插件
              that.imgs.push({src:comLink.apihost + response.data.imgs[i]});
              that.imgs[i].w = 600;
              that.imgs[i].h = 400;
            }




//确定取消弹框
          MessageBox.confirm("您还未选择保险,是否去选择保险?")
            .then(action => {
              this.$router.push({ path: "/menpiao/baoxian" });
            })
            .catch(function() {});








//时间戳处理
console.log(Math.round(new Date().getTime() / 1000)); //获取当前时间戳
            var oneDay = 77400; //每天的时间戳
            var endtime = response.data.scenicTicketsDto.presellNum * oneDay; //天数剩时间戳
            var endtime2 = Math.round(new Date().getTime() / 1000) + endtime; //当天时间戳加上可预订天数时间戳
            var d = new Date(endtime2 * 1000); //这两句时间戳转时间
            var endtime3 =
              d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate(); //转成-的格式
            console.log("可预约时间为" + endtime3);
            that.endDate = new Date(endtime3);






//vuex使用
配置
const state = {
    insurance: [], //保险临时数据
    lianxiren: [], //联系人临时数据
    youhuiquan: [], //优惠券临时数据
    vip: [], //开通vip临时数据
};


export default {
    //设置保险临时数据
    setInsuranceData(state, insuranceData) {
        state.insurance = insuranceData
    },
    // 设置联系人临时数据
    setLianxirenData(state, lianxirenData) {
        state.lianxiren = lianxirenData;
    },
    // 设置优惠券2临时数据
    setyouhuiquanData(state, youhuiquanData) {
        state.youhuiquan = youhuiquanData;
    },
    // 设置优惠券2临时数据
    setVipData(state, vipData) {
        state.vip = vipData;
    },
}


export default {
    getInsuranceData: state => {
        return state.insurance
    },
    getLianxirenData: state => {
        return state.lianxiren
    },
    getyouhuiquanData: state => {
        return state.youhuiquan
    },
    getVipData: state => {//设置获取方法
        return state.vip
    }
}


使用
this.$store.commit("setLianxirenData", {//传入
                username: this.username,
                IDnum: this.IDnum,
                sex: this.sex,
                phone: this.phone,
                email: this.email,
                QQ: this.QQ,
                weachat: this.weachat,
                text: this.text
              });
 
this.$store.getters.getLianxirenData//获取数据






//时间戳换算
console.log(Math.round(new Date().getTime() / 1000)); //获取当前时间戳
            var oneDay = 77400; //每天的时间戳
            //var endtime = response.data.scenicTicketsDto.presellNum * oneDay; //天数剩时间戳
            //var endtime2 = Math.round(new Date().getTime() / 1000) + endtime; //当天时间戳加上可预订天数时间戳
            //var d = new Date(endtime2 * 1000); //这两句时间戳转时            // var endtime3 =
            //   d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate(); //转成-的格式


var d = new Date(data); //格式化中国标准时间
      var youWant =
        d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
      this.time = youWant;


//原生api时间计算
 var d = new Date();//获取当前时间
            console.log(d.getDate())
            //setDate() 方法用于设置一个月的某一天。先获取当前天数+可预定天数
            d.setDate(d.getDate() + response.data.scenicTicketsDto.presellNum);
            that.endDate = d;




//原生提示框
$('.hint').on("click", function() {
                var a = confirm("不绑定手机号,部分功能将无法使用!");
                if (a == true) {
                    window.location.href = "http://www.baidu.com"
                } else {}
            })


//移动端屏幕适配函数
<script>
    (function(doc, win) {
        console.log("屏幕适配函数执行");
        var _root = doc.documentElement,
            resizeEvent = 'orientationchange' in window ? 'orientationchange' : 'resize',
            resizeCallback = function() {
                var clientWidth = _root.clientWidth,
                    //三个12需要根据设计图来更改
                    fontSize = 12;
                console.log(clientWidth)
                if (!clientWidth) return;
                if (clientWidth < 640) {
                    fontSize = 12 * (clientWidth / 320);
                    console.log(fontSize)
                } else {
                    fontSize = 12 * (640 / 320);
                }
                _root.style.fontSize = fontSize + 'px';
            };
        if (!doc.addEventListener) return;
        win.addEventListener(resizeEvent, resizeCallback, false);
        doc.addEventListener('DOMContentLoaded', resizeCallback, false);
    })(document, window);
</script>




package.json里面
"dev": "webpack-dev-server --inline --progress --open --config build/webpack.dev.conf.js", //加了--open才会自动打开,不能有注释








vue项目目录结构


   ├── index.html                      入口页面
    ├── build                           构建脚本目录
    │   ├── build-server.js                 运行本地构建服务器,可以访问构建后的页面
    │   ├── build.js                        生产环境构建脚本
    │   ├── dev-client.js                   开发服务器热重载脚本,主要用来实现开发阶段的页面自动刷新
    │   ├── dev-server.js                   运行本地开发服务器
    │   ├── utils.js                        构建相关工具方法
    │   ├── webpack.base.conf.js            wabpack基础配置
    │   ├── webpack.dev.conf.js             wabpack开发环境配置
    │   └── webpack.prod.conf.js            wabpack生产环境配置
    ├── config                          项目配置
    │   ├── dev.env.js                      开发环境变量
    │   ├── index.js                        项目配置文件
    │   ├── prod.env.js                     生产环境变量
    │   └── test.env.js                     测试环境变量
    ├── mock                            mock数据目录
    │   └── hello.js
    ├── package.json                    npm包配置文件,里面定义了项目的npm脚本,依赖包等信息
    ├── src                             项目源码目录    
    │   ├── main.js                         入口js文件
    │   ├── app.vue                         根组件
    │   ├── components                      公共组件目录
    │   │   └── title.vue
    │   ├── assets                          资源目录,这里的资源会被wabpack构建
    │   │   └── images
    │   │       └── logo.png
    │   ├── routes                          前端路由
    │   │   └── index.js
    │   ├── store                           应用级数据(state)
    │   │   └── index.js
    │   └── views                           页面目录
    │       ├── hello.vue
    │       └── notfound.vue
    ├── static                          纯静态资源,不会被wabpack构建。
    └── test                            测试文件目录(unit&e2e)
        └── unit                            单元测试
            ├── index.js                        入口脚本
            ├── karma.conf.js                   karma配置文件
            └── specs                           单测case目录
                └── Hello.spec.js




-save-dev 是指将包信息添加到 package.json 里的 devDependencies节点,表示开发时依赖的包。
-save 是指将包信息添加到 package.json 里的dependencies节点,表示发布时依赖的包。




子组件的使用
1、文件放在src的subcomponents文件夹内
2、和普通组件一样的写法
3、在父组件中的使用
只需要在父组件中导入
import subswipe from "./../../subcomponents/subswipe";
在父组件中注册子组件
export default {
  data() {
    return{
      
    }
  },
  components: {
    subswipe
  }
};


在html中以标签的形式导入
<subswipe></subswipe>
父传值给子组件
先在子组件定义props和data同级
props:{'lunbo_url':String,'lunbo_time':{
            type: Number,//限制传入类型
            required: true,//是否必须
            validator: function (value) {//验证要求value大于等于1000
                return value >= 1000
            }
        }}
在父组件html中导入时
<subswipe lunbo_url="api/getlunbo"  :lunbo_time="time"></subswipe>
在子组件html中使用
<mt-swipe :auto="lunbo_time">


子传值给父组件
在子组件的methods中定义函数,通过事件调用或者函数内调用触发
notify(){
                /**
                * 参数1:要触发的事件名称
                * 参数2:传递的值
                */
                this.$emit('numberChange',this.count)
            }
在父组件的html中通过v-on绑定触发事件,要对应一个函数
<subnumber v-on:numberChange="getSubNumberCount"></subnumber>
在父组件的methods中定义getSubNumberCount函数,函数返回值就是子页面传来的
getSubNumberCount(count){
                this.myCount = count
            },


vue组件切换动画效果
html
 <transition name="slide"> 
     <router-view/>
 </transition>


css
.slide-enter-active {
  transition: all 0.5s cubic-bezier(1, 0.5, 0.8, 1);
}
.slide-leave-active {
  transition: all 0.3s cubic-bezier(1, 0.5, 0.8, 1);
}
.slide-enter {
  transform: translateX(-100%);
  opacity: 0;
}
.slide-leave-to {
  transform: translateX(100%);
  opacity: 0;
}
// 组件过渡过程中,会有四个CSS类名进行切换,这四个类名与上面transition的name属性有关,比如name="slide",会有如下四个CSS类名:
// slide-enter:进入过渡的开始状态,元素被插入时生效,只应用一帧后立即删除;
// slide-enter-active:进入过渡的结束状态,元素被插入时就生效,在过渡过程完成之后移除;
// slide-leave:离开过渡的开始状态,元素被删除时触发,只应用一帧后立即删除;
// slide-leave-active:离开过渡的结束状态,元素被删除时生效,离开过渡完成之后被删除;




vue前进刷新后退不刷新(keep-alive组件缓存)
根组件app.vue
<keep-alive>
       <router-view v-if="$route.meta.keepAlive"></router-view>
      </keep-alive>
      <router-view v-if="!$route.meta.keepAlive"></router-view>
路由配置.js
需要缓存的页面加 meta: { keepAlive: true }
{ path: '/home', name: '花卉乐园', component: home, meta: { keepAlive: true } },


纯css阻止鼠标点击事件
.disabled {
    pointer-events: none;
    cursor: default;
    opacity: 0.6;
}


//限制子盒子换行
 <div class="subscribe-content-top">
                <ul>
                    <li>单品花束</li>
                    <li>混合花束</li>
                    <li>MINI花束</li>
                    <li>礼品</li>
                    <li>花瓶</li>
                    <li>花瓶</li>
                    <li>花瓶</li>
                    <li>花瓶</li>
                    <li>花瓶</li>
                </ul>
            </div>


.subscribe-content-top {
      position: fixed;
      background: white;
      height: 36px;
      overflow-x: scroll;
      overflow-y: hidden;
      display: inline-block;
      width: 100%;
      ul {
        height: 36px;
        overflow-x: scroll;
        overflow-y: hidden;
        display: inline-block;
        white-space: nowrap;
        li {
          display: inline-block;
          line-height: 36px;
          padding: 0 13px;
          font-size: 14px;
          font-weight: 400;
        }
      }


//媒体查询适应移动端屏幕
//因为vscode默认rem是16像素,所以在375屏幕时需要把html的fontsize设置为16px,
//因此将屏幕宽度设置为23.4375份,以保持同等比例
// @media screen and (width:320px) {
//     html {
//         font-size: (320px/23.4375);
//     }
// }
// @media screen and (width:360px) {
//     html {
//         font-size: (360px/23.4375);
//     }
// }
// @media screen and (width:375px) {
//     html {
//         font-size: (375px/23.4375);
//     }
// }
// @media screen and (width:380px) {
//     html {
//         font-size: (380px/23.4375);
//     }
// }
// @media screen and (width:384px) {
//     html {
//         font-size: (384px/23.4375);
//     }
// }
// @media screen and (width:412px) {
//     html {
//         font-size: (412px/23.4375);
//     }
// }
// @media screen and (width:414px) {
//     html {
//         font-size: (414px/23.4375);
//     }
// }
// @media screen and (width:480px) {
//     html {
//         font-size: (480px/23.4375);
//     }
// }
// @media screen and (width:600px) {
//     html {
//         font-size: (600px/23.4375);
//     }
// }
// @media screen and (width:640px) {
//     html {
//         font-size: (640px/23.4375);
//     }
// }
// @media screen and (width:750px) {
//     html {
//         font-size: (750px/23.4375);
//     }
// }
// @media screen and (width:768px) {
//     html {
//         font-size: (768px/23.4375);
//     }
// }
// @media screen and (width:800px) {
//     html {
//         font-size: (800px/23.4375);
//     }
// }
// @media screen and (width:1024px) {
//     html {
//         font-size: (1024px/23.4375);
//     }
// }
// @media screen and (width:1280px) {
//     html {
//         font-size: (1280px/23.4375);
//     }
// }
// @media screen and (width:1440px) {
//     html {
//         font-size: (1440px/23.4375);
//     }
// }




(function(doc, win) {
            var docEl = doc.documentElement,
                resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
                recalc = function() {
                    var clientWidth = docEl.clientWidth;
                    if (!clientWidth) return;
                    // 根据设备的比例调整初始font-size大小
                    if (clientWidth > 750) clientWidth = 750;
                    docEl.style.fontSize = 16 * (clientWidth / 375) + 'px';
                };
            if (!doc.addEventListener) return;
            win.addEventListener(resizeEvt, recalc, false);
            doc.addEventListener('DOMContentLoaded', recalc, false);
        })(document, window);




//本地存储json数据
sessionStorage.flowerGoods_data = JSON.stringify([
                {
                  cartId: "",
                  skuId: this.skuId,buySubscribe,
                  itemId: this.item.id,
                  num: this.peoplenum
                }
              ]);


vue动态类名绑定
<div :class="classA ? 'class-a' : 'class-b' ">Demo3</div>










原生3d列子配置
<!DOCTYPE html>
<html lang="en">


<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>全景</title>
    <link rel="stylesheet" href="./lib/Photo-Sphere-Viewer-master/dist/photo-sphere-viewer.css">
</head>


<body>
    <div id="containerId" style="height:800px;width:1000px;background:red;"></div>
    <div id="image" style="height:5px;width:6px;background:pink;"></div>
</body>


</html>
<script src="./lib/malko-D.js-v0.7.5-4-g5217f4c/malko-D.js-5217f4c/lib/D.min.js"></script>
<script src="./lib/uEvent-master/uevent.min.js"></script>
<script src="./lib/doT-master/doT.min.js"></script>
<script src="./lib/three.js-master/build/three.min.js"></script>
<script src="./lib/Photo-Sphere-Viewer-master/dist/photo-sphere-viewer.js"></script>
<script>
    var viewer = PhotoSphereViewer({
        container: 'containerId', //显示的盒子
        panorama: './img/3dimg.jpg', //图片路径,可以用对象显示6张立体的
        caption: "全景demo", //标题
        fisheye: false, //是否鱼眼显示
        //标记
        markers: [{
            // 当单击面板时打开面板的图像标记
            id: 'image', //标记id
            longitude: 0.2, //经度
            latitude: -0.13770, //纬度
            image: './img/pin-blue.png', //标记的图像路径
            width: 32, //标记的宽高
            height: 32,
            anchor: 'bottom center', //定义标记朝向其位置的位置,任何css职位都有效,如最低中位或20%80%,忽略多边形。
            tooltip: '工具提示内容. <b>点击我</b>', //工具提示内容
            content: "点击提示的内容", //点击提示内容
        }],
        move_speed: 1, //鼠标滑动速度
        //提示(不晓得是啥提示)
        tooltip: {
            offset: 5,
            arrow_size: 7,
            delay: 100
        },
        move_inertia: false, //在手动移动后启用平滑动画。
        loading_img: null, //显示在加载圆中心的图片路径
        loading_txt: "加载中...",
        mousewheel: true, //是否允许鼠标滚轮放大缩小
        mousemove: true, //是否允许鼠标点击+移动事件旋转视图
        keyboard: true, //启用全屏幕键盘导航
        gyroscope: true, //启用陀螺仪导航并在设备支持时添加导航栏按钮。
        size: null, //如果使用全景容器的最终尺寸(例如{width:500,height:300}。默认情况下使用容器的尺寸并在窗口调整大小时遵循
        //配置全景图之间的过渡效果
        transition: {
            duration: 1500, // duration of transition in milliseconds
            loader: true // should display the loader ?
        },
        //导航栏按钮工具提示文本
        lang: {
            autorotate: '自动旋转',
            zoom: '视图大小',
            zoomOut: '视图放大',
            zoomIn: '视图缩小',
            download: '下载图片',
            fullscreen: '全屏',
            markers: '商品列表',
            gyroscope: '陀螺仪'
        },
        //启用或禁用导航栏,默认显示,您还可以选择显示哪些按钮,甚至可以添加自定义按钮。
        // navbar:false,
        navbar: [
            'autorotate',
            // 'zoom',
            'markers',
            {
                id: 'my-button',
                title: '',
                className: 'custom-button',
                content: 'button',
                onClick: function () {
                    alert('Hello from custom button');
                }
            },
            'caption',//标题
            'fullscreen'//全屏
        ],
        min_fov:30,//最小视野(1-179之间)
        max_fov:90,//最大视野
        default_fov:90,//初始视野,在min_fov和max_fov之间。
        click_event_on_marker:true,//点击标记会触发点击事件以及选择标记。
    });
</script>






react-native改变安卓查包路径
file\:///C:/Android/gradle-2.14.1-all.zip


css边框阴影 box-shadow: 0px 0px 10px 1px #ccc;















  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值