精华内容
参与话题
问答
  • 原因 代码中使用scoped之后,保证各文件中的css不相互影响,给每个component都做了唯一的标记 解决方案如下 <style lang="less" scoped> //css用 //.el-table >>> .warning-row ...

    原因

    代码中使用scoped之后,保证各文件中的css不相互影响,给每个component都做了唯一的标记
    解决方案如下

    <style lang="less" scoped>
    //css用 
    //.el-table >>> .warning-row
    //less sass scss用
    .el-table {
      /deep/ .warning-row {
        background: oldlace;
      }
      /deep/ .success-row {
        background: #f0f9eb;
      }
    }
    </style>
    

    如果/deep/报错可以用如下方法

    <style scoped  lang="scss">
    .el-table {
      ::v-deep {
        .warning-row {
          background: oldlace;
        }
        .success-row {
          background: #f0f9eb;
        }
      }
    }
    .editable-add-btn {
      margin-left: 0px;
    }
    </style>
    
    展开全文
  • android 漂亮的UI界面 完整的界面设计

    万次下载 热门讨论 2012-02-17 22:19:40
    声明:这也是我学习时在网上下载的,鉴于分享精神,并且觉得很不错才上传...android 漂亮的UI界面 完整的界面设计 这是一个完整的UI设计,但是没写动作,这是一个公司程序员的公司任务设计,请别商用,要用请修改。。。
  • 非常漂亮后台UI 纯静态UI界面

    千次下载 热门讨论 2013-06-03 20:18:42
    效果图:首页主界面真心觉得非常吸引人,给客户,用户体验非常舒服, 相信很多朋友一看就明白怎么回事,我要的就是这个效果,因为简单所以编程快乐!~~
  • MFC DirectUI

    千次下载 热门讨论 2012-11-17 23:49:37
    DirectUI:包含一些常用控件 button, checkbox, groupbox, label, progress, radiobox, slider等,可以通过XML来解析控件,此DUI没有实现布局,我自己是通过窗口来布局的。 一个TEST工程和一个gamelobby.exe(无源码,...
  • Swagger-UI的使用

    万次阅读 2020-06-06 00:40:03
    第一步、引入依赖 <!-- springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId>...-- springfox-swagger

    第一步、引入依赖

    <!-- springfox-swagger2 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    <!-- springfox-swagger-ui -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    

    第二步、在需要使用RestFul风格的@Controller标注的类上加入@EnableSwagger2注解

    示例:

    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @RestController
    @EnableSwagger2
    public class UserController {
        
        @GetMapping("/hello")
        public String hello(){
            return "Hello Swagger-ui";
        }
    }
    

    第三步访问Swagger-ui文档界面

    输入服务器ip+端口+/swagger-ui.html即可访问到swagger-ui的文档界面
    例如: localhost:8080/swagger-ui.html
    会访问到如下界面
    在这里插入图片描述
    在该界面可以直接测试RestFul风格的接口
    在这里插入图片描述
    点击Try it out即可尝试,如果有参数可以输入
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 基于Unity~UGUI的简单UI框架(附UIFramework源码)

    万次阅读 多人点赞 2018-05-19 18:21:18
    框架源码地址: UIFramework litjson.dll下载地址: litjson UI框架总揽: 创建测试面板(非框架部分) 将面板以Prefab形式放入Resources文件夹下面,便于框架加载面板 创建json文件和...

    此博客跟随siki老师的课程笔记生成,感谢siki老师的辛勤付出!
    此框架功能较简单,适用于学习,可以很好的锻炼我们的设计思想
    框架源码地址: UIFramework
    litjson.dll下载地址: litjson


    不使用UI框架存在的一些问题


    1.随着游戏系统的复杂,UI控件越来越多,各个UI直接的通讯,以及UI与GameObject之间的通讯形成一张复杂的蜘蛛网,
    拖着拖着,有时候我都忘了哪个对象跟哪个对象关联了。如果是别人要看我的程序,我估计他找半天都找不到UI逻辑的入口。
    2.耦合性非常严重,如果要改变需求,更改某个UI或者更改某个游戏对象,那么你需要再手动全部与该对象关联的物件重新更改一次。
    3.作为强迫症的程序员,最受不了程序代码的混乱。这种组织方式十分“不优雅”,看着很乱。
    鉴于以上各种情况,我们需要寻找一种新的,科学的,高效的UI管理方式


    UI框架总揽:


    这里写图片描述


    创建测试面板(非框架部分)


    将面板以Prefab形式放入Resources文件夹下面,便于框架加载面板
    UIPanel


    创建json文件和UIPanelType类来保存所有的面板信息


    UIPanelType.json:

    {
    	"panelInfoList":
    	[
    		{"panelType":"MainMenu","path":"UIPanel/MainMenuPanel"},
    		{"panelType":"ItemMessage","path":"UIPanel/ItemMessagePanel"},
    		{"panelType":"Knapsack","path":"UIPanel/KnapsackPanel"},
    		{"panelType":"Shop","path":"UIPanel/ShopPanel"},
    		{"panelType":"Skill","path":"UIPanel/SkillPanel"},
    		{"panelType":"System","path":"UIPanel/SystemPanel"},
    		{"panelType":"Task","path":"UIPanel/TaskPanel"}
    	]
    }
    

    UIPanelType.cs:

    public class UIPanelType {
        public const string MainMenu = "MainMenu";
        public const string Knapsack = "Knapsack";
        public const string ItemMessage = "ItemMessage";
        public const string Shop = "Shop";
        public const string Skill = "Skill";
        public const string System = "System";
        public const string Task = "Task";
    }
    
    

    开发UIManger来解析面板信息json文件(框架核心:UIManager)


    UIManager为框架的核心,全局只有一个UIManager,因此UIManager要使用单例模式
    现阶段的完整的UIManager.cs(后续还会继续完善):

    using System.Collections.Generic;
    using System.Collections;
    using System;
    using UnityEngine;
    using LitJson;
    public class UIPanelManager
    {
        private static UIPanelManager _instance;
    
        public static UIPanelManager Instance
        {
            get
            {
                if (_instance == null)
                {
                    _instance = new UIPanelManager();
                }
                return _instance;
            }
        }
    
        private Dictionary<string, string> panelPathDict;
        //private Dictionary<UIPanelType,>
        //private Stack<>
    
        private UIPanelManager()
        {
            ParseUIPanelTypeJson();
        }
    
        private void ParseUIPanelTypeJson()
        {
            panelPathDict = new Dictionary<string, string>();
            TextAsset textUIPanelType = Resources.Load<TextAsset>("UIPanelTypeJson");
            UIPanelInfoList panelInfoList = JsonMapper.ToObject<UIPanelInfoList>(textUIPanelType.text);
    
            foreach (UIPanelInfo panelInfo in panelInfoList.panelInfoList)
            {
                panelPathDict.Add(panelInfo.panelType, panelInfo.path);
                Debug.Log(panelInfo.panelType + ":" + panelInfo.path);
            }
        }
    }
    

    开发BasePanel抽象类(各个UIPanel的基类)


    BasePanel给每个Panel定义了四个事件:
    OnEnter:面板进入时调用
    OnPause:面板停止时调用(鼠标与面板的交互停止)
    OnResume:面板恢复使用时调用(鼠标与面板的交互恢复)
    OnExit:面板退出时调用

    using UnityEngine;
    
    public abstract class BasePanel : MonoBehaviour
    {
        public abstract void OnEnter();
    
        public abstract void OnPause();
    
        public abstract void OnResume();
    
        public abstract void OnExit();
    
    }
    

    给各个面板添加UIPanel类(非框架部分)
    这里写图片描述

    using UnityEngine;
    
    public class MainMenuPanel : BasePanel
    {
    
        public override void OnEnter()
        {
        }
    
        public override void OnPause()
        {
        }
    
        public override void OnResume()
        {
        }
    
        public override void OnExit()
        {
        }
    }
    
    

    对UI面板Prefab实例化的创建与管理


    获取Panel(如果panel没有被实例化,进行实例化,并且存储到已经实例化好的panel字典中)

    private BasePanel GetPanel(string panelType)
        {
            BasePanel panel = panelDict.GetValue(panelType);
    
            //如果没有实例化面板,寻找路径进行实例化,并且存储到已经实例化好的字典面板中
            if (panel == null)
            {
                string path = panelPathDict.GetValue(panelType);
                Transform panelTransform = GameObject.Instantiate(Resources.Load<GameObject>(path), canvasTransform).transform;
                panel = panelTransform.GetComponent<BasePanel>();
                panelDict.Add(panelType, panel);
            }
            return panel;
        }
    

    字典的扩展:

    using System.Collections.Generic;
    
    public static class DictTool
    {
        public static Tvalue GetValue<Tkey, Tvalue>(this Dictionary<Tkey, Tvalue> dict, Tkey key)
        {
            Tvalue value = default(Tvalue);
            dict.TryGetValue(key, out value);
            return value;
        }
    }
    
    

    现阶段的完整的UIManager.cs(后续还会继续完善):

    using System.Collections.Generic;
    using System.Collections;
    using System;
    using UnityEngine;
    using LitJson;
    public class UIPanelManager
    {
        private static UIPanelManager _instance;
        private Transform canvasTransform;
        private Transform CanvasTransform
        {
            get
            {
                if (canvasTransform == null)
                {
                    canvasTransform = GameObject.Find("Canvas").transform;
                }
                return canvasTransform;
            }
        }
        public static UIPanelManager Instance
        {
            get
            {
                if (_instance == null)
                {
                    _instance = new UIPanelManager();
                }
    
    
                return _instance;
            }
        }
    
        private Dictionary<string, string> panelPathDict;
        private Dictionary<string, BasePanel> panelDict;
        //private Stack<>
    
        private UIPanelManager()
        {
            ParseUIPanelTypeJson();
        }
    
        private BasePanel GetPanel(string panelType)
        {
    
            if (panelDict == null)
            {
                panelDict = new Dictionary<string, BasePanel>();
            }
    
            BasePanel panel = panelDict.GetValue(panelType);
    
            //如果没有实例化面板,寻找路径进行实例化,并且存储到已经实例化好的字典面板中
            if (panel == null)
            {
                string path = panelPathDict.GetValue(panelType);
                GameObject panelGo = GameObject.Instantiate(Resources.Load<GameObject>(path), CanvasTransform, false);
                panel = panelGo.GetComponent<BasePanel>();
                panelDict.Add(panelType, panel);
            }
            return panel;
        }
    
        //解析json文件
        private void ParseUIPanelTypeJson()
        {
            panelPathDict = new Dictionary<string, string>();
            TextAsset textUIPanelType = Resources.Load<TextAsset>("UIPanelTypeJson");
            UIPanelInfoList panelInfoList = JsonMapper.ToObject<UIPanelInfoList>(textUIPanelType.text);
    
            foreach (UIPanelInfo panelInfo in panelInfoList.panelInfoList)
            {
                panelPathDict.Add(panelInfo.panelType, panelInfo.path);
                //Debug.Log(panelInfo.panelType + ":" + panelInfo.path);
            }
        }
    }
    
    

    开发界面存储栈,并进行出栈和入栈操作


    【设计理念】
    1.鼠标只允许和一个界面进行交互,当一个界面显示后,上一个界面要停止和鼠标的交互
    2.界面显示,进行入栈操作(Push,OnEnter),停止上一个界面(OnPause)
    3.界面隐藏,进行出栈操作(Pop,OnExit),恢复上一个界面(OnResume)

     private Stack<BasePanel> panelStack;
        public void PushPanel(string panelType)
        {
            if (panelStack == null)
            {
                panelStack = new Stack<BasePanel>();
            }
    
            //停止上一个界面
            if (panelStack.Count > 0)
            {
                BasePanel topPanel = panelStack.Peek();
                topPanel.OnPause();
            }
    
            BasePanel panel = GetPanel(panelType);
            panelStack.Push(panel);
            panel.OnEnter();
        }
    
        public void PopPanel()
        {
            if (panelStack == null)
            {
                panelStack = new Stack<BasePanel>();
            }
            if (panelStack.Count <= 0)
            {
                return;
            }
    
            //退出栈顶面板
            BasePanel topPanel = panelStack.Pop();
            topPanel.OnExit();
    
            //恢复上一个面板
            if (panelStack.Count > 0)
            {
                BasePanel panel = panelStack.Peek();
                panel.OnResume();
            }
    
        }
    

    控制Panel之间的跳转(非框架部分)


    完善面板中的一些操作,实现面板之间的跳转,此部分不是框架部分,省略!
    MainMenuPanel.cs:

    using UnityEngine;
    using UnityEngine.UI;
    
    public class MainMenuPanel : BasePanel
    {
        private Button TaskButton;
        private Button KnapsackButton;
        private Button SkillButton;
        private Button ShopButton;
        private Button SystemButton;
        private CanvasGroup canvasGroup;
        void Awake()
        {
            TaskButton = transform.Find("IconPanel/TaskButton").GetComponent<Button>();
            KnapsackButton = transform.Find("IconPanel/KnapsackButton").GetComponent<Button>();
            SkillButton = transform.Find("IconPanel/SkillButton").GetComponent<Button>();
            ShopButton = transform.Find("IconPanel/ShopButton").GetComponent<Button>();
            SystemButton = transform.Find("IconPanel/SystemButton").GetComponent<Button>();
            canvasGroup = transform.GetComponent<CanvasGroup>();
    
            TaskButton.onClick.AddListener(OnTaskButtonClick);
            KnapsackButton.onClick.AddListener(OnKnapsackButtonClick);
            SkillButton.onClick.AddListener(OnSkillButtonClick);
            ShopButton.onClick.AddListener(OnShopButtonClick);
            SystemButton.onClick.AddListener(OnSystemButtonClick);
        }
    
        void OnDestory()
        {
            TaskButton.onClick.RemoveListener(OnTaskButtonClick);
            KnapsackButton.onClick.RemoveListener(OnKnapsackButtonClick);
            SkillButton.onClick.RemoveListener(OnSkillButtonClick);
            ShopButton.onClick.RemoveListener(OnShopButtonClick);
            SystemButton.onClick.RemoveListener(OnSystemButtonClick);
        }
        public override void OnEnter()
        {
        }
    
        public override void OnPause()
        {
            canvasGroup.blocksRaycasts = false;
        }
    
        public override void OnResume()
        {
            canvasGroup.blocksRaycasts = true;
        }
    
        public override void OnExit()
        {
        }
    
        private void OnTaskButtonClick()
        {
            UIPanelManager.Instance.PushPanel(UIPanelType.Task);
        }
        private void OnKnapsackButtonClick()
        {
            UIPanelManager.Instance.PushPanel(UIPanelType.Knapsack);
        }
        private void OnSkillButtonClick()
        {
            UIPanelManager.Instance.PushPanel(UIPanelType.Skill);
        }
        private void OnShopButtonClick()
        {
            UIPanelManager.Instance.PushPanel(UIPanelType.Shop);
        }
        private void OnSystemButtonClick()
        {
            UIPanelManager.Instance.PushPanel(UIPanelType.System);
        }
    }
    
    

    UI框架(完结)


    UI框架
    【BasePanel(基类):所有面板继承自BasePanel】
    定义了四个事件:
    OnEnter:面板进入时调用
    OnPause:面板停止时调用(鼠标与面板的交互停止)
    OnResume:面板恢复使用时调用(鼠标与面板的交互恢复)
    OnExit:面板退出时调用

    using UnityEngine;
    
    public abstract class BasePanel : MonoBehaviour
    {
        public abstract void OnEnter();
        public abstract void OnPause();
        public abstract void OnResume();
        public abstract void OnExit();
    
    }
    
    

    【GameRoot】
    实例化游戏中的主面板

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using System;
    
    public class GameRoot : MonoBehaviour {
    	void Start () {
            UIPanelManager panelManager = UIPanelManager.Instance;
            panelManager.PushPanel(UIPanelType.MainMenu);
    	}
    }
    
    

    【UIPanelManager(框架的核心,单例)】
    进行解析面板信息json文件,实例化面板Prefab,面板的入栈和出栈等等一系列操作

    using System.Collections.Generic;
    using System.Collections;
    using System;
    using UnityEngine;
    using LitJson;
    public class UIPanelManager
    {
        private static UIPanelManager _instance;
        private Transform canvasTransform;
        private Transform CanvasTransform
        {
            get
            {
                if (canvasTransform == null)
                {
                    canvasTransform = GameObject.Find("Canvas").transform;
                }
                return canvasTransform;
            }
        }
        public static UIPanelManager Instance
        {
            get
            {
                if (_instance == null)
                {
                    _instance = new UIPanelManager();
                }
    
    
                return _instance;
            }
        }
    
        private Dictionary<string, string> panelPathDict;
        private Dictionary<string, BasePanel> panelDict;
        private Stack<BasePanel> panelStack;
    
        private UIPanelManager()
        {
            ParseUIPanelTypeJson();
        }
    
        public void PushPanel(string panelType)
        {
            if (panelStack == null)
            {
                panelStack = new Stack<BasePanel>();
            }
    
            //停止上一个界面
            if (panelStack.Count > 0)
            {
                BasePanel topPanel = panelStack.Peek();
                topPanel.OnPause();
            }
    
            BasePanel panel = GetPanel(panelType);
            panelStack.Push(panel);
            panel.OnEnter();
        }
    
        public void PopPanel()
        {
            if (panelStack == null)
            {
                panelStack = new Stack<BasePanel>();
            }
            if (panelStack.Count <= 0)
            {
                return;
            }
    
            //退出栈顶面板
            BasePanel topPanel = panelStack.Pop();
            topPanel.OnExit();
    
            //恢复上一个面板
            if (panelStack.Count > 0)
            {
                BasePanel panel = panelStack.Peek();
                panel.OnResume();
            }
    
        }
    
        private BasePanel GetPanel(string panelType)
        {
    
            if (panelDict == null)
            {
                panelDict = new Dictionary<string, BasePanel>();
            }
    
            BasePanel panel = panelDict.GetValue(panelType);
    
            //如果没有实例化面板,寻找路径进行实例化,并且存储到已经实例化好的字典面板中
            if (panel == null)
            {
                string path = panelPathDict.GetValue(panelType);
                GameObject panelGo = GameObject.Instantiate(Resources.Load<GameObject>(path), CanvasTransform, false);
                panel = panelGo.GetComponent<BasePanel>();
                panelDict.Add(panelType, panel);
            }
            return panel;
        }
    
        //解析json文件
        private void ParseUIPanelTypeJson()
        {
            panelPathDict = new Dictionary<string, string>();
            TextAsset textUIPanelType = Resources.Load<TextAsset>("UIPanelTypeJson");
            UIPanelInfoList panelInfoList = JsonMapper.ToObject<UIPanelInfoList>(textUIPanelType.text);
    
            foreach (UIPanelInfo panelInfo in panelInfoList.panelInfoList)
            {
                panelPathDict.Add(panelInfo.panelType, panelInfo.path);
                //Debug.Log(panelInfo.panelType + ":" + panelInfo.path);
            }
        }
    }
    
    

    【litjson】
    json文件解析的工具

    【UIPanelTypeJson(保存面板信息的json文件)】
    1.此文件需要加载,保存到Resources文件下
    2.保存了面板的类型(相当于名称)和面板Prefab的路径(实例化面板时要用到)
    3.每添加一个面板,都要在此文件添加该面板对应的信息

    {
    	"panelInfoList":
    	[
    		{"panelType":"MainMenu","path":"UIPanel/MainMenuPanel"},
    		{"panelType":"ItemMessage","path":"UIPanel/ItemMessagePanel"},
    		{"panelType":"Knapsack","path":"UIPanel/KnapsackPanel"},
    		{"panelType":"Shop","path":"UIPanel/ShopPanel"},
    		{"panelType":"Skill","path":"UIPanel/SkillPanel"},
    		{"panelType":"System","path":"UIPanel/SystemPanel"},
    		{"panelType":"Task","path":"UIPanel/TaskPanel"}
    	]
    }
    

    【DictTool】
    Dictionnary的拓展工具类

    using System.Collections.Generic;
    
    public static class DictTool
    {
        public static Tvalue GetValue<Tkey, Tvalue>(this Dictionary<Tkey, Tvalue> dict, Tkey key)
        {
            Tvalue value = default(Tvalue);
            dict.TryGetValue(key, out value);
            return value;
        }
    }
    
    

    【UIPanelInfo(面板的信息类)】
    包括面板的名称和面板Prefab的路径
    用于和json文件进行映射

    using System;
    [Serializable]
    public class UIPanelInfo
    {
        public string panelType;
        public string path;
    
        public UIPanelInfo()
        {
    
        }
    }
    
    

    【UIPanelInfoList(面板信息集合类)】
    用于和json文件进行映射

    using System;
    using System.Collections.Generic;
    
    [Serializable]
    public class UIPanelInfoList
    {
        public List<UIPanelInfo> panelInfoList;
    
        public UIPanelInfoList() { }
    }
    
    

    【UIPanelType(面板的类型)】
    用来记录面板的类型(名称)
    每添加一个面板都要在此类里面添加对应面板的类型

    public class UIPanelType {
        public const string MainMenu = "MainMenu";
        public const string Knapsack = "Knapsack";
        public const string ItemMessage = "ItemMessage";
        public const string Shop = "Shop";
        public const string Skill = "Skill";
        public const string System = "System";
        public const string Task = "Task";
    }
    
    

    (完)

    展开全文
  • IDEA插件之颜值篇Material Theme UI

    万次阅读 多人点赞 2019-01-10 13:26:46
    今天推荐一个IDEA颜值类插件:Material Theme UI 大致效果 安装方式 IDEA插件官网地址:https://plugins.jetbrains.com/plugin/8006-material-theme-ui GITHUB地址:https://github.com/C...

    俗话说,工欲善其事必先利其器。

    工具的颜值也很重要,好的主题让人赏心悦目,有码代码的欲望。

    今天推荐一个IDEA颜值类插件:Material Theme UI

    大致效果

    laptop-full.png (2388Ã1320)

    screenshot_17526.png (2880Ã1759)

    安装方式

    IDEA插件官网地址:https://plugins.jetbrains.com/plugin/8006-material-theme-ui

    GITHUB地址:https://github.com/ChrisRM/material-theme-jetbrains

     

    我认为最便捷的安装方式应该是从IDEA设置--->插件选项中在线搜索:

    最新版本的截图如下,前面的版本可能需要选择"browser repositories"按钮进行搜索。

    安装后 重启IDEA,重启后设置自己喜欢的首选主题。

     

    这里我选择第一项,Oceanic

    然后选择对比模式

     

    然后选择增强的颜色默认是红色,我设置的是800080(紫色)。

    然后就是一些杂项,可以默认即可,然后完成后就可以体验了。

     

    后面还可以进行调整

     

     

    可以在这里调整字体、大小、行间距等:

     

    超赞插件推荐:https://blog.csdn.net/w605283073/article/details/103266294

    超实用IDEA 插件推荐:https://blog.csdn.net/w605283073/article/details/89163627

    如果觉得本文对你有帮助,欢迎点赞评论,欢迎关注我,我将努力创作更多更好的文章。

     

    展开全文
  • UI : 2020年iOS/Android UI设计规范(1)

    万次阅读 多人点赞 2018-03-27 16:50:43
    1.设计稿与切片稿 a.尺寸 设计稿:iPhone6 750*1334 【2倍】 切图稿:iPhone6 2208*1242【3倍】 Android 1920*1080 设计稿选择750*1334 px的原因: IOS:向上和向下适配的时候界面调整的幅度最小,最方便...
  • Handler: 更新UI的方法

    万次阅读 多人点赞 2019-07-23 15:35:02
    总是感觉 android 中 UI 更新很让人纠结!自己小结一下,算是抛砖引玉。 读这篇文章之前,假设你已经明白线程、Handler 的使用。 在文章的最后,附录一张草图,主要用于说明 Handler、Message、MessageQueue、...
  • 前端常用的UI插件

    千次阅读 2017-10-06 20:38:31
    前端用到的UI插件
  • 如何做一名优秀的UI设计

    千次阅读 2007-01-03 21:05:00
    最好的位置留给你 说起产品UI设计通常的认识就是“图形界面的设计”而产品的交互设计往往被忽略!一个好的交互设计对产品的成功起着很关键的作用。UI所做的就是用户最先接触到的东西,也是一般性的用户唯一接触到的...
  • 浅谈前端八大UI

    万次阅读 多人点赞 2020-05-25 20:05:54
    如果 - 你不知道如何为你的项目设计 UI 如果 - 你不知道如何为你的项目选择UI库 如果 - 你对于前端UI库的散乱感到无所适从 如果 - 你希望在前端长期发展,并且目前处于初级的瓶颈 那么这篇博客应该都可以帮助到你。...
  • element-ui 本地化使用教程

    万次阅读 2019-10-26 10:22:58
    element-ui 本地化使用 element-ui 下载脚本
  • 深究AngularJS——ui-router详解

    万次阅读 多人点赞 2016-07-26 13:45:14
    1.配置使用ui-router1.导入js文件需要注意的是:必须导入angular.min.js这个文件,且angular.min.js必须导入在angular-ui-router.min.js前面。<script type="text/javascript" src="JS/angular.min.js"></script> ...
  • Android UI性能优化 检测应用中的UI卡顿

    万次阅读 多人点赞 2017-03-01 08:28:39
    本文已在我的公众号hongyangAndroid首发。...在做app性能优化的时候,大家都希望能够写出丝滑的UI界面,以前写过一篇博客,主要是基于Google当时发布的性能优化典范,主要提供一些UI优化性能示例:
  • UI管理系统:提供UI操作UI层级、UI消息、UI资源加载、UI调度、UI缓存等管理 – 注意: – 1、Window包括:Model、Ctrl、View、和Active状态等构成的一个整体概念 – 2、所有带Window接口的都是操作整个窗口,如...
  • Direct UI

    万次阅读 2011-11-30 16:31:20
    在界面开发中,目前DirectUI是个热门的技术名称,因为众多的知名公司都是用DirectUI方式作出了很炫丽的界面。而对于大多数熟悉Win32控件,熟悉MFC开发的开发人员来说,我们应该做何选择? 因为传统的Win32/ MFC...
  • UI-Router详解

    万次阅读 2017-02-04 11:16:16
    我们了解 angular.js 是一种富客户端单页面应用,所以要在一个页面呈现不同的视图,路由起到了至关...ui-router ,它是一种靠状态 state 来驱动视图.后者有什么优势:一个页面可以嵌套多个视图,多个视图去控制某一个视图
  • UI设计师必备的五款界面设计工具

    万次阅读 2018-08-07 19:29:17
    在前几篇文章中,我们分享了一些最受欢迎的...同时也给那些想转行做UI设计师的朋友一些工具建议,接下来我们就来盘点一下那些UI设计师需要掌握的界面设计工具。 1. Sketch-强大的矢量绘图工具 支持平台:只支持M...
  • Winform开发全套31个UI组件开源共享]

    千次下载 热门讨论 2015-08-09 17:06:05
    [Winform开发全套31个UI组件开源共享]
  • Spark UI界面原理

    万次阅读 2016-07-06 23:21:51
    本文以Spark-1.6.0源码为基础,分析了Spark UI界面的框架构成,及页面数据展示方法。
  • 后台管理UI

    千次阅读 2017-11-11 14:52:37
    后台管理UI ...一、EasyUI二、DWZ JUI三、HUI四、BUI五、Ace Admin六、Metronic七、H+ UI八、Admin LTE九、INSPINIA十、LigerUI十一、其它UI十二、总结 最近要做一个企业的OA系统,以前一直使用Eas
  • Android UI---界面开发推荐颜色 在Android开发过程中,总要给app添加一些背景,个人认为使用纯色调便可以达到优雅的视觉效果。 补充一些常用的颜色值:colors.xml #ffffff #fffff0 #ffffe0 #ffff00 #fffafa ...
  • SwiftUI入门到实战课程

    千人学习 2019-12-10 16:14:27
    SwiftUI具有易于阅读和自然编写的声明式Swift语法,可与新的Xcode设计工具无缝协作,使您的代码和设计**同步。自动支持动态类型、暗黑模式、本地化和可访问性,意味着您的**行SwiftUI代码已经是您编写过的非常强大的...
  • 移动Web UI库(H5框架)有哪些,看这里就够了

    万次阅读 多人点赞 2017-11-25 16:30:25
    前言今年上半年,项目组在项目开发的过程中建立了一套风格统一,组件丰富完善,命名统一规范的PC端UI库,适用于做大型站点,该UI库也是应用到了整个平台的项目中,在各个项目组中进行推广。因为项目的保密性,这里不...
  • Android UI线程和非UI线程

    千次阅读 2016-09-07 11:00:47
    UI线程及Android的单线程模型原则  当应用启动,系统会创建一个主线程(main thread)。  这个主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,你的应用和Android的UI组件(components from ...
  • UIPath,RPA里算是比较简单易操作的一款软件了,因为公司业务的需要,代理uipath以及部署业务,所以接触到了uipath。从开始到最终做到企业项目部署,大概用了两个月的时间,收获不少。自己之前是做过后端开发,前端...
  • 聊聊UI自动化

    万次阅读 多人点赞 2017-02-14 11:17:06
    学习做自动化的同学一开始都是偏向于UI自动化,自己这些时间也写过很多:python的,Java的,以及RF关键字驱动的。。。 今天就说下UI自动化的一些东西吧,希望对大家有些帮助,少走些弯路。测试生命中三大幻觉: 今天...
  • SystemUI架构分析

    万次阅读 多人点赞 2017-02-10 17:49:21
    SystemUI架构分析SystemUI架构分析 前言 1SystemUI介绍 1SystemUI摘要 2什么是SystemUI 2SystemUI的启动过程 3SystemUI的SERVICES 1音量控制 11音量控制简介 12音量控制SERVICE的初始化 13控制音量过程 2...
  • [收藏]VUE优秀UI组件库合集

    万次阅读 多人点赞 2018-06-14 16:13:12
    [收藏]VUE优秀UI组件库合集...前言:vue作为一款深受广大群众以及尤大崇拜者的喜欢,特此列出在github上开源的vue优秀的UI组件库供大家参考,期待开发者们推出更多优秀的组件库。 一、相关框架介绍  ---------...

空空如也

1 2 3 4 5 ... 20
收藏数 1,408,096
精华内容 563,238
关键字:

ui 设计表的操作过多