精华内容
下载资源
问答
  • 介绍这三个组件菜单栏组件JMenuBar:该组件可以添加菜单,添加的菜单会排成一行。菜单栏JMenu:可以显示的一个个的菜单,该组件可以添加子菜单,也可以添加菜单,添加的菜单会排成一列。子菜单JMnuItem:可以添加...

    介绍这三个组件:

    菜单栏组件JMenuBar:该组件可以添加菜单,添加的菜单会排成一行。

    菜单栏JMenu:可以显示的一个个的菜单,该组件可以添加子菜单,也可以添加菜单,添加的菜单会排成一列。

    子菜单JMnuItem:可以添加到菜单中。

    其实这个三个组件还是有点绕人的,但是大家做一遍就理解了,光看不容易懂。


    如何创建组件:

    JMenuBar name=new JMenuBar();    //创建菜单栏
    JMenu name=new JMenu("");     //创建菜单
    JMenuItem name=new JMenuItem("");    //创建子菜单

    代码实现:

    import java.awt.*;
    import javax.swing.*;
    public class Swing_JMenu extends JFrame{
    
    	//定义组件
    	JMenuBar jmb;	//定义菜单栏
    	JMenu jm1,jm2,jm3,jm4,jm5;	//定义菜单
    	JMenu jm6,jm7,jm8,jm9;		//定义菜单中的菜单
    	JMenuItem jmi1,jmi2,jmi3,jmi4,jmi5;		//定义子菜单
    	public static void main(String[] args) {
    		Swing_JMenu a=new Swing_JMenu();
    
    	}
    	public Swing_JMenu()
    	{
    		//创建组件
    		jmb=new JMenuBar();		//创建菜单栏
    		jm1=new JMenu("文件");	//创建菜单
    		jm2=new JMenu("编辑");
    		jm3=new JMenu("资源");
    		jm4=new JMenu("窗口");
    		jm5=new JMenu("帮助");
    		jm6=new JMenu("新建");
    		jm7=new JMenu("打开");
    		jm8=new JMenu("保存");
    		jm9=new JMenu("导入");
    		jmi1=new JMenuItem("文档");	//创建子菜单
    		jmi2=new JMenuItem("工程");
    		jmi3=new JMenuItem("包");
    		jmi4=new JMenuItem("类");
    		jmi5=new JMenuItem("接口");
    		
    		//设置布局管理器
    		
    		//添加组件
    		jm6.add(jmi1);	//把子菜单添加到菜单中
    		jm6.add(jmi2);
    		jm6.add(jmi3);
    		jm6.add(jmi4);
    		jm6.add(jmi5);
    		
    		jm1.add(jm6);	//把菜单添加到菜单中
    		jm1.add(jm7);
    		jm1.add(jm8);
    		jm1.add(jm9);
    		
    		jmb.add(jm1);	//把菜单添加到菜单栏中
    		jmb.add(jm2);
    		jmb.add(jm3);
    		jmb.add(jm4);
    		jmb.add(jm5);
    		
    		this.add(jmb,BorderLayout.NORTH);	//把菜单栏添加到框架北部
    		
    		//设置界面属性
    		this.setTitle("菜单栏案例");		//设置界面标题
    		this.setSize(300, 250);				//设置界面像素
    		this.setLocation(200, 200);			//设置界面初始位置
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//设置虚拟机和界面一同关闭
    		this.setVisible(true);				//设置界面可视化
    	}
    }
    

    常用方法:

    setMnemonic('快捷键') //设置一个快捷键,按住alt+快捷键可以快捷点击


    欢迎各位在评论区留言探讨~~


    展开全文
  • 目录基础思考动手自定义页面结构渲染页面样式绑定事件转为组件创建组件所需的目录及页面复制组件内容声明组件js转换使用引入组件使用组件 基础 参考: 小程序开发文档-自定义组件 小程序开发文档-Component 构造器 ...

    基础

    参考:
    小程序开发文档-自定义组件
    小程序开发文档-Component 构造器
    在不考虑第三方自定义插件的基础上完成此开发

    思考

    1. 组件其实可以理解为抽取的一个公共模块,它取之于页面,又用之于页面,我们首先将需要组件在一个页面中完整实现(html,css,js)
    2. 页面某一块儿被抽取公共模块需要考虑数据的传导。
    3. 在页面中完成样式调整的时候部分样式是否对当前页面有依赖,作为组件是否能适应较复杂的环境(可以通过定义不常用的class,防止覆盖)
    4. 在页面中使用的function是否在组件中同样通用。
    5. 小程序中用于标识是否为组件的方法是在其同级页面下json文件中配置
    {
      "component": true
    }
    
    1. 引用路径问题(组件可能被引入任意页面中,使用绝对路径比相对路径要更为稳妥)

    动手

    自定义页面结构

    <view class="tabBar">
     <block wx:for="{{barlist}}" wx:key="id">
       <view style="width:{{100/barlist.length}}%" bindtap="forwardBar" data-url="{{item.pagePath}}" data-barflag="{{item.barflag}}">
         <image src="{{item.iconPath}}"></image>
         <text style="color:{{item.selectedColor}}">{{item.text}}</text>
       </view>
     </block>
    </view>
    

    说明:
    wx:for="{{barlist}}" 为传入数据,数组类型。
    class=“tabBar” 整体组件样式通过此class控制
    bindtap=“forwardBar” 自定义事件

    渲染页面样式

    .tabBar{
    background-color: #FFF;
    position: fixed;
    bottom: 0;
    width: 100%;
    font-size: 10px;
    font-weight: 400;
    text-align: center;
    padding-top: 5px;
    border-top: 1px solid #E4E4E4;
    }
    
    .tabBar view{
    display: inline-block;
    }
    .tabBar view image {
    height: 25px;
    width: 25px;
    display: block;
    margin: 0 auto;
    }
    .tabBar view text {
    display: block;
    }
    

    绑定事件

    Page({
    
      /**
       * 页面的初始数据
       */
      data: {
        "barlist": [
            {
              "pagePath": "/pages/todolist/todolistedit",
              "text": "工作台",
              "iconPath": "/images/indexselected.png",
              "selectedColor": "#2679f4"
            },
            {
              "pagePath": "/pages/notify/notify",
              "barflag":true,
              "text": "代办通知",
              "iconPath": "/images/notify.png"
            },
            {
              "pagePath": "/pages/report/report",
              "iconPath": "/images/report.png",
              "barflag":true,
              "text": "数据中心"
            },
            {
              "pagePath": "/pages/usercenter/usercenter",
              "barflag":true,
              "iconPath": "/images/usercenter.png",
              "text": "个人中心"
            }
          ]
      },
    forwardBar: function(event){
          const url = event.currentTarget.dataset.url;
          const barflag = event.currentTarget.dataset.barflag;
          if(url){
            if(barflag){
              wx.switchTab({
                'url': url
              })
            }else{
              wx.navigateTo({
                'url': url
              })
            }
           
          }else{
            wx.showToast({
              title: '未配置目标地址',
            })
          }
          
        }
    })
    

    说明:注意替换data中的图片地址
    将以上内容对应到新页面中即可在页面中渲染出如下效果:
    在这里插入图片描述

    转为组件

    创建组件所需的目录及页面

    在这里插入图片描述

    复制组件内容

    分别将前三步里的wxml、js、wxss 复制到对应格式的文件中去

    声明组件

    将【思考5】json复制到组件的json文件中去
    在这里插入图片描述

    js转换

    页面的js使用的page构造器,组件使用Component 构造器
    需要注意的是,组件构造器中data部分是组件的内部数据,如果需要接收外部数据需要在properties 中指定,同时自定义事件也略有不同。
    完整js文件内容

    Component({
      properties: {
        barlist: {
          type: []
        }
      },
      data: {
      },
      methods: {
        // 这里是一个自定义方法
        forwardBar: function(event){
          const url = event.currentTarget.dataset.url;
          const barflag = event.currentTarget.dataset.barflag;
          if(url){
            if(barflag){
              wx.switchTab({
                'url': url
              })
            }else{
              wx.navigateTo({
                'url': url
              })
            }
           
          }else{
            wx.showToast({
              title: '未配置目标地址',
            })
          }
        }
      }
    })
    

    wxml部分不需要修改

    使用

    引入组件

    使用组件在页面的json文件中引入即可,如果想全局通用,在app.json中引入即可

    {
     "usingComponents": {
        "mytabbar": "/components/mytabbar/mytabbar"
      }
    }
    

    注意mytabbar:即为标签的名字,后面为组件的绝对地址

    使用组件

    在需要引入页面引入上一步声明的标签即可

    <mytabbar barlist="{{barlist}}"></mytabbar>
    

    barlist:为传入数据,{{barlist}}从当前page的data里取值。

    自此就完成了组件的自定义

    需要注意的是:

    1. 自定的组件虽然跟tab页面很像,但不是tab页面,页面件切换如果想达到首页的效果,需要在个跳转的各页面引入组件并设置当前页自定义组件的数据。
    2. 组件有自己的事件定义方式,可以不通过bingtap的方式(参考官方文档)
    3. 组件更多用法参考官方文档

    附:wx.switchTab与wx.navigateTo的区别
    wx.navigateTo不能跳到 tabbar 页面
    wx.switchTab跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

    展开全文
  • Unity3D UGUI下拉菜单/Dropdown每次点击都可用 Unity3D中UGUI实现下拉菜单 Chinar-本文提供全流程,中文翻译。...即可完成一下拉菜单创建 扩展 Dropdown 组件,开启被选择按钮,再次被点击仍然可

    Chinar blog www.chinar.xin

    Unity UGUI 完整系列教程 (Chinar中文图解)

    重写 Dropdown 扩展


    本文提供全流程,中文翻译

    Chinar 的初衷是将一种简单的生活方式带给世人

    使有限时间 具备无限可能

    Chinar —— 心分享、心创新!

    开启下拉菜单/ Dropdown 每次点击都可用

    为初学者节省宝贵的时间,避免采坑!

    Chinar 教程效果:



    全文高清图片,点击即可放大观看 (很多人竟然不知道)


    1

    Description —— 说明


    Unity3D UGUI下拉菜单/Dropdown组件用法、总结

    接上个教程对 Dropdown进行扩展

    Unity UGUI 之后提供了下拉菜单、简单的解决方案使我们可以快速的创建下拉菜单

    但在有些情况下,无法满足需求

    例如:下拉菜单弹出时,首选项是被选中状态

    当我们点击首选项的时候永远不会调用首选项的方法/函数

    同样,当我们选择了某个选项,例如第三项,那么下次我们再次点击第三项,也不会调用方法

    本教程就是专门来解决此类问题,提供解决方案


    2

    Dropdown Extend —— 扩展下拉菜单


    脚本继承自 Dropdown
    Dropdown 的基础上,对其内部函数进行了扩展

    所以使用的时候,只需要创建一个下拉菜单 UI 元素,并移除其上的 Dropdown 组件

    替换为 ChinarDropdown 脚本即可,用法不变
    举个例子

    using UnityEngine;
    using UnityEngine.EventSystems;
    using UnityEngine.UI;
    
    
    /// <summary>
    /// 将下拉菜单上的 Dropdown组件移除,替换为该脚本
    /// </summary>
    public class ChinarDropdown : Dropdown
    {
        public bool AlwaysCallback = false;//是否开启 点击选项按钮总是回调
    
    
        public void Show()
        {
            base.Show();
            Transform toggleRoot = transform.Find("Dropdown List/Viewport/Content");
            Toggle[]  toggleList = toggleRoot.GetComponentsInChildren<Toggle>(false);
            for (int i = 0; i < toggleList.Length; i++)
            {
                Toggle temp = toggleList[i];
                temp.onValueChanged.RemoveAllListeners();
                temp.isOn = false;
                temp.onValueChanged.AddListener(x => OnSelectItemEx(temp));
            }
        }
    
    
        public override void OnPointerClick(PointerEventData eventData)
        {
            Show();
        }
    
    
        public void OnSelectItemEx(Toggle toggle)
        {
            if (!toggle.isOn)
            {
                toggle.isOn = true;
                return;
            }
    
            int       selectedIndex = -1;
            Transform tr            = toggle.transform;
            Transform parent        = tr.parent;
            for (int i = 0; i < parent.childCount; i++)
            {
                if (parent.GetChild(i) == tr)
                {
                    selectedIndex = i - 1;
                    break;
                }
            }
    
            if (selectedIndex < 0)
                return;
            if (value == selectedIndex && AlwaysCallback)
                onValueChanged.Invoke(value);
            else
                value = selectedIndex;
            Hide();
        }
    }
    

    3

    Dropdown Editor —— 编辑器类扩展


    细心的朋友已经注意到:2 中的代码多了一个 AlwaysCallback 的布尔值变量

    Chinar 写了一个编辑器类,在 Inspector 面板中直接控制这个 bool 变量,便于管理维护

    进而控制下拉菜单是否开启函数,总是回调

    如果不开启 / AlwaysCallback 为:false ;反之亦然!

    该脚本放于 Editor 目录下,没有请自己创建一个

    举个例子

    using UnityEditor; //引用编辑器的脚本,需要放在 Editor 目录中
    using UnityEditor.UI;
    
    
    /// <summary>
    /// 此编辑器脚本:用于在层次面板中添加一个可控属性AlwaysCallback
    /// </summary>
    [CustomEditor(typeof(ChinarDropdown), true)]
    [CanEditMultipleObjects]
    public class DropdownExEditor : DropdownEditor
    {
        SerializedProperty AlwaysCallback;
    
    
        protected override void OnEnable()
        {
            base.OnEnable();
            AlwaysCallback = serializedObject.FindProperty("AlwaysCallback");
        }
    
    
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            EditorGUILayout.PropertyField(AlwaysCallback);
            serializedObject.ApplyModifiedProperties();
        }
    }
    

    去掉 Dropdown 组件,改为ChinarDropdown

    这里写图片描述

    Unity UGUI 完整系列教程 (Chinar中文图解)


    支持

    May Be —— 开发者,总有一天要做的事!


    拥有自己的服务器,无需再找攻略

    Chinar 提供一站式《零》基础教程

    使有限时间 具备无限可能!

    先点击领取 —— 阿里全产品优惠券 (享受最低优惠)


    Chinar 免费服务器、建站教程全攻略!( Chinar Blog )


    Chinar

    END

    本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

    对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

    对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

    展开全文
  •  列表是常用的UI控件,mui封装的列表组件比较简单,只需要在ul节点上添加.mui-table-view类、在li节点上添加.mui-table-view-cell类即可,如下为示例代码 Item 1 Item 2 Item 3  点击列表,对应列表项显示灰色...

    1、list(列表)

      列表是常用的UI控件,mui封装的列表组件比较简单,只需要在ul节点上添加.mui-table-view类、在li节点上添加.mui-table-view-cell类即可,如下为示例代码

    <ul class="mui-table-view">
    <li class="mui-table-view-cell">Item 1</li>
    <li class="mui-table-view-cell">Item 2</li>
    <li class="mui-table-view-cell">Item 3</li>
    </ul>

      点击列表,对应列表项显示灰色高亮,若想自定义高亮颜色,只需要重写.mui-table-view-cell.mui-active即可,如下:

    /*点击变蓝色高亮*/

    .mui-table-view-cell .mui-active{

    background-color: #0062CC;

    }

    若右侧需要增加导航箭头,变成导航链接,则只需在li节点下增加a子节点,并为该a节点增加.mui-navigate-right类即可,如下:

    <ul class="mui-table-view">
    <li class="mui-table-view-cell">
    <a class="mui-navigate-right">Item 1</a>
    </li>
    <li class="mui-table-view-cell">
    <a class="mui-navigate-right">Item 2</a>
    </li>
    <li class="mui-table-view-cell">
    <a class="mui-navigate-right">Item 3</a>
    </li>
    </ul>


    mui支持将数字角标、按钮、开关等控件放在列表中;mui默认将数字角标放在列表右侧显示,代码如下:

     

    <ul class="mui-table-view">
    <li class="mui-table-view-cell">Item 1
    <span class="mui-badge mui-badge-primary">11</span>
    </li>
    <li class="mui-table-view-cell">Item 2
    <span class="mui-badge mui-badge-success">22</span>
    </li>
    <li class="mui-table-view-cell">Item 3
    <span class="mui-badge">33</span>
    </li>
    </ul>


    代码块激活字符:    mlist

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <title></title>
        <script src="js/mui.min.js"></script>
        <link href="css/mui.min.css" rel="stylesheet"/>
        <script type="text/javascript" charset="utf-8">
          	mui.init();
        </script>
    </head>
    <body>
    <header class="mui-bar mui-bar-nav">
        <h1 class="mui-title">input(输入表单)</h1>
    </header>
    <div class="mui-content mui-active">
    <ul class="mui-table-view">
            <li class="mui-table-view-cell">
                <a class="mui-navigate-right">
                    Item 1
                </a>
            </li>
            <li class="mui-table-view-cell">
                <a class="mui-navigate-right">
                     Item 2
                </a>
            </li>
            <li class="mui-table-view-cell">
                <a class="mui-navigate-right">
                     Item 3
                </a>
            </li>
    </ul>
    <h4>图文列表靠右</h4>
    <ul class="mui-table-view">
        <li class="mui-table-view-cell mui-media">
            <a href="javascript:;">
                <img class="mui-media-object mui-pull-right" src="img/HBuilder.png">
                <div class="mui-media-body">
                    幸福
                    <p class="mui-ellipsis">能和心爱的人一起睡觉,是件幸福的事情;可是,打呼噜怎么办?</p>
                </div>
            </a>
        </li>
        <li class="mui-table-view-cell mui-media">
            <a href="javascript:;">
                <img class="mui-media-object mui-pull-right" src="img/HBuilder.png">
                <div class="mui-media-body">
                    木屋
                    <p class="mui-ellipsis">想要这样一间小木屋,夏天挫冰吃瓜,冬天围炉取暖.</p>
                </div>
            </a>
        </li>
        <li class="mui-table-view-cell mui-media">
            <a href="javascript:;">
                <img class="mui-media-object mui-pull-right" src="img/HBuilder.png">
                <div class="mui-media-body">
                    CBD
                    <p class="mui-ellipsis">烤炉模式的城,到黄昏,如同打翻的调色盘一般.</p>
                </div>
            </a>
        </li>
    </ul>
    <h4>图文列表靠左</h4>
    <ul class="mui-table-view">
        <li class="mui-table-view-cell mui-media">
            <a href="javascript:;">
                <img class="mui-media-object mui-pull-left" src="img/HBuilder.png">
                <div class="mui-media-body">
                    幸福
                    <p class="mui-ellipsis">能和心爱的人一起睡觉,是件幸福的事情;可是,打呼噜怎么办?</p>
                </div>
            </a>
        </li>
        <li class="mui-table-view-cell mui-media">
            <a href="javascript:;">
                <img class="mui-media-object mui-pull-left" src="img/HBuilder.png">
                <div class="mui-media-body">
                    木屋
                    <p class="mui-ellipsis">想要这样一间小木屋,夏天挫冰吃瓜,冬天围炉取暖.</p>
                </div>
            </a>
        </li>
        <li class="mui-table-view-cell mui-media">
            <a href="javascript:;">
                <img class="mui-media-object mui-pull-left" src="img/HBuilder.png">
                <div class="mui-media-body">
                    CBD
                    <p class="mui-ellipsis">烤炉模式的城,到黄昏,如同打翻的调色盘一般.</p>
                </div>
            </a>
        </li>
    </ul>
    </div>
    </body>
    </html>


     

    2、遮罩蒙版

       在popover、侧滑菜单等界面,经常会用到蒙版遮罩;比如popover弹出后,除popover控件外的其它区域都会遮罩一层蒙版,用户点击蒙版不会触发蒙版下方的逻辑,而会关闭popover同时关闭蒙版;再比如侧滑菜单界面,菜单划出后,除侧滑菜单之外的其它区域都会遮罩一层蒙版,用户点击蒙版会关闭侧滑菜单同时关闭蒙版。

    遮罩蒙版常用的操作包括:创建、显示、关闭,如下代码:

    var mask = mui.createMask(callback);//callback为用户点击蒙版时自动执行的回调;

    mask.show();//显示遮罩

    mask.close();//关闭遮罩

    注意:关闭遮罩仅会关闭,不会销毁;关闭之后可以再次调用mask.show();打开遮罩;

    mui默认的蒙版遮罩使用.mui-backdrop类定义(如下代码),若需自定义遮罩效果,只需覆盖定义.mui-backdrop即可;

    .mui-backdrop {

        position: fixed;

        top: 0;

        right: 0;

        bottom: 0;

        left: 0;

        z-index: 998;

        background-color: rgba(0,0,0,.3);

    }

    代码块激活字符:   mmask

    3、numbox(数字输入框)

       mui提供了数字输入框控件,可直接输入数字,也可以点击“+”、“-”按钮变换当前数值;默认numbox控件dom结构比较简单,如下:

    <div class="mui-numbox">
      <!-- "-"按钮,点击可减小当前数值 -->
      <button class="mui-btn mui-numbox-btn-minus" type="button">-</button>
      <input class="mui-numbox-input" type="number" />
      <!-- "+"按钮,点击可增大当前数值 -->
      <button class="mui-btn mui-numbox-btn-plus" type="button">+</button>
    </div>

    可通过data-*自定义属性设置数字输入框的参数,如下:

    numbox自定义参数

    (1)、data-numbox-min,输入框允许使用的最小值,默认无限制

    (2)、data-numbox-max,输入框允许使用的最大值,默认无限制

    (3)、data-numbox-step,每次点击“+”、“-”按钮变化的步长,默认步长为1

    示例:设置取值范围为0~100,每次变化步长为10,则代码如下

    <div class="mui-numbox" data-numbox-step='10' data-numbox-min='0' data-numbox-max='100'>
      <button class="mui-btn mui-numbox-btn-minus" type="button">-</button>
      <input class="mui-numbox-input" type="number" />
      <button class="mui-btn mui-numbox-btn-plus" type="button">+</button>
    </div>

    代码块激活字符: mnumbox

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <title></title>
        <script src="js/mui.min.js"></script>
        <link href="css/mui.min.css" rel="stylesheet"/>
        <script type="text/javascript" charset="utf-8">
          	mui.init();
        </script>
    </head>
    <body>
    <header class="mui-bar mui-bar-nav">
        <h1 class="mui-title">number box(数字输入框)</h1>
    </header>
    <div class="mui-content mui-active">
    <div class="mui-numbox" data-numbox-step='10' data-numbox-min='10' data-numbox-max='1000'>
        <button class="mui-btn mui-btn-numbox-minus" type="button">-</button>
        <input class="mui-input-numbox" type="number" />
        <button class="mui-btn mui-btn-numbox-plus" type="button">+</button>
    </div>
    </div>
    </body>
    </html>


     

     

    4、offcanvas侧滑导航

       mui提供了两种侧滑导航实现:webview模式和div模式,两种模式各有优劣,适用于不同的场景。

    (1)、webview模式

       主页面和菜单内容在不同的webview中,两个页面根据内容需求分别组织DOM结构,mui对其DOM结构无特殊要求,故其有如下优点:

        a、菜单内容是单独的webview,故可被多个页面复用;

        b、菜单内容在单独的webview中,菜单区域的滚动不影响主界面,故可使用原生滚动,滚动更为流畅;

    另一方面,webview模式也有其缺点:

        a、不支持拖动手势(跟手拖动);

        b、主页面、菜单不同webview实现,因此若需交互(如:点击菜单触发主页面内容变化),需使用自定义事件实现跨webview通讯;

    (2)、div模式

       主页面和菜单内容在同一个webview下,嵌套在特定结构的div中,通过div的移动动画模拟菜单移动;故该模式有如下优点:

        a、支持拖动手势(跟手拖动);

        b、主页面、菜单在一个页面中,可通过JS轻松实现两者交互(如:点击菜单触发主页面内容变化),没有跨webview通讯的烦恼;

       另一方面,div模式也有其缺点:

        a、不支持菜单内容在多页面的复用,需每个页面都生成对应的菜单节点;

        b、主界面和菜单内容的滚动互不影响,因此会使用div区域滚动,在低端Android手机且滚动内容较多时,可能会稍显卡顿;

       div模式支持不同的动画效果,每种动画效果需遵从不同的DOM构造;下面我们以右滑菜单为例(左滑菜单仅需将菜单父节点上的mui-off-canvas-left换成mui-off-canvas-right即可),说明每种动画对应的DOM结构。

    动画1:主界面移动、菜单不动

    <!-- 侧滑导航根容器 -->
    <div class="mui-off-canvas-wrap mui-draggable">
      <!-- 菜单容器 -->
      <aside class="mui-off-canvas-left">
        <div class="mui-scroll-wrapper">
          <div class="mui-scroll">
            <!-- 菜单具体展示内容 -->
            ...
          </div>
        </div>
      </aside>
      <!-- 主页面容器 -->
      <div class="mui-inner-wrap">
        <!-- 主页面标题 -->
        <header class="mui-bar mui-bar-nav">
          <a class="mui-icon mui-action-menu mui-icon-bars mui-pull-left"></a>
          <h1 class="mui-title">标题</h1>
        </header>
        <div class="mui-content mui-scroll-wrapper">
          <div class="mui-scroll">
            <!-- 主界面具体展示内容 -->
            ...
          </div>
        </div>  
      </div>
    </div>


    动画2:主界面不动、菜单移动

        该种动画要求的DOM结构和动画1的DOM结构基本相同,唯一差别就是需在侧滑导航根容器class上增加一个mui-slide-in类

    动画3:主界面、菜单同时移动

        该种动画要求的DOM结构较特殊,需将菜单容器放在主页面容器之下

    <!-- 侧滑导航根容器 -->
    <div class="mui-off-canvas-wrap mui-draggable">
      <!-- 主页面容器 -->
      <div class="mui-inner-wrap">
         <!-- 菜单容器 -->
        <aside class="mui-off-canvas-left">
          <div class="mui-scroll-wrapper">
            <div class="mui-scroll">
              <!-- 菜单具体展示内容 -->
              ...
            </div>
          </div>
        </aside>
        <!-- 主页面标题 -->
        <header class="mui-bar mui-bar-nav">
          <a class="mui-icon mui-action-menu mui-icon-bars mui-pull-left"></a>
          <h1 class="mui-title">标题</h1>
        </header>
        <!-- 主页面内容容器 -->
        <div class="mui-content mui-scroll-wrapper">
          <div class="mui-scroll">
            <!-- 主界面具体展示内容 -->
            ...
          </div>
        </div>  
      </div>
    </div>

    mui支持多种方式显示div模式的侧滑菜单:

     (1)、在主界面向右拖动(drag);

     (2)、点击含有mui-action-menu类的控件;

     (3)、Android手机按menu键;

     (4)、通过JS API触发,如下:

           mui('.mui-off-canvas-wrap').offCanvas('show');

    同样,mui支持多种方式关闭div模式的侧滑菜单:

     (1)、在手机屏幕上任意位置向左拖动(drag);

     (2)点击主界面内任意位置;

     (3)Android手机按menu键;

     (4)Android手机按back键;

     (5)通过JS API触发,如下:

         mui('.mui-off-canvas-wrap').offCanvas('close');

    代码块激活字符:   moffcanvas

     

    5、popover弹出菜单

      mui框架内置了弹出菜单插件,弹出菜单显示内容不限,但必须包裹在一个含.mui-popover类的div中,如下即为一个弹出菜单内容:

    <div id="popover" class="mui-popover">
      <ul class="mui-table-view">
        <li class="mui-table-view-cell"><a href="#">Item1</a></li>
        <li class="mui-table-view-cell"><a href="#">Item2</a></li>
        <li class="mui-table-view-cell"><a href="#">Item3</a></li>
        <li class="mui-table-view-cell"><a href="#">Item4</a></li>
        <li class="mui-table-view-cell"><a href="#">Item5</a></li>
      </ul>
    </div>

      要显示、隐藏如上菜单,mui推荐使用锚点方式,例如:

    <a href="#popover" id="openPopover" class="mui-btn mui-btn-primary mui-btn-block">打开弹出菜单</a>

      点击如上定义的按钮,即可显示弹出菜单,再次点击弹出菜单之外的其他区域,均可关闭弹出菜单;这种使用方式最为简洁。

    若希望通过js的方式控制弹出菜单,则通过如下一个方法即可:

    mui('.bottomPopover').popover(status,[anchor]);

      status:'show'显示popover,'hide'隐藏popover、'toggle'自动识别处理显示隐藏状态

      [anchor]:anchorElement锚点元素

    mui('.bottomPopover').popover('toggle');//show hide toggle

    //传入toggle参数,用户也无需关心当前是显示还是隐藏状态,mui会自动识别处理;

    mui('.mui-popover').popover('toggle',document.getElementById("openPopover"));

    代码块激活字符: mpopover

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <title></title>
        <script src="js/mui.min.js"></script>
        <link href="css/mui.min.css" rel="stylesheet"/>
        <script type="text/javascript" charset="utf-8">
          	mui.init();
        </script>
    </head>
    <body>
    <header class="mui-bar mui-bar-nav">
        <h1 class="mui-title">popover(弹出菜单)</h1>
    </header>
    <div class="mui-content mui-active">
     <style type="text/css">
     #popover{
     	height: 100px;
     	width:200px;
     }
     </style>
    <div id="popover" class="mui-popover">
                <ul class="mui-table-view">
                   <li class="mui-table-view-cell"><a href="#">Item1</a></li>
                   <li class="mui-table-view-cell"><a href="#">Item2</a></li>
                   <li class="mui-table-view-cell"><a href="#">Item3</a></li>
                   <li class="mui-table-view-cell"><a href="#">Item4</a></li>
                   <li class="mui-table-view-cell"><a href="#">Item5</a></li>
                </ul>
            </div>
    <a href="#popover" id="openPopover" class="mui-btn mui-btn-primary mui-btn-block">打开弹出菜单</a>
    </div>
    </body>
    </html>


     

    展开全文
  • 创建和添加下拉式菜单,分为以下三个步骤 1.创建一个JMenuBar菜单栏对象,将其放置在JFrame窗口的顶部 2.创建JMenu菜单对象,将其添加到JMenuBar菜单中 3.创建JMenuItem菜单项,将其添加到JMenu菜单中 package ...
  • 菜单组件JMenuBar、JMenu、JMenuItem略解

    千次阅读 2018-12-03 16:38:12
    菜单组件JMenuBar、JMenu、...JMenuBar负责创建菜单条,即JMenuBar的一实例就是一菜单条。 JMenuBar bar = new JMenuBar(); //创建菜单条 将菜单条添加到窗口中的方法: public void setJMenuBar(JMenuBa...
  • C#程序设计及宿舍管理系统实战 ... MDI应用程序介绍 在VC#中,MDI应用程序由两部分组成,即MDI父窗体和MDI子窗体。...一MDI应用程序可以包含一或多MDI父窗体,每MDI父窗体又可以包...
  • 微信第方平台的作用在我看来,就是做类似于微盟这种微信公众号管理平台的微信官方接口。 注册网址:https://open.weixin.qq.com,认证审核需要300大洋 注册完账号之后,点击“公众号第方平台”,然后选择...
  • 创建Flash CS3组件(一) 建立组件

    千次阅读 2012-09-26 02:00:15
    创建Flash CS3组件(一) 建立组件 在Flash CS3中,出现了一个全新的组件形式--fla组件,它完全改变了以前...所以,有必要重新看看该如何创建个组件.注意,这里主要讲如何创建fla格式的组件,而不是swc格式的. 1.组件
  • 分享一下我目前所在公司 iOS 项目中用到的一些 iOS 开源库和第组件, 感谢开源, 减少了我们的劳动力, 节约了我们大量的时间, 让我们有更多的时间和精力能更加专注的做好自己的产品 欢迎大家关注我的 GitHub或...
  •  Android开发过程中,会涉及到将公用功能封装成组件,这样供后续应用开发使用,下面将介绍如何在Eclipse中打包组件并在其他应用中使用.  (如果你是从事是java开发,那就飘过,如果以前是dot net 开发 那就留下来看一会...
  • 自定义组件我把它分为简单的三个步骤, 1.创建组件 --- 2.编写组件 --- 3.调用,使用组件. 第一步:创建组件 创建一个modal文件夹,里面包含 josn.wxml.wcss.js 四个文件,然后在josn里面添加"component":true (作用是...
  • iOS经常用到的开源库和第组件

    千次阅读 2016-12-12 21:09:11
    1、通过CocoaPods安装 项目名称 ...网络请求组件 ...多缩略图缓存组件 UICKeyChainStore 存放用户账号密码组件 Reachability 监测网络状态 DateTools 友好化时间 MBP
  • 在Vue.js中一递归组件调用的是其本身,如: Vue.component('recursive-component', { template: `&lt;!--Invoking myself!--&gt; &lt;recursive-component&gt;&lt;/recursive-...
  • 用ATL创建COM组件详细解说

    万次阅读 2012-08-01 15:22:56
    二、给模型(工程)增加一个组件 MyCom。 、给组件增加方法(函数) MyF1、MyF2、MyF3、MyF4。 一、创建模型(工程) MyProj 在VC++6.0工作平台中,点击菜单 File 下的 New 菜单项,在出现的 New 对话框中...
  • Tkinter 组件详解(十):Menu

    万次阅读 多人点赞 2018-12-27 10:37:59
    Menu(菜单组件用于实现顶级菜单、下拉菜单和弹出菜单。...创建顶级菜单,你需要创建个菜单实例,然后使用 add() 方法将命令和其它子菜单添加进去: import tkinter as tk root = tk.T...
  •  今天这篇博客将记录一些关于DrawerLayout的基本用法,我想关于DrawerLayout的用法也许有不少不够了解,这也是比较正常的事情,因为DrawerLayout作为Android组件是Google后来在android中添加的,在a
  • VC6创建COM组件,Qt调用例子

    千次阅读 2017-06-11 16:00:24
    一、建立 ATL 工程  步骤2.1:建立一工作区(WorkSpace)。  步骤2.2:在工作区中,建立一 ATL 工程(Project)。... Dynamic Link Library(DLL) 表示建立一 DLL 的组件程序。  Executable(EXE)
  • 使用VB创建ASP服务器端组件

    千次阅读 2004-07-30 13:50:00
    使用VB创建ASP服务器端组件 本篇文章通过与传统的设计方法相比较,介绍了如何在ASP代码中调用VB组件的方法。在本篇文章中,我们假设读者具有VB和ASP的相关入门知识。 服务器端组件和客户端组件的比较 服务器端组件和...
  • 今天给大家带来React项目结合Antd的时候如何渲染二级菜单 ...其中有一isSiderbar标记,这就是我们待会用来判断是否是sidebar的类型。 3.接下来我们写二级菜单的数据 其中有isresourceManagem...
  • vue-ts-files是一vscode下的快速建立vue typescript组件的一款插件,通过vue-ts-files你能通过右击文件目录,创建你想要的组件。免去创建文件后不必要的snippets
  • 本系列文章由zhmxy555(毛星云)编写...毛星云 邮箱: happylifemxy@163.com  这节笔记主要讨论DirectX 11现有的组件构成,随着DirectX各个版本的更新被时代抛弃的一些组件以及第一围绕着DirectX 11 的Demo创建全过
  • Vue.js递归组件实现动态树形菜单

    千次阅读 2018-06-13 15:22:00
    只有两感觉,官网的案例太简洁,没有什么注释,看起来不太好理解,大神们的作品又比较复杂,对于初学者来说理解起来还是有难度,自己捣鼓了几天,勉强理解了递归组件菜单的实现,这里结合官网的案例,把代码和注释附上. ...
  • treeTable是跨浏览器、性能很高的jquery的树表组件,它使用非常简单,只需要引用jquery库和一js文件,接口也很简单。 优点兼容主流浏览器: 支持IE6和IE6+, Firefox, chrome, Opera, Safari 接口简洁: 在普通表格...
  • TextArea右键菜单 组件使用案例

    千次阅读 2020-03-22 15:27:59
    文章目录一:下拉式菜单创建步骤:二:弹出式菜单创建步骤::选项卡窗体: 菜单是GUI中最常用的组件,菜单不是Component类的子类,不能放置在普通容器中,不受布局管理器的约束,只能放置在菜单栏中. 菜单组件菜单栏 ...
  • Ext_菜单组件_Ext.menu.Menu

    千次阅读 2016-09-18 15:29:33
    连接地址:http://blog.csdn.net/lulu_jiang/article/details/5473035... 菜单组件常用配置: [javascript] view plain copy /*  Ext.menu.Menu主要配置项表:  items Mixed 有效
  • Vue中动态创建element-ui组件的实现

    千次阅读 2020-03-31 17:10:17
    在项目中想要通过获取到的数据,然后动态创建element-ui的导航栏,如何实现呢,下面是本人实现后的过程。 梳理代码逻辑 循环我们所获取到的数据,并且判断该数据是否有子数据,如果有子数据,则输出下拉样式;如果...
  • Java_Swing()——Swing常用组件

    千次阅读 2019-08-06 20:29:03
    JLabel类是用来创建标签的组件,标签的功能是只显示文本,不能动态地编辑文本。JLabel类的常用方法: 2、JTextField文本框 文本框与文本区主要是用来提供输入和输出文本功能的组件。JTextField类主要有下列方法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,044
精华内容 35,217
关键字:

创建菜单需要三个组件