本地项目开发完毕,如何部署到服务器却成了难题,如果不熟悉Linux那简直是遭罪
做个搭建记录,万一以后又用上了呢
这一切都建立在已经有域名并且已经解析到服务器的前提下
最开始由于对z-index和层叠上下文不理解,导致在项目中使用某些属性时出现了问题。现在来总结一下z-index和层叠上下文的一些东西
层叠上下文是一个三维概念。想象一下HTML元素是在屏幕上一层一层铺起来的,最上面的一层会被优先看到,下面的层会被上面的挡住
生成层叠上下文的条件:
层叠上下文是可包含的,独立的。每个层叠上下文与其相邻的层叠上下文互不干扰,每个层叠上下文可以包含层叠上下文。
层叠上下文的概念还是有点空洞,大部分时候只要记住层叠上下文的排列顺序就行了
比如说下面一个例子:
|
|
可以看到float 元素#box1的确覆盖了普通流的#box2和#box3(第3个原则)
普通流的#box3 覆盖了普通流的#box2(第2个原则)
position: relative的#box4 覆盖了normal flow 的#box3(第5个原则)
position: absolute的#box5覆盖了#box4(第5个原则)
inlineBox1 在#box3 之上 (第4个原则)
上面的顺序没有说明z-index 对层叠顺序的影响。如果已定位元素为z-index:auto,那么上面的顺序是完全ok的。如果设置了z-index,那么表现又会不一样。
具体为:
现在我们给#box4 和 #box5添加z-index
再来看看效果:
没错,#box5 成功的跑到了#box4的下面;注意#box5的底部还漏出了‘inline-block’字样,这个是原本就放在#box5下面的inlineBox2。第一个例子没有显现出来,现在显示出来了。
现在看另外一个例子:
|
|
结果是这样的:
可以看到z-index: 9999 的#box-5-1并没有出现在所有元素的最上方,而是被#box4遮住了。 之所以会出现这种情况,是由于z-index只对当前层叠上下文有影响。 #box5设置了z-index: -1 过后就生成了层叠上下文,所以该层叠上下文包含的子元素的层叠顺序是基于该层叠上下文进行的。
层叠层次应该是这样:
一旦普通元素具有了层叠上下文,其层叠顺序就会变高。 一旦某个元素具备产生层叠上下文的条件(比如:opacity: 0.8),那么层叠的顺序会发生变换。
具体又分为两种条件:
来看一看opacity < 1时候的表现:
|
|
|
|
没错!box1 在box2上面。如果不加opacity:0.8,normal flow按照规则应该是会遮挡box1,然而现在box1却在box2上面。
现在给#box2加上position:relative
|
|
???box2又跑到上面去了?
因为position: relative 并没有指定z-index,所以默认的层叠顺序的优先级就是z-index: auto。
不依赖z-index: 层叠顺序相当于z-index: auto
而opacity 不依赖z-index, 所以层叠顺序的优先级也和z-index: auto一样。同时,由于box2在HTML文档中位于box1的下方,因此box2遮挡了box1
由此看出记住层叠顺序相当重要哦!
我感觉脑子有点乱~~~
说起position这个东西,就不得不说z-index 属性, 说起z-index就不得不说层叠上下文
嗯……好复杂
参考
http://www.zhangxinxu.com/wordpress/2016/01/understand-css-stacking-context-order-z-index/
https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Understanding_z_index/The_stacking_context
https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Understanding_z_index
https://www.w3.org/TR/CSS21/zindex.html
使用transform 属性值不为’none’的元素会生成层叠上下文, 而z-index 对层叠水平的影响只有在当前层叠上下文元素中才有意义。因此什么position: fixed; z-index:9999
这种操作直接就跪了(ㄒoㄒ)
transform 还会在某些chrome 版本或360浏览器中使position: fixed absolute化,也就是说position: fixed; right: 0
这种操作和 postition: absolute; right: 0;
一个样子
所以这两个东西属性怕是最好不要一起用,会很头痛
参考 https://router.vuejs.org/zh-cn/advanced/lazy-loading.html
其实很简单, 就是把路由index.js的组件引入改一下就行了
|
|
虽然这样路由可以按需加载, 并且可以在需要跳转路由的时候再下载相应的路由有关的js文件了
理论上讲这样是可以提高首页的加载速度的, 因为毕竟请求的js文件少了嘛。
不过,如果网速不好,相应的js 下载过久的话,再跳转路由的时候会迟迟没有反应,体验也不见得会更好
怎么取舍就看需求了
在写vue-music的时候,希望把song-list组件做成向qq音乐那样,背景颜色根据歌单封面变化
就像这样:
使用canvas 的getImageData可以获取到图片的数据,包括rgba
但是canvas 存在跨域问题。因此服务器端需要设置响应头,并且客户端设置image.crossOrigin = 'anonymous'
实现方式如下: