浮层效果预览 javascript
实现了:
. 点击按钮弹出浮层
. 点击别处关闭浮层
. 点击浮层时,浮层不得关闭
. 再次点击按钮,浮层消失html
要点解析:
页面结构java
<div class="wrapper"> <button class="clickMe">点我</button> <div class="tips"> <span>我是浮层</span> </div> </div>
三角形的实现
注意这里的三角形,实际上是用两个 div 来实现。jquery
.tips::before{ content:''; right:100%; top:3px; border:10px solid transparent; border-right-color:red; position:absolute; } .tips::after{ content:''; right:100%; top:4px; border:9px solid transparent; border-right-color:white; position:absolute; }
小知识:
transparent adj. 透明的
在 ::after
中 border
的像素小一些,背景色变一下,这样边框天然出来了 git
点击按钮:github
$('.clickMe').on('click',(e)=>{$('.tips').toggle(); setTimeout(()=>{ $(document).one('click',()=>{$('.tips').hide()}) },0) }) $('.wrapper').on('click',(e)=>{e.stopPropagation()})
toggle()
主要是切换浮层的转态e.stopPropagation()
阻止事件冒泡api
setTimeout()
定时器,
setTimetout(f,0)
的含义会在下一轮事件循环一开始就执行。
setTimeout(f, 0)
这种写法的目的是,尽量早地执行f
,可是并不能保证马上就执行f
。