那些年玩前端遇到的坑们(一)z-index不是很好玩,z-index和事件触发机制往往不会像你想象的顺利。

今天我决定来讲讲一些具体的问题。上班到了第二个月,感觉工作压力和强度也不算很大,但是遇到了很多“名为经验”的小知识和小习惯。

今天讲的故事是这样的,我现在有一个页面,想做一个渐渐浮现起来的全局菜单,

  • 菜单浮现前的css属性为


z-index: -1;
overflow:scroll; //因为菜单可能内容会多,这样可以滚屏下去找
opacity: 0;

  • 点击菜单按钮后,更新的css属性为


z-index: 999;//一个很高的值,覆盖所有
opacity: 1; //可以添加个transition,有种渐渐浮现的效果。

  • html结构大致是这样


<div class="menu"></div>
<div class="main"></div>

问题来了,突然发现,在android上一切正常,而在iOS上出现了页面无法滚动的问题,或者觉得滚得很不顺。(我没有iPhone。。。别人发现的)

我探索了好久才发现可能跟菜单有关系,因为我先滑动一下屏幕,页面没有动静,但是点开菜单,里面的内容却是已经滑动过的了。

后来将点击按钮前的菜单的overflow属性先设置成hidden,等到浮现后才打开scroll,果然没有了这个问题。

出现这个问题是因为我想当然以为scroll这个动作会在鼠标区域中的z-index最高的部分先进行,结果iOS中可能是从文档顺序较前或者较高的位置进行触发的,所以先触发了z-index较低位置的事件。

所以除了z-index和滚动需要警惕之外,还有一点是,最好就是尽就避免用z-index做这个效果,不出现的内容就把高度宽度降到0,这样就算是overflow:scroll的一个元素,鼠标或者接触点发生scroll的位置根本不会影响到这个元素。

上述的问题真实存在,原因纯属猜测,没有经过仔细求证,敬请指正。

总觉得该写点什么

说实话,当初想转行当前端工程师,主要是受到了点朋友圈某技术网红的影响,也想改变点技术男比较不通人情,对于艺术感一无所知的印象。在这个时代,包装自己、为自己创建一个个人品牌、让人觉得自己是有趣的人是一件至关重要的事情。

来到了新公司一个多月,感觉很新鲜,老板比较逗什么都要吐槽;CTO做事感觉极端靠谱;也有几个极客个性鲜明;妹子们很漂亮也很有才气。值得一提的是,我们这个组织是一个热爱分享、热爱趣味的组织,似乎CTO就是一个博客爱好者,很多人也有着自己的微信公众号。越来越觉得,如何表达,和如何写作的重要性——它能让一个人变酷。

这个月来的工作,感觉能给自己打个及格分,我是公司唯一一个交大毕业的,感觉自己对于这份工作来说是合格的,但没有配得上一个交大人应有的水准,这一直困扰着我。希望一年后我能够成为一个独当一面的工程师,拥有着自己创建一个美好的产品的能力,对于现在css还是没太玩熟的我挑战也很大,希望我的出力能使公司走得更远些。

一直觉得自己还是没有达到预期,还有不断拖延的毛病,好在我换工作这件事今年是正常进行了,变成有趣、酷的人这件事还是需要加紧。啊,谁来救救我文章的水准啊。。。怎么形成品牌啊摔!