在config目录下,改index.js
build 》assetsPublicPath: './',
直接上代码,nice
结构
<ul class="area-nav" ref="citynav">
<li class="active">贵阳市</li>
<li>遵义市</li>
<li>六盘水市</li>
<li>安顺市</li>
<li>毕节市</li>
<li>铜仁市</li>
<li>黔东南市</li>
<li>黔南市</li>
<li>黔西南市</li>
</ul>
样式
.area-nav{
height: 53px;
width: 100%;
display: flex;
flex-direction: row;
/* flex-wrap: nowrap; */
/* justify-content: space-between; */
border-bottom: 1px solid #E9D9D6;;
margin-bottom: 21px;
overflow-x: auto;
overflow-y: hidden;
transition: margin-left 2s;
-webkit-transition: margin-left 2s; /* Safari */
}
.area-nav::-webkit-scrollbar{
height: 5px;
}
.area-nav li{
font-size: 22px;
font-family: Microsoft YaHei;
font-weight: 400;
line-height: 50px;
color: #333333;
position: relative;
display: inline-table;
padding: 0 20px;
flex-shrink: 0;
}
.area-nav li.active,.area-nav li:hover{
font-size: 28px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #FA3230;
}
.area-nav li.active:after,.area-nav li:hover:after{
content: '';
position: absolute;
bottom: 1px;
left: 50%;
transform: translate(-50%, 0);
width: 40%;
height: 6px;
background: #FF5B36;
border-radius: 3px;
}
脚本
cityBanner:function(){
let speed = 0;
let pl = 0;//判断上一次值和本次值是否一样调换方向
window.setInterval(function(){
//这里scrollWidth 不是scrollLeft值
if(speed == 2 && pl == thisApp.$refs.citynav.scrollLeft){
speed = -1;
}else if(thisApp.$refs.citynav.scrollLeft == 0){
speed = 2;
}
pl = thisApp.$refs.citynav.scrollLeft;
thisApp.$refs.citynav.scrollLeft += speed;
},50);
}
我相信,好多查这个问题的人都知道怎样删除数组数据。但在查找情况下,及查到一个值删除一个值,就不会了
vue删除值通常有3种
arr.aplice(索引值,删除长度);
delete arr[索引值];
this.$delete(arr,索引值);
那问题来了,查找呢?
开始我是这样写的,哈哈,发现有问题,删除某一项数据后,数组大小会变,按索引值不对后面就不对了
for(let s in data){
if(data[s] == search){
data.splice(s,1);
}
}
这个问题纠结我了好久,突然想到,把数组倒过来查并删除数据项,就不会出现这样的情况了,突然想通过了,有点好气的感觉,原来,就这么简单。哈哈,你是不是也有这样的感觉?
for(let s=data.length-1;s>=0;s++){
if(data[s] == search){
data.splice(s,1);
}
}
在配置虚拟服务器前,先要配置要独立IP
配置独立IP会出现 DHCP(动态主机配置协议)失效问题,而且,使用疑难问题修复,可能导致网站不能访问,但如果刚好想设置只开通外网访问功能,就可以这样了。如果想上网,局域服务器 配置DNS与主机地址相同(但期间设置过DMZ,如果还是不可以,试一下DMZ)
我这里是关闭防火墙生效的,没有尝试打开防火墙的情况
Word文档生成有很多种方式,图简单,其实可以就按html排版,一键导出
网页直接导出,记得加上导出word约束的头($fileName,导出的文件名)
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$fileName");
这种导出呢,样式和原生网页是有点问题,但注意单位和尺寸,就没有多大问题了,具体的要自己尝试
但现在的开发,基本上都是前后端分离,API方式调用,那怎么实现呢?
同样是调用地址就OK了吗?
不是的,直接调用网页的地址,发现没有反应,第一反应是不是API头部约束了什么,导致了不能直接下载原格式的word文档
琢磨了好久,没有成功,我换了一种思路,先把word文档保存起来,返回文档下载路径给API
期间我请求了一下API,居然可以正常返回了,但只是html代码,情况是我在准备保存word文档到本地的时候,去掉了头部约束,是header的影响
那能正常返回就好办了,两种方式
第一种,就是直接保存为word文档下载。
第二种,正常返回后,转为word文档保存。
第一种没有什么可谈的,容易理解也好办
第二种以Axios为例
function apiRequestDownload(url, filename, type, formData, config = {}) {
return new Promise((resolve, reject) => {
Axios({ url, responseType: "blob", method: type, data: formData,config })
.then(result => {
let fileURL = window.URL.createObjectURL(
new Blob([result.data], { type: '' })
);
let fileLink = document.createElement("a");
fileLink.href = fileURL;
fileLink.setAttribute("download", filename);
document.body.appendChild(fileLink);
fileLink.click();
resolve(result);
})
.catch(err => {
reject(err);
});
});
}