前端踩坑

1.display遇上transition。

需求:元素渐隐渐现,或者带有某种动画出现时,也就是说元素刚开始的样式display:none, opactiy: 0, transition: all ease 500。后续用js控制元素的样式让其渐现:ele.style.display='block', ele.style.opacity=1。会发现动画也就是opacity并没有生效。原因是因为:opacity: 0还没有生效,就被opactiy: 1覆盖。解决办法:在ele.style.display='block'之后延迟执行ele.style.opacity=1, 即

ele.style.display = 'block'
setTimeout(()=>{ele.style.opacity=1},700)
这样做,使得opacity:0,生效,这样,动画才会按照预期出现。



  
  
  
  display与transition
  


  
  
  

  

2.safari mobile 7.0以上版本有个click事件点击目标元素失效bug,出现的前提条件是:1.目标元素不是互动型的元素(例如div)。2.没有在目标元素上直接添加监听事件(例如事件委托)。

解决bug的方法如下:

  • 对目标元素或者它的任意后代设置css属性: cursor: pointer; 
  • 在目标元素或者它的后代上添加 onclick="void(0)" 但不包括body元素
  • 利用典型的互动型元素(例如a)取代非互动型元素(div)
  • 不使用事件委托,直接在目标元素上进行事件监听。

safari mobile认为如下元素为互动型元素。

a、area、button、img、input、label、textarea




你可能感兴趣的:(JavaScript应用,css)