上下文菜單網頁顯示技術研究

      網友投稿 1035 2022-05-30

      1??????引言

      最近收到調研需求,是關于jQuery-contextMenu的替換研究。我們先來看看這個庫是干什么的。

      $.contextMenu是一個管理設施,就是上下文菜單。它是為了可以為數百個元素顯示上下文菜單的應用而設計的,所以初始化速度和內存使用量都相當小。它還允許注冊上下文菜單而不提供實際的標記,因為$.contextMenu會根據需要生成DOME元素。

      下面是一個運行效果圖:

      2??????依賴

      jQuery >=1.8.2

      jQuery UI位置(可選,但推薦)

      3??????用例

      right?click?me

      $(function()?{

      $.contextMenu({

      selector:?'.context-menu-one',

      callback:?function(key,?options)?{

      var?m?=?"clicked:?"?+?key;

      window.console?&&?console.log(m)?||?alert(m);

      },

      items:?{

      "edit":?{name:?"Edit",?icon:?"edit"},

      "cut":?{name:?"Cut",?icon:?"cut"},

      copy:?{name:?"Copy",?icon:?"copy"},

      "paste":?{name:?"Paste",?icon:?"paste"},

      "delete":?{name:?"Delete",?icon:?"delete"},

      "sep1":?"---------",

      "quit":?{name:?"Quit",?icon:?function(){

      return?'context-menu-icon?context-menu-icon-quit';

      }}

      }

      });

      $('.context-menu-one').on('click',?function(e){

      console.log('clicked',?this);

      })

      });

      4??????可能的替換庫

      4.1????react-contextmenu

      在React中支持可訪問性的ContextMenu。

      4.1.1????運行效果

      4.1.2????最新版本

      2.14.0?于?2020年6月

      4.1.3????License

      MIT

      4.1.4????官方地址

      https://github.com/vkbansal/react-contextmenu

      4.1.5????安裝

      npm install --save react-contextmenu

      4.1.6????使用

      import?React?from?"react";

      import?ReactDOM?from?"react-dom";

      import?{?ContextMenu,?MenuItem,?ContextMenuTrigger?}?from?"react-contextmenu";

      function?handleClick(e,?data)?{

      console.log(data.foo);

      }

      function?MyApp()?{

      return?(

      {/*?注意:id在每一對中必須是唯一的。?*/}

      Right?click?to?see?the?menu

      ContextMenu?Item?1

      ContextMenu?Item?2

      ContextMenu?Item?3

      );

      }

      ReactDOM.render(,?document.getElementById("main"));

      4.2????ngx-contextmenu

      受ui.bootstrap.contextMenu啟發,使用Angular構建的上下文菜單。標注中包含了Bootstrap類,但沒有明確依賴Bootstrap。

      4.2.1????運行效果

      4.2.2????最新版本

      5.4.0?于?2020年2月

      4.2.3????License

      MIT

      4.2.4????官方地址

      https://github.com/isaacplmann/ngx-contextmenu

      4.2.5????安裝

      npm install ngx-contextmenu @angular/cdk

      4.2.6????使用

      @Component({

      ...

      })

      export?class?MyContextMenuClass?{

      public?items?=?[

      {?name:?'John',?otherProperty:?'Foo'?},

      {?name:?'Joe',?otherProperty:?'Bar'?}

      ];

      @ViewChild(ContextMenuComponent)?public?basicMenu:?ContextMenuComponent;

      }

        Right?Click:?{{item?.name}}

      Say?hi!

      Bye,?{{item?.name}}

      Input?something:?

      4.3????PrimeNG ContextMenu

      ContextMenu在右擊目標時顯示一個疊加菜單。這個頁面有兩個菜單,一個是文檔菜單,一個是圖片菜單。

      4.3.1????運行效果

      4.3.2????最新版本

      9.1.0?于?2020年5月

      4.3.3????License

      MIT

      4.3.4????官方地址

      https://github.com/primefaces/primeng

      4.3.5????安裝

      npm install primeng --save

      npm install primeicons --save

      在樣式部分配置所需的樣式,下面的例子使用Nova Light主題。

      "styles":?[

      "node_modules/primeng/resources/themes/nova-light/theme.css",

      "node_modules/primeng/resources/primeng.min.css",

      "node_modules/primeicons/primeicons.css",

      //...

      ],

      4.3.6????使用

      import?{ContextMenuModule}?from?'primeng/contextmenu';

      import?{MenuItem}?from?'primeng/api';

      export?class?ContextMenuDemo?{

      private?items:?MenuItem[];

      ngOnInit()?{

      this.items?=?[

      {

      label:?'File',

      items:?[{

      label:?'New',

      icon:?'pi?pi-fw?pi-plus',

      items:?[

      {label:?'Project'},

      {label:?'Other'},

      ]

      },

      {label:?'Open'},

      {label:?'Quit'}

      ]

      },

      {

      label:?'Edit',

      icon:?'pi?pi-fw?pi-pencil',

      items:?[

      {label:?'Delete',?icon:?'pi?pi-fw?pi-trash'},

      {label:?'Refresh',?icon:?'pi?pi-fw?pi-refresh'}

      ]

      }

      ];

      }

      }

      4.4????PrimeReact-ContextMenu

      ContextMenu在右擊目標時顯示一個覆蓋菜單。

      4.4.1????運行效果

      4.4.2????最新版本

      4.2.2?于?2020年6月

      4.4.3????License

      MIT

      4.4.4????官方地址

      https://github.com/primefaces/primereact

      4.4.5????安裝

      npm?install?primereact?--save

      npm?install?primeicons?--save

      4.4.6????使用

      import?{ContextMenu}?from?'primereact/contextmenu';

      const?items:[

      {

      //...

      },

      {

      separator:true

      },

      {

      label:'Quit',

      icon:'pi?pi-fw?pi-power-off'

      }

      ];

      4.5????PrimeVue-ContextMenu

      ContextMenu在右擊目標時顯示一個覆蓋菜單。

      4.5.1????運行效果

      4.5.2????最新版本

      2.0.0.rc.1?于?2020年5月

      4.5.3????官方地址

      https://github.com/primefaces/primevue

      4.5.4????License

      MIT

      4.5.5????安裝

      npm?install?primevue?--save

      npm?install?primeicons?--save

      4.5.6????使用

      import?ContextMenu?from?'primevue/contextmenu';

      export?default?{

      data()?{

      return?{

      items:?[

      {

      label:'File',

      icon:'pi?pi-fw?pi-file',

      },

      {

      separator:true

      },

      {

      label:'Quit',

      icon:'pi?pi-fw?pi-power-off'

      }

      ]

      }

      }

      }

      4.6????antd-React

      可以通過DropDown來顯示上下文菜單。

      4.6.1????運行效果

      4.6.2????最新版本

      4.3.5?于?2020年6月

      4.6.3????官方地址

      https://github.com/ant-design/ant-design

      4.6.4????License

      MIT

      4.6.5????安裝

      npm?install?antd

      4.6.6????使用

      import?'antd/dist/antd.css';

      import?{?Menu,?Dropdown?}?from?'antd';

      const?menu?=?(

      1st menu item

      2nd menu item

      3rd menu item

      );

      ReactDOM.render(

      className="site-dropdown-context-menu"

      style={{

      textAlign:?'center',

      height:?200,

      lineHeight:?'200px',

      }}

      >

      Right Click on here

      ,

      document.getElementById('container'),

      );

      4.7????antd-Angular

      可以通過DropDown來顯示上下文菜單。

      4.7.1????運行效果

      4.7.2????最新版本

      9.2.1?于?2020年6月

      4.7.3????官方地址

      https://github.com/NG-ZORRO/ng-zorro-antd

      4.7.4????License

      MIT

      4.7.5????安裝

      npm?install?ng-zorro-antd

      4.7.6????使用

      引入模塊:

      import?{?NzButtonModule?}?from?'ng-zorro-antd/button';

      @NgModule({

      imports:?[?NzButtonModule?]

      })

      export?class?AppModule?{

      }

      并在angular.json中導入樣式和SVG圖標資產文件鏈接。:

      {

      "assets":?[

      {

      "glob":?"**/*",

      "input":?"./node_modules/@ant-design/icons-angular/src/inline-svg/",

      "output":?"/assets/"

      }

      ],

      "styles":?[

      "node_modules/ng-zorro-antd/ng-zorro-antd.min.css"

      ]

      }

      模板:

      Right?Click?on?here

      1st?menu?item

      2nd?menu?item

      disabled?menu?item

        3rd?menu?item

        4th?menu?item

        3rd?menu?item

        4th?menu?item

      風格定制:

      styles:?[

      `

      .context-area?{

      background:?#f7f7f7;

      color:?#777;

      text-align:?center;

      height:?200px;

      line-height:?200px;

      }

      `

      ]

      組件代碼:

      export?class?NzDemoDropdownContextMenuComponent?{

      contextMenu($event:?MouseEvent,?menu:?NzDropdownMenuComponent):?void?{

      this.nzContextMenuService.create($event,?menu);

      }

      closeMenu():?void?{

      this.nzContextMenuService.close();

      }

      constructor(private?nzContextMenuService:?NzContextMenuService)?{}

      }

      4.8????ant-design-vue

      可以通過DropDown來顯示上下文菜單。

      4.8.1????運行效果

      4.8.2????最新版本

      1.6.2?于?2020年6月

      4.8.3????官方地址

      https://github.com/vueComponent/ant-design-vue

      4.8.4????License

      MIT

      4.8.5????安裝

      npm?install?ant-design-vue?--save

      4.8.6????使用

      import?Antd?from?'ant-design-vue';

      Vue.use(Antd);

      軟件開發 網站

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格界面的功能有哪些(excel表格都有哪些功能)
      下一篇:Python精確指南——第三章 Selenium和爬蟲(Python第三章)
      相關文章
      亚洲一区二区影院| 亚洲综合在线观看视频| 亚洲导航深夜福利| 亚洲精品视频在线观看视频| 亚洲视频在线一区二区三区| 精品亚洲国产成AV人片传媒| 亚洲图片一区二区| 亚洲精品免费在线| 亚洲国产精品久久网午夜| 亚洲同性男gay网站在线观看| 亚洲成aⅴ人在线观看| 亚洲不卡中文字幕| 国产精品亚洲精品观看不卡| 自拍偷区亚洲国内自拍| 亚洲日韩精品国产3区| 亚洲AV无码国产精品永久一区| 在线观看亚洲电影| 亚洲精品乱码久久久久久不卡| 亚洲日本中文字幕天堂网| 亚洲精品无码专区2| 亚洲中文字幕无码久久综合网| 亚洲午夜未满十八勿入网站2| 亚洲AV午夜福利精品一区二区| 亚洲AV乱码一区二区三区林ゆな| 亚洲三级电影网址| 亚洲黑人嫩小videos| 亚洲国语在线视频手机在线| 亚洲综合色一区二区三区| 亚洲AV日韩AV永久无码色欲| 亚洲国产精品一区二区九九| 亚洲最大激情中文字幕| 婷婷亚洲久悠悠色悠在线播放| 亚洲精品国产免费| 亚洲卡一卡二卡乱码新区| 亚洲AV无码国产一区二区三区| 久久亚洲国产成人影院网站 | 欧洲亚洲国产清在高| 亚洲欧洲日产国码久在线观看| 亚洲成人免费网站| 亚洲中文无码永久免费| 亚洲AⅤ优女AV综合久久久|