如何不使用js实现鼠标hover弹出菜单效果
最近看到很多同学在实现鼠标hover弹出菜单的效果时都是用的js代码去实现的,默认给弹出隐藏掉,通过js事件绑定动态的显/隐弹出菜单元素。
<ul> <li>主页</li> <li>新闻</li> <li id="more">更多</li> <div class="menu" id="menu"> <ul> <li>退出登录</li> <li>更改密码</li> </ul> </div> </ul>
<style> .menu{ display: none; } </style> <script> window.onload=function(){ var menu=document.getElementById('menu'); var more=document.getElementById('more'); more.addEventListener('mouseenter',function(){ menu.style.display="block"; }); more.addEventListener('mouseleave',function(){ menu.style.display="none"; }); } </script>
这种写法是比较流行的写法,但这种写法需要用到js,多多少少有一点不优雅。现在笔者向大家介绍一种使用css伪类结合子代选择器的方式来实现同样效果的办法。
1.首先需要改变一下dom结构,弹出菜单div和按钮之间改成父子结构
<ul> <li>主页</li> <li>新闻</li> <li id="more" class="more"> <span>更多</span> <div class="menu" id="menu"> <ul> <li>退出登录</li> <li>更改密码</li> </ul> </div> </li> </ul>
2.将之前的script代码统统删掉,改用css伪类和子代选择带
.menu { display: none; } .more:hover>.menu{ display: block; }
就这样就完成啦,代码比之前精简了不少,少了很多js变量,还不用担心dom事件绑定与解绑的问题。
如果想要有更好的用户体验,还可以加上css3的过渡动画。但需要注意的是元素默认display:none的话是不会有动画效果的,需要把display:none;改成visibility:hidden;
而且最好让.menu脱离文档流,比方说给它的position设置成fixed或者absolute,使用transform而不是left、top,这样动画会有更好的性能。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Gson格式转换Integer变为Double类型问题解决
问题描述 在前后端分离的开发模式下,前后端交互通常采用JSON格式数据.自然会涉及到json字符串与JAVA对象之间的转换。实现json字符串与Java对象相互转换的工具很多,常用的有Json、Gson、FastJSON、Jackson等。一次测试中,在将返回给前端的json字符串反序列化为自定义的Response对象时,发现原先json中的Integer类型被转化为了Double类型。便于问题描述,对原有json字符串简化,示例如下: { "status": 200, "msg": "OK", "data": [{ "id": 1, "username": "eric", "password": "123456", "age": 29, "sex": 0, "permission": 0, "isDel": 0 }] } 使用Gson(版本gson-2.8.5)的fromJson方法解析, public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException { Obj...
- 下一篇
个人博客开源系统XBlog介绍和部署
XBlog是dotnet core平台下的个人博客开源系统,它只需要通过Copy的方式即可以部署到Linux和windows系统中;如果你有安全证书那只需要简单配置一下即可提供安全的Https服务。接下来主要介绍XBlog功能、部署和基础设置。 技术要点 基于dotnet core平台,可以运行在windows和linux系统上 完全基于BeetleX.FastHttpAp框架开发 前后端分离,完全脱离后端视图引擎;基于vuejs和webapi模式 混合HTTP和Websocket,当浏览器兼容Websocket的情况下请求会使用Websocket. 基于javascript前端Markdown,降低文章在服务端解释的损耗 支持HTTPS满足安全访问的需求 项目地址:https://github.com/IKende/XBlog 功能介绍 XBlog提供了博客的基础功能主要包括:文章管理,分类管理,评论管理,文件管理,系统资源监控和文章搜索功能. 首页预览 后台预览 设置 主要配置博客信息如Title,ElasticSearch服务地址,关于,JWT KEY和设置用户密码等。 部署 X...
相关文章
文章评论
共有0条评论来说两句吧...