Axure高保真教程:函数自查表(全攻略)

1 评论 4839 浏览 37 收藏 33 分钟

编辑导语:在这篇文章里,作者分享了Axure中的常用的函数,以及对应的说明和应用模板,希望能给你带来帮助。

今天和大家分享函数自查表,里包含Axure中全部常用的函数,每个函数里有对应的说明以及应用模板,你们可以在函数自查表中学习,也可以在忘记时快速查找。

原型模板地址:https://ybyrac.axshare.com/#g=1

一、元件函数

This:指当前元件,一般后面配合其他函数使用,例如:this.x,this.y,this.text,this.width,this.height,可以快速获取当前元件指定的值。

Target:指目标元件,一般后面配合其他函数使用,例如target.x,target.y,target.text,target.width,this.height,可以快速获取目标元件指定的值。

x:在x轴对应的坐标值,例如:this.x,target.x,Cursor.x,LVAR1.x……

y:在y轴对应的数值,例如:this.y,target.y,Cursor.y,LVAR1.y……

width:获取对象的宽度,例如:this.width,target.width,LVAR1.height,window.height……

height:获取对象的宽度,例如:this.height,target.height,LVAR1.height,window.height……

scrollX:获取元件对象的水平滚动距离,一般为动态面板,或者浏览器窗口。

scrollY:获取元件对象的垂直滚动距离,一般为动态面板,或者浏览器窗口。

text:获取元件对象的文字,例如:this.text、target.text、LVAR1.text……

name:获取元件自定义名称的名字,例如:this.name、target.name、LVAR1.name……

Top:获取元件的上边界的y坐标值。例如this.top,target.top,LVAR1.top……

left:获取元件的左边界的x坐标值。例如this.left,target.left,LVAR1.left……

right:获取元件的右边界的x坐标值(元件的x坐标值+元件宽度)。例如this.right,target.right,LVAR1.right……

bottom:获取元件的下边界的y坐标值(元件的y坐标值+元件高度)。例如this.bottom,target.bottom,LVAR1.bottom……

opacity:元件的不透明度,0-100%之间,数字越小透明度越大,数字越大透明度越小,0为全透明,100%完全不透明。

rotation:获取元件已旋转的角度。

二、页面函数

PageName:获取当前页面的名称,可以当做页签使用,不需要自己填写,复制粘贴即可,从而提高效率。

三、窗口函数

Window.width:获取当前窗口的宽度,经常用于设置背景自适应等场景。

Window.height:获取当前窗口的高度,经常用于设置背景自适应等场景。

Window.scrollX:页面水平滚动的距离,经常用于制作锚点菜单。

Window.scrollY:页面垂直滚动的距离,经常用于制作锚点菜单。

四、鼠标(指针)函数

Cursor.x:鼠标指针在页面中位置的X轴坐标,经常用于元件跟随鼠标指针的交互。

Cursor.y:鼠标指针在页面中位置的Y轴坐标,经常用于元件跟随鼠标指针的交互。

DragX:鼠标拖动瞬间(1毫秒)的水平拖动距离,一般而言,该函数只用于判断拖动方向,不用于判断拖动距离,如果数值为正数,则向右拖动;如果为负数,则向左拖动。

TotalDragX:鼠标拖动元件的水平拖动距离的合计数,即从开始拖动元件到结束拖动元件的x坐标轴距离,同样如果数值为正数,则向右拖动;如果为负数,则向左拖动,具体数值代表拖动的水平距离。

DragY:鼠标拖动瞬间(1毫秒)的垂直拖动距离,一般而言,该函数只用于判断拖动方向,不用于判断拖动距离,如果数值为正数,则向下拖动;如果为负数,则向上拖动。

TotalDragY:鼠标拖动元件的垂直拖动距离的合计数,即从开始拖动元件到结束拖动元件的y坐标轴距离,同样如果数值为正数,则向下拖动;如果为负数,则向上拖动,具体数值代表拖动的垂直距离。

DragTime:鼠标拖动元件的时间,即从开始拖动元件到结束拖动元件的总时长。这里注意单位是毫秒,1s=1000ms。

五、数字函数

toExponential:把数值转换为指数计数法,可以把数值转换直说计数法,完整的公式为[[LVAR.toExponential(decimalPoints)]],LVAR为变量,案例中代表输入数值的文本框,decimalPoints代表保留的小数点。例如吧12345的数值作为指数,保留两位小数点的结果为1.23e+4。

toFixed:四舍五入函数,可以将数字四舍五入转为保留指定位数的小数,完整的公式为[[LVAR.toFixed(decimalPoints)]],LVAR为变量,案例中代表输入数值的文本框,decimalPoints代表保留的小数点。例如把1.2355的数值作为指数,保留两位小数点的结果为1.24。

toPrecision:把数值转换为指定位数的函数,小数点不计入长度。完整的公式为[[LVAR.toPrecision(length)]],LVAR为变量,案例中代表输入数值的文本框,length代表保留的小数点。如果输入的长度大于本身长度,例如数值为12345,长度为7,就会在后面自动添加小数点,结果为12345.00;如果输入的长度小于本身长度,例如数值为12355,长度为3,就是转为指数的形式并且自动四舍五入,结果为1.24e+4。

六、字符串函数

length:获取目标文本的长度,即字符个数;这里所有字符(包括汉字、数字、英文、符号),每个都是按1长度计算。

charAt(index):获取目标文本里指定位置的字符,完整的公式为[[LVAR.charAt(index)]],LVAR为变量,案例中代表输入文字的文本框,index代表获取的位数,这里注意index是从0开始的,即index=0,就是获取第一位;index=1,就是获取第二位……

charCodeAt(index):获取目标文本里指定位置字符的Unicode编码,该函数和前面提到的charAt(index)类似,不过charAt(index)是直接获取文本指定位置的字符;charCodeAt(index)是获取文本里指定位置字符的Unicode。

Unicode编码主要可以用于判断输入内容是数字、英文、汉字、还是符号,中文编码段19968 ~ 40622,所以该函数常用于判断指定内容是否为中文。

完整的公式为[[LVAR.charCodeAt(index)]],LVAR为变量,案例中代表输入文字的文本框,index代表获取的位数,这里注意index是从0开始的,即index=0,就是获取第一位;index=1,就是获取第二位……

concat(‘string’):字符串组合,将两个文本(字符串)组合在一起,完整的公式为[[LVAR.concat(‘string’)]],LVAR为第一个文本,案例中文本1的文本框,(‘string’)为第二个文本,案例中为文本2的文本框。

一般而言,用[[LVAR1.text]][[LVAR2.text]]合并会更简单,所以这个函数比较少用,除非是需要数字合并在一个交互里完成计算,不过其实拆成两部也会更简单,大家简单了解一下即可。

indexOf:查询目标文本里对应字符串首次出现的位置,完整的公式为[[LVAR.indexOf(‘searchValue’)]],LVAR为变量,案例中代表输入文字的文本框。searchValue代表搜索的内容,案例中为查询内容的文本框。

查询结果为数字,从0开始的,即结果=0,就是查询内容在第1位;结果=1,就是查询内容在第2位……如果查询内容不存在,结果=-1。所以该函数经常用于模糊搜索,如果结果>-1,即有结果。

lastIndexOf:查询目标文本里对应字符串最后一次出现的位置,完整的公式为[[LVAR.lastIndexOf(‘searchValue’)]],LVAR为变量,案例中代表输入文字的文本框;searchValue代表搜索的内容,案例中为查询内容的文本框。

查询结果为数字,从0开始的,即结果=0,就是查询内容在第1位;结果=1,就是查询内容在第2位……如果查询内容不存在,结果=-1。所以该函数经常用于模糊搜索,如果结果>-1,即有结果。

replace:替换函数,可以将文本里的指定字符替换成新的字符,完整的公式为[[LVAR.replace(‘searchvalue’,’newvalue’)]],LVAR为变量,代表被修改的文本段落,案例中灰色框内文字的文本框;searchValue代表搜索的字符(被替换的字符),案例中为左侧的文本框;newvalue代表替换后的新字符,案例中为右侧文本框的内容。

例如searchvalue为善于,newvalue为聪明的,点击替换后,上面文本段落里,所有善于的字符都会替换成聪明的。这里注意searchvalue和newvalue,如果是变量的方式是不需要引号,如果是写死固定的字符,就需要保留引号。

slice:从目标文本中获取指定位置(开始位置到结束位置)的字符串,完整的公式为[[LVAR.slice(start,end)]],LVAR为变量,案例中代表输入右上方的文本段落;start开始获取文本的位置,end代表结束获取文本的位置。

这里需要注意,slice同样是从0开始的,即start=0,对应的是文本的第1位;start=1,对应的是文本的第2位,依次类推……另外end是可以不填,如果end不填则从开始位置截取到最后,但是函数需要改成[[LVAR.slice(start)]]。

substr:从目标文本中获取指定开始位置截取一定长度的字符串,完整的公式为[[LVAR.substr(start,length)]],LVAR为变量,案例中代表输入左上方的文本段落;start开始获取文本的位置,length代表要获取文本的长度。

这里需要注意,substr同样是从0开始的,即start=0,对应的是文本的第1位;start=1,对应的是文本的第2位,依次类推……另外length是可以不填,如果不填则从开始位置截取到最后,但是函数需要改成[[LVAR.substr(start)]]。

substring:从目标文本中获取指定位置(开始位置到结束位置)的字符串(和slice函数一样),从目标文本中获取指定位置(开始位置到结束位置)的字符串,完整的公式为[[LVAR.substring(from,to)]],LVAR为变量,案例中代表输入右上方的文本段落;from开始获取文本的位置,to代表结束获取文本的位置。

这里需要注意,substring同样是从0开始的,即from=0,对应的是文本的第1位;from=1,对应的是文本的第2位,依次类推……另外结束to是可以不填,如果to不填则从开始位置截取到最后,但是函数需要改成[[LVAR.substring(from)]]

split(‘separator’,limit):将目标文本与分隔字符相同的字符,形成多组字符串,并返回从左开始的指定组数。完整公式为[[LVAR.split(‘separator’,limit)]],separator为要转变为逗号的字符,这里可以用变量代替;分隔字符可以为空,为空时每个字符之间有逗号分隔开;limit为返回组数的数值,该参数可以省略,省略该参数则返回所有字符串组。

toLowerCase:将目标文本内所有的大写字母转换为小写字母,完整函数为[[LVAR.toLowerCase()]],LVAR为变量,对应目标文本。

toUpperCase:将目标文本内所有的小写字母转换为大写字母,完整函数为[[LVAR.toUpperCase()]],LVAR为变量,对应目标文本

trim:将目标文本两端的空格号去除,这里注意只能去除两端的空格号,在文本中间的空格号不能去除,完整函数为[[LVAR.trim()]],LVAR为变量,对应目标文本。

toString:将一个逻辑值转换为字符串,暂未发现有价值的案例。

七、数学函数

Math.sin(x):获取目标弧度值的正弦值,x为参数,可以填写具体数字,例如Math.sin(1.3) ,得出结果为0.96。也可以案例一样,用变量的方式,Math.sin(LVAR1)。

Math.cos(x):获取目标弧度值的余弦值,x为参数,可以填写具体数字,例如Math.cos(1.3) ,得出结果为0.267。也可以案例一样,用变量的方式,Math.cos(LVAR1)。

Math.tan(x):获取目标弧度值的正切值,x为参数,可以填写具体数字,例如Math.sin(1.3) ,得出结果为3.6。也可以案例一样,用变量的方式,Math.tan(LVAR1)。

Math.asin(x):获取目标值的反正弦值,数学函数为正弦的反函数,y=arcsinx,就是已知正弦数值,反求角度,如sin(a) = b,则arcsin(b) = a;它的值是以弧度表达的角度。定义域:[-1,1]。

Math.acos(x):获取目标值的反余弦弧度值,数学函数为余弦的反函数,y=arccosx,就是已知余弦数值,反求角度,如cos(a) = b,则arccos(b) = a;它的值是以弧度表达的角度。定义域:[-1,1]。

Math.atan(x):获取目标值的反正切值,反正切函数是指函数y=tanx的反函数,记作y=arctanx 或 y=tan-1x,叫做反正切函数。它表示(-π/2,π/2)上正切值等于 x 的那个唯一确定的角,即tan(arctan x)=x,反正切函数的定义域为R即(-∞,+∞)。

Math.atan2(y,x):获取目标坐标(x,y)的弧度值,经常用于计算两点间的角度值(弧度值),这里注意,获得的弧度值并不是我们所说的多少度,如果需要转化的话还要在原来的基础上/π*180,具体原因就是数学问题了,有需要的可以自己复习一下三角函数哈。

Math.abs(x):绝对值函数,可以获取目标数字的绝对值,x为需要取绝对值的数,可以填写具体的数字,例如:Math.abs(-100),得出的结果为100;也可以填写变量,例如Math.abs(LVAR1)。

Math.ceil(x) :向上取整函数,获取大于或者等于目标数值的最小整数,x为参数,可以填写具体数字,例如Math.ceil(1.3) ,得出结果为2。也可以用变量的方式,Math.ceil(LVAR1)。

Math.floor(x):向下取整函数,获取小于或者等于目标数值的最大整数,x为参数,可以填写具体数字,例如Math.floor(1.3) ,得出结果为1。也可以用变量的方式,Math.floor(LVAR1)。

Math.exp(x):指数函数,计算以e为底的指数。e≈2.71828182845,x为参数,可以填写具体数字,例如Math.exp(1.3) ,得出结果≈3.669。也可以用变量的方式Math.exp(LVAR1)。

Math.log(x) :对数函数,计算以e为底的对数值。数学上一般记做lnx,e≈2.71828182845,x为参数(x>0),可以填写具体数字,例如Math.log(1.3) ,得出结果≈0.262。也可以用变量的方式,Math.log(LVAR1)。

Math.pow(x,y):幂函数,计算x的y次幂,是以x为底,y为幂的幂函数,x、y为参数,可以填写具体数字,例如Math.pow(2,3),得出结果为8。也可以案例一样,用变量的方式,Math.pow(LVAR1,LVAR2)。

Math.max(x,y):可以对比多个数并获取目标值中的最大值,情况1:Math.max(x,y)函数,可以比较多个数并获取目标值中最大值,不同数之间用英文逗号隔开即可。例如Math.max(3,5,6,1,3,5,2),得出的结果为6。

情况2:Math.max(x,y)函数,页可以比较多个变量并获取变量中最大值,不同变量之间用英文逗号隔开即可。例如Math.max(LVAR1,LVAR2,LVAR3)。

Math.min(x,y):可以对比多个数并获取目标值中的最小值,情况1:Math.min(x,y)函数,可以比较多个数并获取目标值中最小值,不同数之间用英文逗号隔开即可。例如Math.max(3,5,6,1,3,5,2),得出的结果为1。

情况2:Math.min(x,y)函数,页可以比较多个变量并获取变量中最小值,不同变量之间用英文逗号隔开即可。例如Math.min(LVAR1,LVAR2,LVAR3)。

Math.random() :随机数函数,抽取一个0~1之间的随机数。

八、日期函数

NOW:标准时间函数,获取当前计算机系统标准时间,包括星期几、年、月、日、时、分、秒、时区,例如,Tue Apr 19 2022 16:44:04 GMT+0800 (中国标准时间)

GenDate:原型生成时间函数,获取当前原型生成的标准时间(当前页面最后修改时间),例如Tue Apr 19 2022 16:44:46 GMT+0800 (中国标准时间)

getFullYear:年份函数,获取当前时间年份部分的数值,完整函数为Now.getFullYear()

Year:年份函数,获取当前时间年份部分的数值

getMonth:月份函数,获取当前时间月份部分的数值(1-12),完整函数为Now.getMonth()

Month:月份函数,获取当前时间月份部分的数值(1-12)

getMonth:月份函数,获取当前时间月份的英文名称,完整函数为Now.getMonthName()

getDay:星期函数,获取当前时间星期部分的数值(0-6),0代表星期天,完整函数为Now.getDay()

getDayOfWeek:星期名称函数,获取当前时间星期部分的英文名称,完整函数为Now.getDayOfWeek()

getDate:日期函数,获取当前时间日期部分的数值(1-31),完整函数为Now.getDate()

Day:日期函数,获取当前时间日期部分的数值(1-31)

getHours:时针函数,获取当前时间小时部分的数值,完整函数为Now.getHours()

Hours:时针函数,获取当前时间小时部分的数值

getMinutes:分钟函数,获取当前时间分钟部分的数值,完整函数为Now.getMinutes()

Minutes:分钟函数,获取当前时间分钟部分的数值

getSeconds:秒针函数,获取当前时间秒部分的数值,完整函数为Now.getSeconds()

Seconds:秒针函数,获取当前时间秒部分的数值

getMilliseconds:分钟函数,获取当前时间毫秒部分的数值(1秒=1000毫秒),完整函数为Now.getMilliseconds()

getTime:获取系统时间距离从1970年1月1日00:00:00开始,所经过的毫秒数,完整函数为Now.getTime()

getTimezoneOffset():获取世界标准时间(UTC)与当前主机时间的分钟差值,完整函数为Now.getTimezoneOffset(),例如中国时区为东八区,得出的结果应该是-8*60(分钟)=-480

getUTCFullYear:获取世界标准时间(UTC)的年份,完整函数为Now.getUTCFullYear()

getUTCMonth:获取世界标准时间(UTC)的月份(0~11),这里注意,获取的值0就是1月,1就是2月……11就是12月,完整函数为Now.getUTCMonth()

getUTCDay:获取世界标准时间(UTC)的星期几(0-6),完整函数为Now.getUTCDay()

getUTCDate():获取世界标准时间(UTC)的日期(1-31),完整函数为Now.getUTCDate()

getUTCHours:获取世界标准时间(UTC)的小时,完整函数为Now.getUTCHours()

getUTCMinutes:获取世界标准时间(UTC)的分钟,完整函数为Now.getUTCMinutes()

getUTCSeconds:获取世界标准时间(UTC)的秒数,完整函数为Now.getUTCSeconds()

getUTCMilliseconds:获取世界标准时间(UTC)的毫秒数,完整函数为Now.getUTCMilliseconds()

Date.parse(datestring):计算指定时间和1970年1月1日00:00:00之间相差的毫秒数,常用于判断两个日期之间的大小

toDateString() :以字符串的形式获取当前日期,完整函数为Now.toDateString()

toISOString() :以IOS格式(YYYY-MM-DDTHH:mm:ss.sssZ)获取当前日期,完整函数为Now.toISOString()

toJSON():以JSON格式(YYYY-MM-DDTHH:mm:ss.sssZ)获取当前日期,完整函数为Now.toJSON()

toLocaleDateString() :以字符串格式(/MM/DD)获取本地日期,完整函数为Now.toLocaleDateString()

toLocaleTimeString() :以字符串的格式(HH:mm:ss)获取当前时间,完整函数为Now.toLocaleTimeString()

toLocaleString() :以字符串的格式(YYYY/MM/DD HH:mm:ss)获取当前日期时间,完整函数为Now.toLocaleString()

toTimeString() :以字符串的格式获取当前日期时间时区,完整函数为Now.toTimeString()

toUTCString():以字符串的格式获取当前时间的标准时间,完整函数为Now.toUTCString()

Date.UTC(year,month,day,hour,min,sec,millisec):获取指定时间与1970 年 1 月 1 日 00:00:00的世界标准时间相差的毫秒数

valueOf():获取当前日期的原始值,完整函数为Now.valueOf()

addYears(years):年份增减计算函数,完整函数为Now.addYears(years),years为参数,可以填写具体数字,例如addYears(3) ,得到当前时间加3年的具体时间;这里正负号代表加减,例如addYears(-3),得到当前时间减3年的具体时间。也可以写成函数的形式,addYears(LVAR1)

addMonths(months):月份增减计算函数,完整函数为Now.addMonths(months),months为参数,可以填写具体数字,例如addMonths(3),得到当前时间加3月的具体时间;这里正负号代表加减,例如addMonths(-3)得到当前时间减3月的具体时间。也可以写成函数的形式

addDays(days):日期增减计算函数,完整函数为Now.addDays(days),days为参数,可以填写具体数字,例如addDays(3),得到当前时间加3天的具体时间;这里正负号代表加减,例如addDays(-3)得到当前时间减3天的具体时间。也可以写成函数的形式,addDays(LVAR1)

addHours(hours):小时增减计算函数,完整函数为Now.addHours(hours),hours为参数,可以填写具体数字,例如addHours(3),得到当前时间加3小时的具体时间;这里正负号代表加减,例如addHours(-3)得到当前时间减3小时的具体时间。也可以写成函数的形式,addHours(LVAR1)

addMinutes(minutes):分钟增减计算函数,完整函数为Now.addMinutes(minutes),minutes为参数,可以填写具体数字,例如addMinutes(3),得到当前时间加3分钟的具体时间;这里正负号代表加减,例如addMinutes(-3)得到当前时间减3分钟的具体时间。也可以写成函数的形式,addMinutes(LVAR1)

addSeconds(seconds):秒数增减计算函数,完整函数为Now.addSeconds(seconds),seconds为参数,可以填写具体数字,例如addSeconds3),得到当前时间加3秒的具体时间;这里正负号代表加减,例如addSeconds(-3)得到当前时间减3秒的具体时间。也可以写成函数的形式,addSeconds(LVAR1)

addMilliseconds(ms):毫秒增减计算函数,完整函数为Now.addMilliseconds(ms),ms为参数,可以填写具体数字,例如addMilliseconds(3),得到当前时间加3毫秒的具体时间;这里正负号代表加减,例如addMilliseconds(-3)得到当前时间减3毫秒的具体时间。也可以写成函数的形式,addMilliseconds(LVAR1)

九、中继器函数

visibleItemCount:统计中继器中可见项数

ItemCount:统计中继器中总项目数,注:如果进行了筛选,项目列表的总数量则是筛选后的数量

dataCount:统计中继器中数据行的总数量

pageCount:统计中继器中的总页数

pageIndex:获取中继器的页面,即当前是在中继器的第几页

Item:当前行,一般后面+列名,例如item.xxx,用于获取中继器指定列的值。一般做的交互是在中继器每项加载时设置文本或图片的,在更新行、筛选的时候也会用到作为条件

TargetItem :目标行,一般后面+列名,例如TargetItem .xxx,一般是在更新行交互或者条件里用的比较多

index:中继器会自动编号,按12345……的顺序编号,注:这里的编号是是演示时显示内容是否行数,不是在原来中继器表格里的行数,增删改查筛选后也会自动重新编号,下面案例中第一列即通过item.index实现自动编号

isFirst:判断是否为中继器中的第一行,如果是就返回true,否则就返回false。经常用于条件判断。注:他判断的是演示时显示内容是否为第一行,和index一样,不是原来的中继器数据表中的第一行

isLast:判断是否为中继器中的最后一行,如果是就返回true,否则就返回false。经常用于条件判断。注:他判断的是演示时显示内容是否为最后一行,和index一样,不是原来的中继器数据表中的最后一行

isEven:判断是否为中继器中的偶数行,如果是就返回true,否则就返回false。经常用于条件判断。注:他判断的是演示时显示内容是否为偶数行,和index一样,不是原来的中继器数据表中的偶数行

isOdd:判断是否为中继器中的奇数行,如果是就返回true,否则就返回false。经常用于条件判断。注:他判断的是演示时显示内容是否为奇数行,和index一样,不是原来的中继器数据表中的奇数行

isMarked:判断是否为中继器中的被标记行,如果是就返回true,否则就返回false

isVisible :判断是否为中继器中的可见行,如果是就返回true,否则就返回false。暂时未能发现有什么实际案例。因为你能看见的就是可见行,所以结果全部都是TRUE,看不见的你也点不了他。只能作为条件使用

十、布尔函数

==:等于函数,就是数学上等于的意思,一般用于条件判断或者中继器筛选

!=:不等于函数,就是数学上不等于的意思,一般用于条件判断或者中继器筛选

<:小于函数,就是数学上小于的意思,一般用于条件判断或者中继器筛选

<=:小于等于函数,就是数学上小于等于的意思,一般用于条件判断或者中继器筛选

>:大于函数,就是数学上大于的意思,一般用于条件判断或者中继器筛选

>=:大于等于数,就是数学上大于等于的意思,一般用于条件判断或者中继器筛选

&&:并且函数,一般用于条件判断或者中继器筛选,两个或以上条件同时成立的意思

||:或者函数,一般用于条件判断或者中继器筛选,两个或以上条件只要一个成立就符合的意思

原型模板地址:https://ybyrac.axshare.com/#g=1

以上就是Axure里面所有的函数的介绍了,具体案例你们可以在模板里查看。建议你可以收藏起来,方便以后要用时快速查询。

那本期的教程就到此为止了,感谢您的阅读,我们下期见,88~

 

本文由 @AI产品人 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

给作者打赏,鼓励TA抓紧创作!
更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. UI表示看不懂哦。给楼主用心的详细整理点赞~~~

    来自陕西 回复