精华内容
下载资源
问答
  • h5浏览器兼容及UI设计图的解决方法 先上代码,后解释。。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓...

    h5浏览器兼容及UI设计图的解决方法

    先上代码,后解释。。

    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

    meta 标签

    <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />

    js代码(自觉带上jQuery)
    <script type="text/javascript">
    	(function () {
    		$("html,body").css("font-size", ($('html').width() / 750 * 100) + "px");
    	})()
    </script>
    

    ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

    先简单解释一下dpr适配吧
        一个屏幕的DPR是根据屏幕的物理像素除以屏幕的设备独立像素(也叫密度无关像素)得来的(DPR = 物理像素 / 设备独立像素)。iphone6宽度的设备独立像素是375,宽度的物理像素是750,那么就意味着DPR是2。

    flexible.js对dpr有一个很好的适配,不同手机型号的屏幕分辨率都有对应的dpr、html的font-size初始值以及meta的适配。小编在做项目的时候也是用的flexible.js,同样也出现了很多的问题。

    1. 与UI设计图的数值换算很麻烦。
      解:现在大部分的UI设计图宽都是750像素,flexible.js中html的font-size初始值可不是按照设计图宽750像素来的,换算其他太麻烦,难道要放个计算机在旁边算吗?完全降低了开发效率。
    2. meta标签与接入第三方聊天工具不匹配。
      解:flexible.js中对meta的初始值也是换算而来,不像我们上面写meta标签那种比例而来,我们做的项目需要接入客服聊天,有一些第三方的聊天工具完全不适配,在手机上,聊天界面特别小,去掉flexible.js,整个项目都要改,不去掉的话,第三方的聊天工具也是要改。

    接下来说说上面我说的方法吧。

    meta标签 content属性值 :
         width:可视区域的宽度,值可为数字或关键词device-width
         intial-scale:页面首次被显示是可视区域的缩放级别,取值1.0则页面按实际尺寸显示,无任何缩放
         maximum-scale=1.0, minimum-scale=1.0;可视区域的缩放级别,
         maximum-scale用户可将页面放大的程序,1.0将禁止用户放大到实际尺寸之上。
         user-scalable:是否可对页面进行缩放,no 禁止缩放

    (function () { ( &quot; h t m l , b o d y &quot; ) . c s s ( &quot; f o n t − s i z e &quot; , ( (&quot;html,body&quot;).css(&quot;font-size&quot;, ( ("html,body").css("fontsize",((‘html’).width() / 750 * 100) + “px”);})()

    重点在这里↓↓↓↓↓:

        比如说:设计图中一个input宽600px,在css中设置input宽按照设计图是值除以100就可以,这个input的宽就是6rem;高是80px,css设置height:0.8rem即可,是不是很方便呢。。

    如果有什么问题,解决不了的,可以联系小编哟~~

    展开全文
  • 设计师相较于前端来讲是更接近产品用户体验的人,但是毕竟APP原生系统界面设计跟H5页面设计还是存在很多差异性的。所以很多不太熟悉H5技术限制的设计师还是很容易犯一些错误的。H5相对于APP在设计上有什么区别呢?一...

    设计师相较于前端来讲是更接近产品用户体验的人,但是毕竟APP原生系统界面设计跟H5页面设计还是存在很多差异性的。所以很多不太熟悉H5技术限制的设计师还是很容易犯一些错误的。H5相对于APP在设计上有什么区别呢?一起来了解下。

    e9772ad23ac8ef800d3c73c4e734b518.png

    1、功能的简化

    通过以上的图片可以看到,天猫H5的首页功能比APP的首页功能减少了很多,例如扫一扫的和消息功能以及底部导航都没有了。同类的banner广告布局也没有这么复杂,只是简单粗暴的大banner下方放几个功能入口。

    43fcafb734d4062b7453c660c5e625f8.png

    2、突出基本功能

    例如天猫的App端商品类别放置在第二屏,而H5的商品分类在首页顶部原扫一扫图标的位置,点开就是一个抽屉式弹窗。更简洁直观的功能更有利于增强H5的操作体验。

    6e2314d593577e7a6f411a48d09178f6.png

    3、顶部navigationBar不可更改

    H5的顶部navigationBar是不可更改的,不管任何软件打开H5,其顶部显示的始终是原打开此H5页面app的navigationBar。所以一般如果需要设计顶部导航的时候我们是基于navigationBar的下方再放置一个navigationBar的。这里也就是如上图右侧所示显示了双层navigationBar的效果。

    aba9cac9d5082bc00ea2de07d3b43a90.png

    4、常使用顶部返回按钮

    h5页面较长的情况下经常会使用顶部返回按钮,这个类似与pc网页端的交互形式。目前多数h5已然淘汰了此交互功能,以顶端自带的返回按钮来替代。目前天猫也仅在首页使用,因为如果没有这个按钮的话点返回会退出天猫。所以,具体使用与否还需视情况而定。

    5、加载进度条

    每进入一个新的h5页面顶部都会显示加载进度条,如果是原生系统内嵌的H5页面注意这里是可以自定义进度条样式的。

    以上就是H5页面设计相对于APP的区别,希望这些能够对您在H5 UI设计上有所帮助。

    展开全文
  • 公司开发根据UI设计制作了2000多个H5网页。利用python 自动化去挑选2000多个模板中错误的模板。 经过粗略的查看,发现有些模板显示为空白,或者与原UI设计不一致,根据这个来设计方案。 首先考虑分成四步来做: 1...
     公司开发根据UI设计制作了2000多个H5网页。利用python 自动化去挑选2000多个模板中错误的模板。
     经过粗略的查看,发现有些模板显示为空白,或者与原UI设计不一致,根据这个来设计方案。
     首先考虑分成四步来做:
     1.获取H5网页的地址
     2.打开这些网页
     3.打开网页后与UI设计图进行比对
     4.挑选出错误的网页
     思路有了。接下来就是实现技术了:
     1.我们这边的所有网页资源都是存储在服务器上面,网页的url,name,id等信息使用mysql存储。可以使用 pymysql 来获取网页的信息。
    
    	import pymysql
    	
    	# 编写mysql 类
    	class MysqlHelper:
    		def __init__(self):
    			self.con = pymysql.connect(host='ip地址',user='用户名',password='密码',db='数据库名'
    			port=端口号,charset='utf8',cursorclass=pymysql.cursors.DictCursor)
    			self.cursor = self.con.cursor()
    		
    		def find(self,sql,args=None):
    			self.cursor.execute(sql,args=args)
    			self.con.commit()
    			return self.cursor.fetchone()
    
    		def findall(self,sql,args=None):
    			self.cursor.execute(sql,args=args)
    			self.con.commit()
    			return self.cursor.fetchall()
    
    		def close(self):
    			self.cursor.close()
    			self.con.close()
    
    		def get_data(self):
            	sql = 'select id, html_path, name from h5_templates'
            	result = self.findall(sql)
            	self.close()
            	return result
    
    	if __name__ == '__main__':
    		mydb = MysqlHelper()
    		result =  mydb.get_data()
    
    2.编写截图类。H5网页的图片大都超出了浏览器最大窗口,因此设置不打开浏览器,并且获取H5要展示的实际长宽
    来设置浏览器窗口的大小。原图的截取通过截取整个浏览器窗口的图片,然后通过img标签去获取位置,再通过Image
    类截图。
    
    from PIL import Image
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    import time
    
    
    # 截取H5的图片
    def take_screenshot(browser,url, save_fn="capture.png"):
        # chrome_options = Options()
        # chrome_options.add_argument('headless')
        # browser = webdriver.Chrome(chrome_options=chrome_options)
        browser.get(url)  # Load page
        width = browser.execute_script("return document.documentElement.scrollWidth")
        height = browser.execute_script("return document.documentElement.scrollHeight")
        print(width, height)
        browser.set_window_size(width, height)
        time.sleep(1)
        browser.save_screenshot(save_fn)
        # browser.close()
    
    
    # 截取原图
    def take_screen_pic(driver,url,path1,path2):
        # chrome_options = Options()
        # chrome_options.add_argument('headless')
        # driver = webdriver.Chrome(chrome_options=chrome_options)
        driver.maximize_window()
        driver.get(url)
        baidu_img = WebDriverWait(driver, 20).until(
            EC.presence_of_element_located((By.XPATH, './html/body/img'))
        )
        driver.save_screenshot(path1)  # 对整个浏览器页面进行截图
        left = baidu_img.location['x']
        top = baidu_img.location['y']
        right = baidu_img.location['x'] + baidu_img.size['width']
        bottom = baidu_img.location['y'] + baidu_img.size['height']
    
        im = Image.open(path1)
        im = im.crop((left, top, right, bottom))  # 对浏览器截图进行裁剪
        im.save(path2)
        # driver.close()
    		
    

    3.编写图片对比类

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import cv2
    from PIL import Image, ImageChops
    from settings import settings
    
    # 均值哈希算法
    def aHash(img):
        # 缩放为8*8
        img = cv2.resize(img, (8, 8), interpolation=cv2.INTER_CUBIC)
        # 转换为灰度图
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        # s为像素和初值为0,hash_str为hash值初值为''
        s = 0
        hash_str = ''
        # 遍历累加求像素和
        for i in range(8):
            for j in range(8):
                s = s + gray[i, j]
        # 求平均灰度
        avg = s / 64
        # 灰度大于平均值为1相反为0生成图片的hash值
        for i in range(8):
            for j in range(8):
                if gray[i, j] > avg:
                    hash_str = hash_str + '1'
                else:
                    hash_str = hash_str + '0'
        return hash_str
    
    
    # 差值感知算法
    def dHash(img):
        # 缩放8*8
        img = cv2.resize(img, (9, 8), interpolation=cv2.INTER_CUBIC)
        # 转换灰度图
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        hash_str = ''
        # 每行前一个像素大于后一个像素为1,相反为0,生成哈希
        for i in range(8):
            for j in range(8):
                if gray[i, j] > gray[i, j + 1]:
                    hash_str = hash_str + '1'
                else:
                    hash_str = hash_str + '0'
        return hash_str
    
    
    # Hash值对比
    def cmpHash(path1, path2, similarity=settings.similarity):
        img1 = cv2.imread(path1)
        img2 = cv2.imread(path2)
        hash1 = aHash(img1)
        hash2 = aHash(img2)
        print(hash1,hash2)
        n = 0
        # hash长度不同则返回-1代表传参出错
        if len(hash1) != len(hash2):
            return -1
        # 遍历判断
        for i in range(len(hash1)):
            # 不相等则n计数+1,n最终为相似度
            if hash1[i] != hash2[i]:
                n = n + 1
        if n <= similarity:
            return True, n
        else:
            return False, n
    
    
    # 判断是否为纯色
    def judge_color(path):
        img = Image.open(path)
        clrs = img.getcolors(maxcolors=99999)
        if clrs is None:
            return True, 'beyond'
        elif len(clrs) == 1:
            return False, '1'
        else:
            return True, str(len(clrs))
    
    

    4.编写一个日志记录类

    from openpyxl import workbook,load_workbook
    
    
    def init_excel(path, sheetname=None):
        wb = workbook.Workbook()
        if not sheetname:
            ws = wb.active
        else:
            ws = wb[sheetname]
        ws['A1'] = 'id'
        ws['B1'] = 'h5_pic_url'
        ws['C1'] = 'acture_pic_url'
        ws['D1'] = 'differentia'
        wb.save(path)
        wb.close()
    
    
    def write(path, data, row_index, sheetname=None):
        wb = load_workbook(path)
        if not sheetname:
            ws = wb.active
        else:
            ws = wb[sheetname]
        ws.cell(row_index, 1).value = data.get('id')
        ws.cell(row_index, 2).value = data.get('name')
        ws.cell(row_index, 3).value = data.get('h5_url')
        ws.cell(row_index, 4).value = data.get('differentia')
        row_index += 1
        wb.save(path)
        wb.close()
        return row_index
    
    
    if __name__ == '__main__':
        init_excel('test.xlsx')
        val = {
            "id": 1,
            "h5_pic_url": 2,
            "acture_pic_url": 3,
            "differentia": 4
        }
        row_index = 2
        row_index = write('test.xlsx',val,row_index)
        print(row_index)
    

    5.编写run

    from selenium import webdriver
    from mysqlHelper import MysqlHelper
    from selenium.webdriver.chrome.options import Options
    import time
    import os
    from screenshot import take_screen_pic,take_screenshot
    from image_compare import cmpHash,judge_color
    from excelHelper import init_excel,write
    from settings import settings
    
    
    def run():
        mydb = MysqlHelper()
        data_lst = mydb.get_data()
    
        path = '../imagesave_' + time.strftime('%y%m%d%H%M%S')
    
        if not os.path.exists(path):
            os.mkdir(path)
    
        init_excel(path+'/log.xlsx')
        row_index = 2
        for data in data_lst:
            chrome_options = Options()
            chrome_options.add_argument('headless')
            driver = webdriver.Chrome(chrome_options=chrome_options)
            h5id = data.get('id')
            h5name = data.get('name')
            h5_url = settings.url + str(data.get('html_path'))
            img_url = settings.url + str(data.get('thumb_path'))
            print(h5_url,img_url)
    
            base_path = path + '/' + h5name
            h5_img_path = base_path + '_h5.png'
            img_img_path = base_path + '_img.png'
            shot_img_path = base_path + '_shot.png'
            take_screenshot(driver,h5_url, h5_img_path)
            take_screen_pic(driver,img_url, img_img_path, shot_img_path)
            driver.close()
            os.remove(img_img_path)
            if settings.flag == 1:
                result, n = cmpHash(h5_img_path, shot_img_path)
            elif settings.flag == 2:
                result, n = judge_color(h5_img_path)
            print(result,n)
            if result:
                os.remove(h5_img_path)
                os.remove(shot_img_path)
            else:
                val = {
                    "id": h5id,
                    "name": h5name,
                    "h5_url": h5_url,
                    "differentia": n
                }
                row_index = write(path+'/log.xlsx',val,row_index)
    
    
    if __name__ == '__main__':
        run()
    

    运行结果如下:
    在这里插入图片描述
    第一张是H5展示的图片,第二张是原图。

    展开全文
  • 关于标准ui设计图转换为H5页面的终端适配 一些基本概念 在进行具体实战之前,首先得了解下面这些基本概念(术语): 视窗 viewport 简单的理解,viewport是严格等于浏览器的窗口。在桌面浏览器中,...

    关于标准ui设计图转换为H5页面的终端适配

    一些基本概念

    在进行具体实战之前,首先得了解下面这些基本概念(术语):

    视窗 viewport

    简单的理解,viewport是严格等于浏览器的窗口。在桌面浏览器中,viewport就是浏览器窗口的宽度高度。但在移动端设备上就有点复杂。

    移动端的viewport太窄,为了能更好为CSS布局服务,所以提供了两个viewport:虚拟的viewportvisualviewport和布局的viewportlayoutviewport。

    George Cummins在Stack Overflow上对这两个基本概念做了详细的解释

    而事实上viewport是一个很复杂的知识点,上面的简单描述可能无法帮助你更好的理解viewport,而你又想对此做更深的了解,可以阅读PPK写的相关教程

    物理像素(physical pixel)

    物理像素又被称为设备像素,他是显示设备中一个最微小的物理部件。每个像素可以根据操作系统设置自己的颜色和亮度。正是这些设备像素的微小距离欺骗了我们肉眼看到的图像效果。

    Flexible实现手淘H5页面的终端适配

    设备独立像素(density-independent pixel)

    设备独立像素也称为密度无关像素,可以认为是计算机坐标系统中的一个点,这个点代表一个可以由程序使用的虚拟像素(比如说CSS像素),然后由相关系统转换为物理像素。

    CSS像素

    CSS像素是一个抽像的单位,主要使用在浏览器上,用来精确度量Web页面上的内容。一般情况之下,CSS像素称为与设备无关的像素(device-independent pixel),简称DIPs。

    屏幕密度

    屏幕密度是指一个设备表面上存在的像素数量,它通常以每英寸有多少像素来计算(PPI)。

    设备像素比(device pixel ratio)

    设备像素比简称为dpr,其定义了物理像素和设备独立像素的对应关系。它的值可以按下面的公式计算得到:

    设备像素比 = 物理像素 / 设备独立像素
    

    在JavaScript中,可以通过window.devicePixelRatio获取到当前设备的dpr。而在CSS中,可以通过-webkit-device-pixel-ratio-webkit-min-device-pixel-ratio和 -webkit-max-device-pixel-ratio进行媒体查询,对不同dpr的设备,做一些样式适配(这里只针对webkit内核的浏览器和webview)。

    dip或dp,(device independent pixels,设备独立像素)与屏幕密度有关。dip可以用来辅助区分视网膜设备还是非视网膜设备。

    Flexible实现手淘H5页面的终端适配

    众所周知,iPhone6的设备宽度和高度为375pt * 667pt,可以理解为设备的独立像素;而其dpr为2,根据上面公式,我们可以很轻松得知其物理像素为750pt * 1334pt

     

    根据上面的情况,我觉得转换的方式可以用下面步骤。

    (1). 设计稿应有约定的大小(例750px),选取一个手机的设备宽度做量取大小值(例375)。

    (2). 限制使用rem,选取一个font-size值作为的基数。

    (3). 计算每个元素的rem值,进行界面开发。

    (4). js计算当前设备宽度的fontSize,并设置回html元素上。(适配步骤)

    (5). 媒体查询作为补救措施,特殊设备宽度设置特殊的font-size。(这步不是必须的)

     

    posted @ 2018-01-12 17:09 我不喜欢高姿态的家伙 阅读( ...) 评论( ...) 编辑 收藏
    展开全文
  • 可以调用比H5更多的手机系统功能来进行开发 运行速度跟APP差不多,但相对来说开发成本比APP要低 缺点: 微信小程序只有1M的大小,这样导致无法开发大型的小程序。 不能跳转外链网址,所以间接影响了小程序的开放性...
  • 移动端页面 UI 生成器 用于将设计稿样式转化为组件化的代码 有时间会持续更新维护的 :grinning_face_with_smiling_eyes: 使用者 设计师:通过拖拽编辑,生成UI稿 前端开发:划分模块、组件、重命名 class ----> ...
  • 移动端h5页面设计稿尺寸

    千次阅读 2016-12-09 10:12:36
    当我们在做手机端H5网页设计稿时(当然包含微信端的H5网页设计),如果没有做过类似的移动端的设计,UI设计前端工程师肯定会纠结的。如果是app设计师,就不会那么纠结啦。 延伸阅读: 2015年度最值得...
  • 以分答H5为例: 1、前言 2、色彩规范 重要: 一般: 文字: 3、文字规范 文字规范示例: 4、按钮规范 5、页面布局 顶部导航底部导航 只有底部导航 refer: ...
  • 太原UI设计师郭文军H5的新标签你知道有哪些吗【太原WEB前端工程师】? 文档的页眉 导航链接部分 定义文档中的节(常用于内容块) 定义独立于文档的其他内容(论坛的帖子等...
  • 移动端H5页面设计稿尺寸

    千次阅读 2016-12-18 23:18:07
    当我们在做手机端H5网页设计稿时(当然包含微信端的H5网页设计),如果没有做过类似的移动端的设计,UI设计前端工程师肯定会纠结的。如果是app设计师,就不会那么纠结啦。延伸阅读:2015年度最值得学习的10个H5...
  • 代码已上传至github github代码地址:https://github.com/Miofly/mio.git ... 但又要完全按照UI设计图还原代码,所以必须要完全适配移动端。以下是方法总结。 <!DOCTYPE html> <html lang="en"...
  • UI设计是指对软件的人机交互、操作逻辑、界面美观的整体设计,也是目前比较热门的高薪行业之一。学习UI设计可以从事很多职位,比如界面设计、交互设计等。不过什么是交互设计呢?UI设计师和交互设计师有... 交互设计和U
  • ui设计H5页面的设计是常见的,许多企业在做活动,促销,宣传的时候经常会设计H5页面,许多零基础学ui设计的新人设计师对于H5页面的设计风格了解的不多,今天小编就来跟大家介绍几种关于H5页面中常使用的设计风格...
  • ui设计H5页面的设计是常见的,许多企业在做活动,促销,宣传的时候经常会设计H5页面,许多零基础学ui设计的新人设计师对于H5页面的设计风格了解的不多,今天小编就来跟大家介绍几种关于H5页面中常使用的设计风格...
  • 设计行业在最近几年的发展是越来越好,尤其是UI设计行业,很多人都分不清UI设计和平面设计的区别,想具体知道UI设计和平面设计区别是什么?下面小编就为大家整理了详细的内容,希望能够帮助到大家。    UI...
  • <!-- 附带一套很不错的boostrap在线js css引用模板--> <!DOCTYPE html> <html lang="en"> <head>...meta name="viewport" content="width=device-width, initial-scale=1.0">...
  • 移动端H5页面设计稿尺寸大小规范

    千次阅读 2019-08-03 07:13:45
    当我们在做手机端H5网页设计稿时(当然包含微信端的H5网页设计),如果没有做过类似的移动端的设计,UI设计前端工程师肯定会纠结的。如果是app设计师,就不会那么纠结啦。 那么多手机屏幕尺寸,设计稿应该...
  • 本节介绍一款前端H5可视化布局器 MagicalDrag2.1.5 由js+css+html编写而成 软件官方在线使用地址:http://layuiout.magicalcoder.com/layui 在线使用:免费 优点在于 功能强大,可以自由嵌入各种web项目,有...
  •  我们一般所说的UI设计多指UI视觉设计,主要负责APP、Web、H5页面的色彩、布局、icon、字体方面的设计工作。但随着互联网的不断发展,纯视觉的工作已经开始日益减少,行业要求UI设计师也要懂点交互设计和产品方面...
  • UI设计简介

    2020-12-23 17:36:26
    UI设计:(web网页设计,从网页的构成、视觉规范、详情页、专题、推广页设计、web端类型、原型图的设计、原型出效果图、前端代码,移动端icon图标设计、产品及交互设计、视觉设计、动效设计、h5面试) UI设计:手机...
  • 今天小编要跟大家分享的文章是关于UI设计师...不少UI设计师想要学习web前端知识,一方面是喜欢那些华丽的网页特效,另一方面则是想成为全栈式UI设计师。1、HTML/CSS学习第一阶段,你要从最基础的HTML/CSS 开始,简...
  • UI设计学习路线

    千次阅读 2018-03-06 18:06:57
    怎么学全链路设计全链路...千锋全链路课程是市面上少有的覆盖手绘基础课程、C4D三维设计与H5推广页面设计的培训课程。UI全能设计师1.UI介绍行业情况介绍互联网发展趋势UI行业优势设计师就业薪资情况UI与产品的关...
  • 微信火了H5的专题页面设计也越来越多了,经常有朋友问H5专题设计按什么尺寸来做,有没有统一的规范,这里就给大家分享一套非常完整的关于微信H5活动页面设计UI视觉设计规范教程。希望对那些刚刚从事微信H5界面设计...
  • H5页面和小程序、QQ 内 H5页面),提升自动化测试的效率稳定性。 FAutoTest 是一款成长中的框架,吸收借鉴了一些 UI 自动化工具的优秀设计理念思想。如果框架有不足地方,或者你有更好的建议,欢迎提交 Issues ...
  • 设计师们做UI设计和交互设计、界面设计等一般会去什么网站呢? 作为一枚走在设计大牛路上的UI设计师,日常最多的事情就是打开网站汲取灵感。 除了国内外大家耳熟能详的各大设计网站外,王宇老师把UI设计师日常使用...
  • 如果你现在还不会ps一张照片,那么说明你落伍了,如果一个企业没有一个专业的UI设计师,那么这个企业的前端后端产品应该不会太美,所以,UI设计师是一个企业的灵魂,有了设计师,一切都变得更美了,UI设计行业近几年...
  • 想成为优秀UI设计师 如何系统地学习UI设计?由于就业市场竞争激烈,很多大学毕业生就业困难,而很多刚毕业工作一段时间的人,也因为能力专业不能在重要岗位上任职,没有更好的发展前景。  随着互联网的发展,UI...
  • UI设计和前端开发的区别

    千次阅读 2019-11-01 11:26:39
    UI设计分为实体UI虚拟UI,互联网说的UI设计是虚拟UI,UI即User Interface(用户界面)的简称。好的UI设计不仅是让软件变得有个性有品位,还要让软件的操作变得舒适简单、自由,充分体现软件的定位特点。 软件设计...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,029
精华内容 4,811
热门标签
关键字:

h5页面设计和ui设计