【连载】Bootstrap开发漂亮的前端界面之自定义右键菜单

连载:

1《教你用Bootstrap开发漂亮的前端界面》

2.《Bootstrap开发漂亮的前端界面之实现原理》

网页中的自定义右键菜单越来越普遍,自定义右键菜单可以增强用户体验,让用户使用软件更加的简便,今天我们就来基于Bootstrap来开发自己的自定义右键菜单。

一、首先,准备好自定义菜单,供单击右键展示; 菜单默认不可见,可以通过 style="display:block" 进行调试预览;

<ul class="dropdown-menu">
        <li>
            <a href="javascript:;">添加</a>
        </li>
        <li>
            <a href="javascript:;">删除</a>
        </li>
        <li>
            <a href="javascript:;">关于我们</a>
        </li>
</ul>

二、实现点击右键显示自定义菜单;

正确的显示右键菜单,我们需要完成以下3个步骤:

1.右键菜单是一种事件行为;         注册事件,监听浏览器的右键菜单;

2.默认情况下,出现浏览器系统菜单;  阻止浏览器默认事件行为;

3.显示自定义菜单;          根据用户点击的坐标位置,设置自定义菜单的位置,然后进行显示;

$(function(){
         //页面文档对象注册上下文(右键)菜单事件
         $(document).on("contextmenu",function(event){
                    var pageX = event.pageX;//鼠标单击的x坐标
                    var pageY = event.pageY;//鼠标单击的y坐标

                    //获取菜单并设置菜单的位置
                    $("#contextMenu").css({
                        left:pageX+"px",//设置菜单离页面左边距离,left等效于x坐标
                        top:pageY+"px"//设置菜单离页面上边距离,top等效于y坐标
                    }).stop().fadeIn(500);//显示使用淡入效果,比如不需要动画可以使用show()替换;

                    event.preventDefault();//阻止浏览器与事件相关的默认行为;此处就是弹出右键菜单
     });

});

三、隐藏自定义菜单;当用户点击菜单某一项或点击其他区域进行隐藏;

实现方式:用户使用鼠标的左键或中键都要进行自定义菜单的隐藏;设计思路与默认浏览器隐藏菜单方式一致;

//文档对象注册鼠标按下事件;
      $(document).on("mousedown",function(event){
            //button等于0代表左键,button等于1代表中键
            if(event.button==0 || event.button==1){
                   $("#contextMenu").stop().fadeOut(200);//获取菜单停止动画,进行隐藏使用淡出效果
            }
     });

四、处理菜单溢出;请尝试,在页面的最右边点击右键菜单,你会发现菜单会超出页面;

实现方式:判断横向位置(pageX)+自定义菜单宽度之和,如果超过页面宽度及为溢出,需要特殊处理;

      

//文档对象注册上下文(右键)菜单事件
                $(document).on("contextmenu",function(event){
                    var pageX = event.pageX;//鼠标单击的x坐标
                    var pageY = event.pageY;//鼠标单击的y坐标

                    //获取菜单
                    var contextMenu = $("#contextMenu");

                    var cssObj = {
                        top:pageY+"px",//设置菜单离页面上边距离,top等效于y坐标
                        left:pageX+"px"//设置菜单离页面左边距离,left等效于x坐标
                    };

                    //判断横向位置(pageX)+自定义菜单宽度之和,如果超过页面宽度及为溢出,需要特殊处理;
                    var menuWidth = contextMenu.width();
                    var pageWidth = $(document).width();
                    if(pageX+contextMenu.width()>pageWidth){
                        cssObj.left = pageWidth-menuWidth-5+"px"; //-5是预留右边一点空隙,距离右边太紧不太美观;
                    }

                    //设置菜单的位置
                    $("#contextMenu").css(cssObj).stop().fadeIn(200);//显示使用淡入效果,比如不需要动画可以使用show()替换;

                    event.preventDefault();//阻止浏览器与事件相关的默认行为;此处就是弹出右键菜单
                });

如果你是按照本文章步骤进行编写,那么你只需要打开你的自己网页,就可以看到正确的效果了,Over。

时间: 2024-12-11 10:37:30

【连载】Bootstrap开发漂亮的前端界面之自定义右键菜单的相关文章

【连载】Bootstrap开发漂亮的前端界面之插件开发

相关文章: 1.<教你用Bootstrap开发漂亮的前端界面> 2.<Bootstrap开发漂亮的前端界面之实现原理> 3.<Bootstrap开发漂亮的前端界面之自定义右键菜单> 什么是jQuery插件? 首先,来看看我们一般是如何使用jQuery,第一种方式:$.trim(" hello world "),直接使用jQuery中方法,第二种方式:$("#myinput").val(),获取页面中的元素,然后使用jQuery对象

教你用Bootstrap开发漂亮的前端界面

Bootstrap介绍: Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目. Bootstrap的特点: 一.预处理脚本:虽然可以直接使用 Bootstrap 提供的 CSS 样式表,不要忘记 Bootstrap 的源码是基于最流行的 CSS 预处理脚本 - Less 和 Sass 开发的.你可以采用预编译的 CSS 文件快速开发,也可以从源码定制自己需要的样式. 二.一个框架.多种设备:你的网站和应用能在 Bootstrap 

ExtJs是当今最主流的前端界面开发工具之一

摘要:ExtJs是当今最主流的前端界面开发工具之一,功能强大,外观绚丽.虽然网上的开发文档很多,但是在实际应用中仍然会遇到很多问题,本文结合企业信息化.SAP ERP等实际项目开发经验,对使用ExtJs开发做了一个梳理和总结,特别对开发中遇到的重点问题进行了详细阐述,希望能够为大家提供一些帮助.    关键词:ExtJs  IMS  RIA 作用域 id冲突 风格统一1 引言    随着互联网技术的不断发展,网站的互动性越来越强,软件从C/S到B/S,又到了B/S结构的C/S界面体验,伴随着大量

Bootstrap开发前端 进阶(优化及与后端结合接口)总结

Bootstrap开发前端 进阶(优化与接口分析)           chang_jw 通过使用bootstrap3.3.7,html5, CSS3进行购票系统网站前端开发. 实现index,film. Cinema, certain,login, success页面并可形成关联性跳转逻辑. 一,使用Google Fonts 插件进行字体优化 文字是网页中很重要的组成部分.为文字选择一个合适的字体,能够更好的展现一个网站的个性,表达所要传递的信息. 对于font理解首先是从CSS中,如: 浏览

前端界面开发大小单位 px rem em的思考记录

前端界面开发表示大小的单位有 px.rem.em.这三种有什么区别呢?px指像素值,固定大小,较好理解.rem.em的区别呢?em是针对body中的font-size的倍数,rem是针对html的倍数. 1.emem是针对body中font-size的倍数,font-size默认是24px例:body{font-size:62.5%;}则:1em=10px2.remrem是针对html的倍数html {font-size: 62.5%; /**10 ÷ 16 × 100% = 62.5% 1re

从前端界面开发谈微信小程序体验

本文由云+社区发表 这段时间有幸加入了一个关于微信小程序的项目开发组,从无到有的根据文档自行学习了小程序的开发过程,前面已经有几位前辈的文章珠玉在前,我这里就先从前端界面的开发方面谈一谈小程序以及我所遇到的问题吧. 在结构和样式方面,小程序提供了一些常用的标签与控件,比如: view,小程序主要的布局元素,类似于html标签的div,你也完全可以像控制div那样去控制view. scroll-view,你要滚动内容的话,没必要用view去做overflow,scroll-view提供了更为强大的

推荐15款最好的 Twitter Bootstrap 开发工具

Twitter Bootstrap 自从2011年最初发布到网上后,迅速成为 Web 领域最流行的响应式前端开发框架之一,是网页设计的优秀实践.Twitter Bootstrap 框架包含了众多的预定义风格的组件,插件和加载项. 在这篇文章中,我们想向大家介绍15款最好的 Twitter Bootstrap 开发工具以更好地满足要求以及帮助提高他们的 Web 开发的生产力. 您可能感兴趣的相关文章 10大流行 Metro UI 风格 Bootstrap 主题和模板 推荐12款优秀的 Twitte

iOS开发如何学习前端(1)

iOS开发如何学习前端(1) 我为何学前端?因为无聊. 概念 前端大概三大块. HTML CSS JavaScript 基本上每个概念在iOS中都有对应的.HTML请想象成只能拉Autolayout或者设置Frame的ViewController.好比你在网页上放了一个Button,如果用HTML你就可以设置他的摆放位置,在哪哪个控件里.但是你不可以设置大小,颜色,圆角之类的属性.CSS专门负责HTML管不了的这些颜色啊,大小啊之类的属性.JavaScript主要负责响应事件,你把它想象成iOS

Qt Quick应用开发介绍 10-12(动态界面, 实践学习, 总结和扩展)

Chapter10 UI Dynamics and Dynamic UI 动态界面 前面章节学习了在开发时添加item, 让它们invisible; 该怎么做可以让程序根据不同的数据和用户输入来有不同的显示? 这些变化可能比visibility复杂; 我们怎样才能做到让程序UI的动态变化更appealing吸引人, 甚至成为用户体验的一部分? 10.1 Using States 使用state 网络连接对于现在的版本中天气相关的部件是必须的; 它让网络数据可视化; 如果你的电脑不在线, 启动cl