首页

大厂设计师的草稿本里画的都是什么?!

雪涛

很多同学投票想看看设计师的草稿本,今天就来满足大家了!我们来看看六位淘宝设计师的草稿本们,有些是纸质派,有些是电子党,Here we go!

草稿本是设计师工作生活必不可少的工具,比起正儿八经的作品集,设计师的草稿本其实也是十分有趣的,它是设计师脑海里千奇百怪想法的随手记录。

Shiyu:本人是被胁迫公开草稿本的卑微设计师

手绘装备:iPad Pro+Procreate

以下是被迫营业现场对话

△ 给「老同学」的公众号形象草稿

老同学:「好久不见~我记得你画画挺好的~帮画个形象呗~我现在在做一个公众号,需要*&%¥#……你明白吧?你就简单画一画就好~谢谢啦」

我:「….」

△ 给「朋友」画的头像草稿

朋友:「好久不见~我记得你之前帮谁谁画的那个头像挺不错的~也帮我画一个呗~我现在在做blablabla,需要*&%¥#……你明白吧?很简单吧~谢谢啦」

我:「….」

Dajing:我的草稿本就是平时画画原型图或者需要做文档整理规范的时候拿出来画画草图,对我来说我的草稿本是帮我理清思路的一个很好的助手。

手绘装备:A4点格草稿本+马克笔

 △ 智能配色草稿

△ 中后台加框草稿

Dajing:里面有当时做中后台框架的时候导航的原型,还有之前做智能配色的时候HSB色环推演的草图,还有些文档维度整理草图,画出来方便查看也便于直观梳理自己的逻辑。

Wanru:画画是我记录生活、寻找灵感的一种方式。

手绘装备:MUJI笔记本、水彩、铅笔、马克笔等等…

△ 冲绳旅行水彩

Wanru:水彩是我最喜欢的绘画形式,非常浪漫,食物也是我擅长画的题材。这是在冲绳旅行时的第一顿晚餐,新鲜的海鲜和爽口的啤酒也具有明亮的颜色,让人忍不住想去表达。烧肉店的杯垫被我带了回来,日本的平面设计做得很好,是很好的素材~

△ 电影小漫画

用小漫画记日记的习惯已经很多年了,我是非常喜欢漫威的,这是13年《钢铁侠3》上映和两个朋友看电影的场景。这个场景必须用美漫的风格了!偶尔会尝试各种画画风格。

△ 随手小速写

偶尔会画些小速写,勾一些人物、小物品、小动物,速写可以很好地练习造型能力。

Zoey:作为一个热爱喝奶茶、追番和打手游的肥胖又无助的设计师,感觉累了就在草稿本上放空自己。

手绘装备:iPad Pro+Procreate & Sketches Pro

△ 记录日常生活的草稿

Zoey:我很喜欢用草稿本记录自己的生活(食物为主),喜欢的电影角色也会简单画下来。

△ 二次元小画

作为半个二次元 ,草稿本当然也被满屏的羞耻占领~ 这两张草稿是我画的Persona 5里面的人物,因为我个人真的特别喜欢P5 ,对于自己喜欢的事情即便996也会熬夜画下去~

Dribbble 十年重磅改版背后,值得关注的7大亮点

雪涛

Dribbble 经历了资本入驻、创始人出走之后,最大的事情应该就是这次改版吧?这个全球最大、最有影响力的设计师社区的每一个动作都必然会牵扯着每个设计从业者的注意力,新版背后到底有哪些变化?这些变化又是出于什么样的想法来修改的?看看 Dribbble 的官博是怎么说的吧:

在过去的10年当中,Dribbble 已经成长成为一个全球性的社区,成千上万的人从这里获得启发和灵感,助力设计,而我们从最初分享设计作品小样的创意社区,逐步成长为一个全球设计师产品和作品集展示和社交的平台。在此,而我们也第一次开始问自己一个简单的问题:【我们到底是在做些什么?】

今天,我们很高兴宣布,我们在过去的10年当中首次进行了彻底的重设计。

Dribbble 的新时代

在过去十年当中,我们所设计的 Dribbble 页面的特点,是将设计师的作品和内容放在首位,所以叫我们不追随潮流,采用了极简风格的设计,即使潮流来来去去,它们也只是 Dribbble 展示内容的一部分。我们提供了一幅未经修饰的画布,这样就可以和最疯狂最激进的设计探索相辅相成。不过,这么多年来,Dribbble 这种「隐形」的设计,在视觉美学上确实和时代脱节了。这次,我们创建了一套有着一致样式的设计和代码库,用以替代以往不断修改、庞大且不一致的代码。

「我们新的设计系统旨在保持整个视觉和谐的同时,展示你的创造力。」

如今,我们正在改进 Dribbble 的界面,以更加干净的布局、统一的设计系统、更加简化的配色方案、更加轻便的代码库(加载也更加迅速),以及全新配置的文件,来更好地帮你将作品推到最前沿,正确而合理地展示你的创作和个性。

我们新的设计系统旨在保持整个视觉和谐的同时,展示你的创造力。它是你分享设计作品和创造力的理想画布,而新的美学特质也可以更好地反应此刻我们的公司的气质。

全新的设计师个人页面

在进行重设计的时候,我们明确知道,我们要完全重新思考社交化的设计师作品展示,并且将创意更大化地呈现。对于 Dribbble Pro 用户和 Pro Business 订阅者,你现在拥有一个全新的、经过全面修改的设置和配置页面,可以在 Dribbble 上充分展示自己的个性,

你的页面,你的个性

Pro 用户和 Pro Business 用户可以通过上传你自己的首图和定制化的欢迎语,来个性化你的个页面。

你还会注意到,你的个人页面还可以上传更大的照片,这可以让你的作品对于页面的访客、你的客户、招聘设计师的企业人事而言,看起来都是非常出挑的。新的网格布局是可以自定义的,因此你可以充分完美地设置和展示内容。

此外,我们还修改了「关于我们」这个部分,新版当中,这个部分你可以将所有的个人信息汇集到一起,以便完整而充分地展示你的个人经历、展示简历和技能。

寻求工作机会?

如果你正在寻求工作机会,新的信息发送组件,确保了你的客户或者招聘企业可以一键联系到你,他们可以直接从你的个人资料页向你发送信息,非常轻松地和你取得联系。

面向所有人的新个人页面

当然,并非是只有 Pro 和 Pro Business 用户才能拥有高度定制化的个人页面,无论你是普通用户、内容创作者还是内容策划人,Dribbble 上每个普通用户的个人页面也都会升级。尚未订阅 Pro 服务的设计师会注意到,他们的个人页面会更加简洁,而设计作品会以更加聚焦的形式,吸引到每一个访客的目光。

全新的收藏页

我们将以往的带有分享功能的收藏合集页(之前叫 Buckets)给翻新了,你可以精心策划整页内容和案例,从一个情绪板到完整的项目,这意味着,借助这个收藏页功能,你可以更加轻松地在 Dribbble 上寻找和搜集灵感。

给策划人的个人页面

现在,我们可以非常自豪地宣布,即使你并没有将 Dribbble 作品给分享出来,每个人也都会拥有一个策划人页面,你可以在其中搜集和整理自己喜欢的作品,来展示你的个人品味,通过保存别人的作品,来创建新的合集,我们会自动将它添加到你的个人页资料页当中,让全世界的同好因为品位而关注你。

升级发现页

我们在整个改版设计过程中,面临最大的挑战,其实是图片网格,因为这是绝大多数用户每天浏览图片、发现设计灵感的地方,我们有意识地去弱化 Dribbble 本身 UI,避免喧宾夺主,让每个用户的作品成为视觉焦点,减少噪音。

当然,我们还未完成…

2020 年才刚刚开始,我们迫不及待地想要展示我们计划中的一切。从案例研究到更好的视频支持,再到作品集展示,摆在我们眼前的改版路线图足以证明我们的雄心,所有的这一切都是为了让全球的设计师能够从中获益,走向成功。请期待我们进一步的改版升级吧!

文章来源:优设    作者:Dribbble

2020年最值得设计们保持关注的8个UI设计趋势

雪涛

快速变化的技术每年都在影响着设计趋势。作为设计师,我们需要时刻保持关注,对设计趋势拥有较高的敏感度,不断学习,扩充自己的设计技能,目的是为了跟上的市场环境。基于我的调研,经验和观察,我甄选了在2020年你将会看到的最为关键的8个UI/UX设计趋势。让我们一起来看看吧。

动效插图

插图被应用到APP中已经有很长一段时间了,它们在最近几年的演变令人印象深刻。插图作为一种非常流行的设计元素,为我们产品的整体产品增加了情感化体验。插图非常能抓人眼球,尤其是在融入动效后会显得更加的自然,将产品带入生活的气息,使得产品功能更加突出,同时也增添了更多的细节和个性。

△ Welcome to Swiggy by Saptarshi Prakash

△ Onboarding animations — Virgil Pana

另一个好处是使用动效后,能抓住用户的注意力使其能够更加沉浸在你的产品中。动效同样是讲好品牌故事,产品或者服务最有影响力的途径之一。

微交互

微交互存在与每一个网页或者app界面中。每当打开你最喜欢的那些应用时,都有机会看到它们,比如像Facebook中就有大量不同的微交互,我认为「Like」功能就是一个完美的例子。有时,我们几乎意识不到它的存在,因为它们非常的不显眼,非常自然地融到界面中去了。但是,如果当你把这些微交互移除掉的话,你又会非常快的注意并能感受到一些非常重要的东西丢失了。

△ Menu toggle close animation — Aaron Iker

△ Tab bar active animation — Aaron Iker

一般来说,在UI/UX中即使非常小和细节处的设计都可能会带来巨大的冲击力。微交互就是完美的证明,细节和对它的关注能极大的改善产品的整体体验,并让产品体验上升一个台阶。每年,新设备的发布伴随着新的机会,能给产品塑造新品牌和创造富有创意的微交互。

3D图形

3D图形设计几乎无处不在,比如在电影,游戏或者运营广告里等等。3D图形设计早在10年前就出现了然后一直在不断提升和进化。手机和web技术进展迅猛,新的web浏览器能力打开了3D设计新世界的大门,这给了设计师们在web和手机界面中创造炫酷3D设计的机会。

△ 3D flip menu by Minh Pham

△ Car health report UI by Gleb Kuznetsov

创造并整合这些3D创意设计到web和手机界面中需要特殊的技能和花费大量的工作,但这些付出会得到回报。

△ Apple AirPods Pro landing page

3D设计对于产品和服务来说,具有非常大的吸引力,例如在交互上能够支持用户360度查看产品,从而大大提升整个的产品体验。

在2020年会有更多的品牌利用3D渲染模型的产品和服务去模仿线下购物体验。

VR设计

VR技术在2019年有一个巨大的飞跃。最近的一年我们激动地看到了头戴式设备有了非常大的发展,尤其是在游戏领域。我们需要记住的是,游戏行业经常在引领着新技术的发展并落地到实际的产品设计中。研究表明,VR也不例外,在Oculus Quest于2019年推出后,许多机会为其他行业打开了大门。Facebook CEO 扎克伯格已经测试了激动人心的手部交互功能,并正式宣布将在2020年初为Quest进行更新。

△ Oculus Quest — hand interaction feature

△ PlayStation Virtual Reality Website Design by Kazi Mohammed Erfan

索尼和微软计划在2020年夏季发布他们的新设备,这就给VR技术带来巨大的机会和发展空间。

学习VR 可以阅读优设这个专题:https://www.uisdc.com/zt/vr-design

AR设计

在最近几年,我们能看到在AR(增强现实)这块有了很大的进步和惊喜。世界引领着科技公司在AR开发方面进行了巨大的投入,所以我们应该期待这项技术在2020年有更大的成长和发展。苹果公司也发布了他们自己的AR套件叫AR KIT3来帮助设计师和开发者在他们的产品中打造AR体验。

△ Apple ARKit 3 by Apple

△ Public transit app by Yi Li

△ House of Plants AR Concept by Nathan Riley

在AR空间里会有无限的机会和创意去打造一个新的品牌和激动人心的体验。为AR做UI设计会在2020年成为一大趋势,这就要求设计师们在面对创造AR产品体验前,应该去准备和抓紧学习新的工具,原型之类的知识。

学习AR 可以阅读优设这个专题:https://www.uisdc.com/zt/ar-design

新拟物化设计

一般来说,拟物化设计是指以现实风格/方式创造出来与现实中的物体相匹配的设计元素。不断发展的VR/AR技术以及在各大最流行设计平台(Dribbble,Behance等)上展示的设计作品趋势来看,预示着拟物化的回归,但这次换了个更现代,更酷略微高大上的名字叫「新拟物风」(也叫Neumorphism)。

△ Skeuomorph Mobile Banking | Dark Mode by Alexander Plyuto

△ Simple Music Player by Filip Legierski

△ Sleep Cycle App — Neumorphism Redesign by Devanta Ebison

你可能注意到了:Neumorphism代表了丰富细节和明确的一种设计风格。高光,投影,发光,这些细节非常令人印象深刻。Neumorphism风格已经鼓舞了全世界一大批的设计师创作作品,它也会成为2020年最大的设计趋势。

学习新拟物风可以阅读优设这个专题:https://www.uisdc.com/zt/neumorphism

不对称布局

最近一年我们也注意到一种不对称风格正在快速发展。传统基于「模板」的布局肯定会消失。这种设计趋势给2020年的设计带来了更多的差异化。合适的不对称风格将会在我们的作品中增多一大批不同的性格,火力以及个性,所以设计不再单纯的基于模板。

△ Limnia Fine Jewelry Grid — Zhenya Rynzhuk

△ Carine fashion store — selection screen concept — Dawid Tomczyk

当设计这种不对称风格时,设计师拥有非常多的选项以及巨大的发挥空间。但是,想设计好这种不对称风格需要大量的练习,它绝不是将元素随机的摆放在网格中,而应该小心使用和实现它们,时刻需要把用户的诉求考虑到设计中。我们并不想让用户迷失在我们的产品中,对吗?

用户故事

故事在整个用户体验中扮演着非常重要的角色。你可能经常会在着落页看到它作为品牌介绍,产品或者一个新的服务。讲故事就是利用创意的形式把信息传递给用户。这可以通过强大的视觉元素来呈现(字体,插画,高清图片,颜色,动画,交互元素)。

△ A+WQ / Young Lab Page Story of The Week Animation by Zhenya Rynzhuk

△ Free Sketch Template :: Mimini by Tran Mau Tri Tam

讲故事可以帮助产品创造出品牌和用户之间积极的情感连接。讲故事可以为你的产品创造出非常多的记忆点,让用户感受到自己就是产品或服务的一部分,他们便会更加愿意使用你的产品。话虽如此,讲故事也是一种非常有效的营销手段,它可以极大地提高你的产品/服务的销量。讲故事作为一种非常成功的手段,将在2020年继续发扬光大。

总结在2020年非常值得关注的8个设计趋势

1. 动态插图

通过把动画和插图进行结合,我们可以使得设计变得更加突出,并把它带入用户的日常生活,为产品赋予了的细节和个性化。

2. 微交互

微交互被证明是可以在当用户注意到他们是能够带来非常大的惊喜体验,它能够有效的提升整个产品的用户体验并把产品的品质提升一个等级。

3. 3D图形的应用

新的浏览器技术打开了3D图形应用的大门,能够给设计师带来非常大的创意机会去打造让人惊叹的3D图形设计应用到网页和手机APP中。

4. 虚拟现实

游戏行业将迎来新的变革,新的技术能够应用到产品设计中。

5. 增强现实

在AR空间中拥有无限的机会去创造新的品牌和令人激动的新体验。为AR技术服务的UI设计将在2020年成为主要趋势,设计师需要位为之准备并去学习新的工具,原型,当真的需要你去做一款AR应用时就需要用到。

6. 新拟物风

AR/VR技术不断发展,以及在各大流行设计平台上大量涌现的写实设计作品预示着拟物风的回归,但只是这次换了个新的更加现代化的名字。

7. 不对称布局

运用不对称布局能让设计创意变得拥有更多选项和机会。虽然,设计一个成功的不对称布局需要投入大量的练习和时间。

8. 讲故事

讲故事就是利用创意形式把信息传递给用户。讲故事是一个非常好的营销工具,可能会大大增长产品的销售额或服务。

文章来源:优设    作者:彩云译设计

2020 年最火的新拟物化如何落地应用?

雪涛

最近关于新拟物化 Neumorphism 的风太大,简直是传遍大江南北无人不知。对于它的看法大家也都众说纷纭,大部分的观点都集中于:第一看过去非常的高大上,再仔细琢磨一下就感觉只能是飞机稿中的战斗稿。对此我表示非常的理解,毕竟在国内体制下的用户界面设计基本都延续商业设计的命脉──低效能、不实用、不能带来良好转化的东西统统给我丢掉,哪怕是用户体验也是建立在商业目标驱动下的存在。

尽管观点如此,我还是想为新拟物化这位诞生在不平凡 2020 年的新生儿稍稍正个身,它并非空穴来风,也并非完全无法落地使用,相反如果合理加以优化应该能达到意想不到的双赢效果。

新拟物化的由来

一切的开始都源于一个叫 Alexander Plyuto 的设计师在各平台发布了一个他的新作品──「Skeuomorph Mobile Banking(拟物化手机银行)」。

在去年末的时候这名设计师还一直沿用 Skeuomorph(拟物化)这个名词来命名自己的一系列设计作品,直到 HYPE4 的 CEO-Michal Malewicz 写了一篇关于此风格的文章,并赋予了它一个新名词 Neumorphism(New+Skeuomorphism),自此之后大家就都照着这个新名词进行传播了。

在详解新风格之前,先让我们回忆一下这些年移动端用户界面设计风格的演变历程。自 2013 年苹果推出了 iOS7 之后开始刮起的扁平风潮,所有走在设计前沿的大厂都开始不约而同地对自己家的 app 进行了大刀阔斧的改版。

这扁平风一刮就是 7 年,仔细分析一下就能明白为何 ta 如此长寿:内容优先的认知简约,不仅拓展性强且具有能的特性,解放了一大堆「手活」不是那么好的设计师,让他们有更多时间专注在设计解决问题的命题上。

但就算一个风格再适应市场的需求,用户和时代还是会对它逐渐疲惫,审美疲劳和新的市场需求都会催生新的变革。

新拟物化设计语言解析

1. 新拟物化≠轻拟物

第一次看到这个风格介绍的时候险些以为就是曾经的轻拟物重返江湖了,但仔细看看原设计师输出的设计原则,发现确实是完全不同的 2 种定义。

轻拟物从本质上来说是 Y 轴面原质化层级分离的,而新拟物是在 Y 轴面不分离的情况下物理化拟态。

来看一个轻拟物与新拟物卡片的比对:

从上图可以感受到新拟物在保留轻质感的同时,更贴近事物的物理还原,但真实感与舒适度带来的代价就是它的辨识度和对比度明显较其他风格低了很多,这也是它被大家吐槽飞机稿中的战斗稿的重要原因之一。

2. 新拟物化控件示例

原设计师对新拟物化的「浅色版」控件规范如下,基本涵盖了核心的界面设计控件,整体对于控件的定义就在于良好使用投影和渐变来打造物理化界面肌理。

另外还有可以良好适配当前流行黑色模式的「黑色版」。

新拟物化的改良与应用

在了解新拟物化的设计语言特点之后,大家应该都发现这种风格的设计是有一定局限性的,它并不适用于一部分商业产品,大部分时候也不适合全局控件应用。那么如果我们想要把新拟物化应用到我们的落地项目设计中,需要注意哪些地方,并进行什么样的改良呢?

1. 深浅模式叠加解决弱可视难题

新拟物的按钮肌理很多是建立在素色白板上的浅色按钮,如果继续沿用浅色按钮,且不说色弱用户的可视问题,普通用户的操作行为也会大打折扣,所以这里我们建议将新拟物的深浅模式叠加来使用,如下图:

2. 局部高光使用解决层级难辨问题

如果将新拟物化全控制使用,确实容易造成界面层级混乱的问题,因为毕竟它的设计语言就是 Y 轴面不分离的设计定义,但如果我们合理选择它来作为局部高光,应该大部分情况下还是不错的。如下图,我们仅在银行卡部分使用新拟物化(深浅双模式均可用),其他的控件部分保持扁平,使用 2 个风格相融合的方式可以良好保障层级的划分:

3. 拿什么解决开发崩溃的问题?

之前看到很多文章在转发一个生成新拟物化 css 代码的网站:Neumorphism.io,说是用这个就可以轻松解决开发的问题。

然而事实的真相总是令人落泪的,这个网站提供的 css 代码只是网页代码,移动端是完全用不了的。而且就算有对应的 css 代码,对于开发来说也是远不够的,他们还是要写框架来支持这套 css 代码,不然是跑不起来的。所以我们要如何解决开发小哥哥手写新拟物化设计稿崩溃的问题呢?

很简单,就是给他们切图。按钮的软点击切两张状态图,卡片背景只需要切一张,ppduck 压缩走一波,对 app 性能的影响基本可以忽略不计(因为上文我也说过了这种风格不大可能大面积或者全界面应用)。

至于新拟物风不适用的场景大家应该都心知肚明了,信息承载大,层级关系复杂,我就不一一举例了,基本就涵盖了大部分现在市面上主流的产品的大部分场景。但即便如此我们还是需要对新的设计保有一丝激情与希望,不要轻易的去否定,毕竟新生事物总是有它的魅力与独到之处。

文章来源:优设    作者:Nana的设计锦囊

"从客户端中检测到有潜在危险的 Request.Form 值"的解决方案汇总

seo达人

在一个asp.net 的项目中,前端通过ajax将富文本中的文字内容post到服务端的一个ashx中,在ashx中尝试读取参数值时,

结果报错:“从客户端中检测到有潜在危险的 Request.Form 值”

#事故分析
由于在asp.net中,Request提交时出现有html代码字符串时,程序系统会认为其具有潜在危险的值。会报出“从客户端 中检测到有潜在危险的Request.Form值”这样的Error。

而富文本中的内容是包含html代码的,所以...

#解决方案:
1、前端对富文本字符串进行encodeURI编码,服务端进行HttpUtility.UrlDecode解码操作;
前端代码:

var str = '<p><span style="color: #00B0F0;"><em><strong>我想留在你的身边,</strong></em></span><br/></p><p><span style="color: #7030A0;"><strong><span style="text-decoration: underline;">深情款款多么可怜;</span></strong></span></p>';
    $(function() {
        $.ajax({
            type: "post",
            url: "TestHandle.ashx",
            data: { Title: 'jack', Content: encodeURI(str) },
            success: function (data) {
                $("#div").html(data);
            }
        });
    });
后端代码:

    public void ProcessRequest(HttpContext context)
    {
        string str = context.Request["content"];
        string content = HttpUtility.UrlDecode(str);
        context.Response.ContentType = "text/plain";
        context.Response.Write(content);
    }
效果图:

2、前端不以form的方式提交,直接以json方式提交,服务端从request的body中读取数据,然后反序列化,得到信息;
前端代码:

    var str = '<p><span style="color: #00B0F0;"><em><strong>我想留在你的身边,</strong></em></span><br/></p><p><span style="color: #7030A0;"><strong><span style="text-decoration: underline;">深情款款多么可怜;</span></strong></span></p>';
    var temp = { Title: 'jack', Content: str };
    $.ajax({
        type: "post",
        url: "TestHandle.ashx",
        contentType:"application/json;charset=utf-8",
        data: JSON.stringify(temp),
        success: function (data) {
            $("#div").html(data);
        }
    });
后端代码:

    string bodyText;
    using (var bodyReader = new System.IO.StreamReader(context.Request.InputStream))
    {
        bodyText = bodyReader.ReadToEnd();
    }
    dynamic bodyObj = JsonConvert.DeserializeObject(bodyText);
 
    context.Response.ContentType = "text/plain";
    context.Response.Write(bodyObj.Content);
效果图:

#其他场景的解决方案:
1、aspx页面,当前页面进行form提交
打开当前.aspx页面,页头加上代码:validateRequest=”false”,如:

<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="false" CodeFile="default.aspx.cs" Inherits="default" %>
该方法不推荐,还有一种修改web.config配置文件的方法,强烈不推荐,就不写在这里了;

2、在ASP.NET MVC中的解决方案
1)、针对某个实体类的单个字段设置 [AllowHtml] ,这样提交的时候,系统就会放过该字段。

2)、前端代码:

    var str = '<p><span style="color: #00B0F0;"><em><strong>我想留在你的身边,</strong></em></span><br/></p><p><span style="color: #7030A0;"><strong><span style="text-decoration: underline;">深情款款多么可怜;</span></strong></span></p>';
    $(function () {
        $.ajax({
            type: "post",
            url: "Home/Test",
            data: { Title: 'jack', Content: str },
            success: function (data) {
                $("#div").html(data.ok);
            }
        });
    });
3)、后端代码:

    public class NewInfo
    {
        public string Title { get; set; }
        [AllowHtml]
        public string Content { get; set; }
    }
 #写在最后
 该文只是浅显的总结一下,其中涉及的xss方面,没有详细考虑,欢迎指正!

JavaScript中Array数组的some()函数的详解

seo达人

前言

开发中,经常会用到js的Array数组的各种迭代函数map(),filter(),some(),every(),forEach(),find() findIndex(),也是在ES6中新增一些遍历函数。同样是不是也是一道面试题,说说ES6新增的一些新特性????



✍开始正文some()函数



✍一、对some()函数的定义:



some():用于检测数组中的元素是否满足指定条件(函数提供);

some()方法会依次执行数组中的每一个元素:



如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测。

如果没有满足条件的元素,则返回false。

注意:



some()不会对空数组进行检测。

some() 不会改变原始数组。

✍二、浏览器支持

表格中的数字表示支持该方法的第一个浏览器的版本号。



✍三、语法



array.some(function(currentValue,index,arr),thisValue)

1

参数说明:



✍三、示例



<script>

var ages = [4, 12, 16, 20];



function checkAdult(age) {

    return age >= document.getElementById("ageToCheck").value;

}



function myFunction() {

    document.getElementById("demo").innerHTML = ages.some(checkAdult);

}

</script>


淘宝、拼多多为什么要让你玩游戏?

前端达人

从支付宝蚂蚁森林开始,游戏化产品开始回归移动互联网领域。拼多多上线“多多果园”后,通过玩游戏免费领水果的玩法,引发了电商游戏化产品的风潮。淘宝、天猫、京东、苏宁等互联网平台纷纷推出了自己的游戏产品。那么游戏化到底能够为产品带来什么呢?
一、什么是游戏化
游戏化(Gamification)是指将游戏元素和游戏设计技术应用于非游戏场景,用游戏化机制创造乐趣来更好地实现目标。也就是说,通过游戏的方式,为非游戏化的场景或产品赋能,让用户在使用产品过程中获得更多的乐趣,创造更大的产品价值。



1.png


随着移动互联网的快速发展,人口红利逐渐消失,电商领域开始从增量市场进入存量市场。当用户数量无法持续有效增长时,就需要深挖存量用户的价值,通过精细化运营,提高DAU(用户日活)来获取更大的用户价值。
2016年8月27日,支付宝上线蚂蚁森林。2017年数据显示,由于蚂蚁森林拥有远超平常应用的用户黏性,产品已拥有超过2亿用户,带来的日活不可小觑。
2017年8月6日,支付宝又上线了蚂蚁庄园。2019年11月20日,蚂蚁庄园官方微博对外发布了运营大数据。该数据显示,蚂蚁庄园上线至今,全国约4亿网友捐了150亿个鸡蛋。
这两款游戏化产品引爆了用户的热情,为传统的支付工具添加了游戏化属性,开创了移动互联网时代“种树养鸡”的娱乐化模式。


2.png


随后,2018年4月,拼多多上线了“多多果园”,在电商领域率先开启了游戏化模式。于是游戏化产品在电商平台上开始生根发芽。
2018年11月,京东上线了“种豆得豆”;
2019年1月,淘宝上线了“金币庄园”;
2019年5月,苏宁易购上线了“云钻魔法狮”;

据不完全统计,主流电商都推出了多款游戏化产品。清单如下:


3.png


二、游戏化产品的价值
目前在电商领域,游戏化产品主要是作为流量产品存在的,核心目标是为了增强平台的用户粘性,盘活现有的存量用户,提高用户活跃度。

4.png


在游戏化产品未出现前,各大电商基本采用的是“签到”送奖励的形式,提升用户活跃度。从短期效果上,签到同样可以带给用户强烈的激励。然而虚拟币在购物过程中才能形成价值感知,所以单纯虚拟币总量的积累无法形成持续性的激励,用户容易产生厌倦心理。
同时为了平衡商业价值,虚拟币必然带有一定的使用门槛,因此签到价值与用户的购买链路无法即时匹配。用户在购物过程中,无法使用虚拟币时,必然会产生一定的负面情绪。
5.png



为了弥补签到行为中情感体验的缺失,电商平台开始通过游戏化对“签到”产品进行了包装升级。相比较传统的签到产品,游戏化产品的优势在哪里呢?
我认为有以下几个方面:
6.png


1、形成内部触发
根据上瘾模型理论,用户上瘾需要有一个“触发”。而内部触发是产品在用户内心、情感层面上建立的一种潜意识的认知,是产品和用户之间最有力的纽带。
基于游戏“八角行为激励模型”,在产品设计中,可以通过多种手段不断激励用户参与到游戏中(具体内容参见下一篇文章)。用户进入了游戏后,无论是激励体系、游戏玩法,还是视觉设计,都可以更好的触发用户的情感体验点。
同时成长体系、成就体系、好友排名等激励,为用户设定了更加丰富和明确目标,让用户更持久的投入到游戏的玩法中,并逐步在用户意识中形成内部触发,让产品具有更高的用户粘性。


7.png


例如蚂蚁森林对于用户不仅仅是每日7点左右收取能量,更多的是在拿起手机不由自主的打开支付宝,查看有没有能量可以收取。
2、深度激活用户
传统的签到为每日活动,用户更倾向于完成即走,用户链路短,无法挖掘用户的潜在价值。
而游戏玩法丰富,增强了用户链路,同时将玩法细化到小时级的颗粒度,激活用户的活跃度。例如在金币庄园中植物在4个小时内即可成熟采摘,促使用户多次打开产品收取果实。
游戏的任务也更加灵活,通过频次可以满足不同的用户的需要。深度玩家可以反复多次完成任务,普通玩家可以灵活参与,因此对用户的覆盖更广,也有利于普通用户升级为深度玩家。多次和定时的任务,用户需要频繁的进出游戏来获取奖励,从而极大的提高了用户的活跃度,逐渐培养用户玩游戏的习惯。


8.png


3、增加用户停留、提高用户转化
用户的停留时长其实是一种零和博弈,面对激烈的市场竞争,用户在一个平台的停留时长增加,必然会导致另一个平台停留时长的下降。因此大电商在关注用户活跃度的同时,也开始争夺用户停留时长。
游戏化产品拥有更加细化的游戏玩法和任务,无形之中增加了用户的停留时长。同时也为产品提供了更多的机会,埋下各种用户转化触点,提高用户的转化率。例如在游戏任务中,用户需要浏览店铺和商品获得收益。或者在游戏过程中会推送各种优惠券,激励用户转化。
9.png


那么游戏链路和玩法复杂后,会带给用户压力和困扰吗?答案是肯定的。但是由于人们普遍都是“逐利”心理,当面对利益时,用户很容易忽视时间成本和操作成本。
因此游戏中的各种任务多而繁杂,频繁出现的弹窗带来了不好的用户体验。但是对于用户而言,细化的任务体系和营销弹窗更多的是收益,因此用户不会产生大的心理压力和操作负担,反而乐于接受,完成率也更高。于是用户在无意识中会频繁的接触店铺和商品,让转化也变得更加的流畅和自然。
4、减少用户流失
一旦参与到游戏中,用户不仅仅收获了各种虚拟币,还投入了自己的时间和情感,这就是用户的沉没成本。随着时间增加,产品的粘性越强,用户流失几率也就越低。

三、游戏化产品分类

根据电商平台现有的游戏化产品,我们从游戏模式上大致可以分为4大类。


10.png


1、购物抵现类
仿照线下的代金券,电商推出了平台内的代金币。一方面可以吸引用户参加各种运营活动,同时也可以占领用户心智。当出现购物需求时,用户会优先考虑消费代金币完成交易。
淘宝“金币庄园”、京东“种豆得豆”、苏宁“云钻魔法狮”都是这类产品。而深谙游戏玩法的拼多多,则是直接推出了“现金签到”的方式,现金的认知相对于代金币更加强烈,消费方式也更加灵活,可以提现或购物,增强了玩法的价值感和吸引力。


11.png


2、实物领取类
这类游戏以拼多多“多多果园”最为典型,用户只要给选择的果树浇水和施肥,长成后即可获得一份实物水果。
相对于代金币的购物抵现金。实物兑换的目标性更强,而且摆脱了购买交易的概念,让用户感觉自己没有付出任何成本,却得到了一份水果,用户的获得感更强;
3、商品兑换类
用户通过游戏获得奖励,可以兑换相应的商品。例如拼多多“多多赚大钱”、“多多牧场”等。商品兑换模式,跟实物领取方式类似,给用户树立了更加明确的目标,让用户持续的投入精力。而成功兑换后,会带给用户更强的获得感,激励用户继续玩下去。
4、公益捐献类

以蚂蚁森林和蚂蚁庄园为典型代表,而淘宝里的“野生小伙伴”、天猫里的“童话镇”也是此类题材。这类游戏更多是通过公益捐献的形式赋予用户更多的使命感,吸引用户参与,但是带来的用户商业价值不高。目前“野生小伙伴”已经下架,“童话镇”在天猫平台的露出并不明显,用户的感知较弱。

四、总结

爱玩是人类的天性。因此游戏以及游戏化的产品,天然具有高用户粘度和用户活跃度的特质。但是市场上有无数的游戏化产品,为什么有的异常火爆,有的无人问津呢?

在产品设计时需要注意以下几点:

1、游戏化产品之所以受到用户的喜爱,利益点仅仅是表层驱动,游戏的玩法才是产品真正的核心。因此需要通过建立完善的游戏化体系,提升产品的竞争力;

2、游戏化产品竞争激烈,需要不断的进行玩法创新,才能带给用户差异化体验。例如拼多多系列产品,通过实物领取和兑换,带给了用户全新的体验感受,对用户的吸引力也更强;

3、游戏化产品需要赋能商业目标,在实现了用户活跃的基础上,还需要提升用户转化;


作者:子牧先生 

转自 :子牧设计笔谈

640.png

640.png

640.png

640.png

640.png

通过JavaScript制作table表格隔行变色

seo达人

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>隔行变色</title>

</head>

<body>

<table id="mytable" align="center" width="80%" border="1">

<tr bgcolor="#cccccc">

<td>aaa</td>

<td>aaa</td>

<td>aaa</td>

</tr>

<tr>

<td>bbb</td>

<td>bbb</td>

<td>bbb</td>

</tr>

<tr>

<td>ccc</td>

<td>ccc</td>

<td>ccc</td>

</tr>

</table>

<script type="text/javascript">

window.onload=function(){

//获取mytable中标签名为tr的字节点

mytable=document.getElementById("mytable");

trs=mytable.getElementsByTagName("tr");

len=trs.length;

flag=true;

for(i=0;i<len;i++){

if(flag){

//每隔一行设置背景色

var tr=document.getElementsByTagName("tr")[i].setAttribute("bgcolor","#cccccc");

flag=false;

}else{

flag=true;

}

}

}

</script>

</body>

</html>


js_判断浏览器内核与修改元素样式

前端达人

/Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);



<script type="text/javascript">
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
//以下进行测试
if (Sys.ie) document.write('IE: ' + Sys.ie);
if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);
if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);
if (Sys.opera) document.write('Opera: ' + Sys.opera);
if (Sys.safari) document.write('Safari: ' + Sys.safari);
</script>


PC端只有Chrome有Safari字段吗?为什么不需要判断其他浏览器?
其实360,QQ等浏览器的userAgent字段也会带有Safari字段,但是由于他们基于Chrome二次开发的,所有也会携带有Chrome字段。
所以「匹配规则:拥有Safari字段,并且没有Chrome字段」就可以了。


接下来是修改元素样式





<html>
<head>
    <style>
     #a{
        width:700px;
        height:300px;
        font-size:50px;
        color:red;
        background-color:grey;
        z-index:2;
        position:absolute;
        top:1300px;
        left:200px;
        display:none;
    } 
    </style>
</head>
<body>
    <div id="a"></div>
</body>
<script type="text/javascript">
    //假设想修改display为block
    function modify(){
        //1.原生Js法
        var a= document.getElementById("a");
        a.style.display="block";
        //2.用JQuery的css方法
        var a =$("#a");
        a.css("display","block");
        //3.用JQuery的attr方法
        var a =$("#a");
        a.attr("style","display:block");
    }
</script>
</html>


这样就可以根据不同浏览器写出不同的样式适配啦



JS中数据类型转换

seo达人

JS中数据类型转换

目前为止,我了解到的JavaScript中共有6种类型。通过typeof关键字可以查看类型名称。



数据的类型:

字符串:若值为字符串,则显示为String。字符串使用单引号或双引号括起来。在控制台显示为黑色。

数字:若值为数字,则显示为Number。在控制台显示为蓝色。

布尔值:若值为布尔值,则显示为Boolean。它的值只有”true”和”false”。

对象:若值为对象,则显示为Object。

未定义:若值未定义,也就是仅仅声明,但未进行赋值,则显示为Undefined。

空值:若值为指向不引用对象的指针,则显示为Null,它与Undefined不同,以后慢慢深入了解。



以下表格详细写出了各种情况下相互转换的结果,可作为辅助记忆。



转换为字符串 转换为数字 转换为布尔值 转换为对象

undefined “undefined” NaN false throw TypeError

null “null” 0 false throw TypeError

true “true” 1 new Boolean(“true”)

false “false” 0 new Boolean(“false”)

“” 0 false new String("")

“1.2” 1.2 true new String(“1.2”)

“1.2a” NaN true new String(“1.2a”)

“aaa” NaN true new String(“aaa”)

0 “0” false new Number(0)

1 “1” true new Number(1)

NaN “NaN” false new Number(NaN)

Infinity “Infinity” true new Number(Infinity)

[] “” 0 true

[9] “9” 9 true

[“a”“b”] “a,b” NaN true

在Js中,数据类型可以相互转换,转换的方式有两种,隐式转换和强制转换,首先来说一些隐式转换。在进行代码书写时,要经常提醒自己所使用的元素是什么数据类型,在进行某些操作后是否会导致数据类型的变化,原因就是Js会对数据进行类型的隐式转换。



隐式转换举例:

(+)加法运算的隐式转换:加号两边只要出先了字符串,就自动将两者均转化为字符串,使两个字符串发生“拼接”,最后生成的结果也是一个字符串;如果前后都不是字符串,则转化为数字类型进行计算。



(-、*、/、%)其他算数运算的隐式转换:前后都转化为数字类型进行计算。



(!)逻辑非的隐式转换:他会将他后面的变量或表达式转换为布尔值。



(<,>)比较运算符的转换:如果前后存在一个数字,会对另一个转化为数字进行比较;如果前后均为字符串,会依次比较对应字符的编码大小,老大比老大,老二比老二,依次进行。



(&&,||)逻辑运算符的转换:先将前后都转化为布尔值再进行判断,要记住的是,只有undefined,null,0,””,NaN会转化成为false,其他都是true。



(== 、===)这里作为补充说明,null与Undefined相等但不全等,NaN与任何都不相等。



强制转换的方式:

1.转化为字符串

String(里面写待转化的内容):没什么好解释的,就是强制将你所看到的转化为你所看到的。

toString(里面写目标数字是几进制),写法为:待转化内容.toString(目标内容是几进制)。括号内不写时默认为10。

toFixed(保留小数的位数),写法为待转化内容.toFixed(保留小数的位数),存在精度误差。



2.转化为数字

Number(),只有所转化内容在肉眼看到的全是数字,才会正常转化;false会转化为0,true会转化为1;null会转化为0;undefined会转化为NaN;其他情况均为NaN。

parseInt(待转化内容,待转化内容的进制方式),与toString互为逆运算,不写的话默认为10。如果待转化内容为字符串,若以数字开头,可以从开始转换到字符前为止变成数值。布尔值,undefined,null经过转化均为NaN。

ParseFloat(),与上面一致,不赘述。



3.转化为布尔值

书写方式为Boolean(),如果上面的隐式转换你有好好看,这里很得不需要再写了。


日历

链接

个人资料

蓝蓝 http://www.lanlanwork.com

存档