UI设计师和前端通常是一个是艺术出身,一个是技术出身。却因为工作不得不经常面对面坐在一起,为各种问题纠缠不清。

  前端总觉得设计太过理想主义,稿子里很多构想根本不完整,还以各种理由给自己找麻烦。设计总觉得前端各种找理由偷懒,开发出的界面明明和设计稿相差十万八千里,就自以为完事大吉了。

  今天周老师就为广大设计师们写一篇比较好懂的科普,以促进双方在日常工作中更加高效友善地合作。

  界面尺寸如何把控?

  我们从外至内来看一个界面区域(手机屏幕/电脑窗口)的尺寸有两个变量:宽度和高度。

  前端搭建界面时,通常只会规定横向尺寸。也就是说宽度是自变量,高度是因变量。因为用户的屏幕/窗口尺寸是无法预期的,哪怕都是手机,型号也多到数不清。要让一款产品能够在所有型号的硬件上展示,前端开发时不可能设置一个固定的界面尺寸。

  你可以把界面想象成一个倒置的俄罗斯方块盒子,在固定的宽度下,长度可以近乎无限延展。

  然而UI设计是都是以一个固定的界面宽度为基础的,因为这样设计师就不需要为同一个方案画很多不同尺寸的方案。也就是说在理解界面构成时,前端的是基于动态宽度,而UI则是基于静态宽度,这直接导致了双方在基础概念上的不对等。

  这就是为什么设计还原的问题总是难以解决。UI追求的是在标准宽度下,界面能够100%还原;而前端费解的是,既然用户的屏幕尺寸根本无法确定,纠结某一特定宽度下是否精确符合设计稿是否有意义?

  布局如何跟随界面尺寸而变化?

  那么当容器宽度发生变化时,界面内部首当其冲收到影响的就是布局。

  印刷品的页面布局通常有左右分栏和上下分栏两种。

  而界面布局反倒更加简单,通常只需要考虑左右分栏即可。这是因为界面在固定宽度下纵向延展,纵向高度有内部元素的填充情况来决定。

  界面尺寸变化时,分栏如何变化?通常有两种方式:定宽和定比。

  定宽常用于PC端。固定一栏的绝对宽度,另外一栏根据容器自由伸缩;或者固定元素的宽度,根据容器尺寸来确定列数。

  定比常用于手机端。固定几个分栏的所占比例,根据容器宽度自由伸缩。

  对于前端来说,通常定宽比定比要简单得多,所以如果UI不给出明确要求,前端很有可能一律按定宽处理。

  图片元素

  前面一直在说,界面高度由固定宽度容器内,摆放下的元素来确定,那么这里就说一下元素是如何摆放的,从图片开始。

  如果是较小的图片,例如LOGO、按钮或箭头,通常是给一个固定尺寸,以左对齐/居中/右对齐的方式摆放在容器中。

  如果是较大的图片,例如BANNER、文章插图或背景,通常是给一个固定的比例,例如100%或50%,同样以左对齐/居中/右对齐的方式摆放在容器中。

  第一种方式插入的图片所占用的高度是固定的,而第二种方式所占用的高度是根据容器宽度而等比变化的(如果是背景图,当然就不会影响到界面高度了)。

  这就是为什么有的UI用非主流尺寸做设计,把切图给开发后,在自己电脑上看效果发现相差很远。界面尺寸发生变化后,图片看起来难免会有很大不同。

  文字元素

  界面里的元素除了图片之外,其实大量都是文字。

  文字的尺寸和行高一般是固定的,并不会随着容器尺寸而变化。例如你用不同屏幕的设备打开一篇文章,你会发现每行字数都是不同的。

  当然如果非要技术处理,也可以做到根据容器宽度确定文字尺寸,以求每行字数保持不变。但是这种处理非常麻烦,一般很少用到。

  这就是为什么,UI在标准尺寸屏幕上勉强留够了文字空间,而在用户的小屏设备上展示时,却排不下几个字。从前端的角度看,文字尺寸的灵活性,没有图片那么强。

  内边距与外边距

  前端开发时,任何元素或模块都可以有一个内边距和外边距。内边距用于分割模块里内容与模块边缘的距离;外边距用于分割模块与模块之间的距离。

  当元素/模块重复出现时,其内边距和外边距可以作为固定属性重复出现,这样就避免了代码冗余。

  然而,有的设计稿在内外边距上比较随便,这可能导致前端开发同学犯强迫症,例如以下几种情况。

  不同页面的边距不一样:

  同一级模块的边距不同:

  有的特殊元素偏偏要突破原本定好的边距:

  当然有时候为了视觉效果,我们必须要做一些特殊处理,增加额外的开发工作量无可避免。

  然而如果边距不统一只是因为设计时没有太在意,这就有可能给前端开发造成无意义的维护成本了。

  如果设计按照模块而不是按照页面来提供方案,前端可能更加高兴的,因为他们不用去猜哪些地方可以复用代码了,哪些地方又必须单独写了。

  总结

  上面说的都是一些非常基础的前端原理,很多前端以为UI应该理解,但其实很多情况下都无法理解。不论是前端还是设计,希望看了这篇文章后,能够对双方有更多的理解。

容器必须设置宽度吗_UI设计必须要具备的前端知识相关推荐

  1. UI设计必须要具备的前端知识

    UI设计师和前端通常是一个是艺术出身,一个是技术出身.却因为工作不得不经常面对面坐在一起,为各种问题纠缠不清. 前端总觉得设计太过理想主义,稿子里很多构想根本不完整,还以各种理由给自己找麻烦.设计总觉 ...

  2. 容器必须设置宽度吗_消防泵必须设置自动巡检柜吗

    自动巡检柜是一种数字巡检装置.作用是可以起到防止消防水泵锈蚀.受潮.水泵动作不正常等故障的作用,做到"养兵千日,用兵一时"的目的. 根据公安部消防安全行业标准GA30.2<固 ...

  3. 为什么jsp的form表单不能跳转_UI设计干货分享:设计语言 - 表单(登录/注册)...

    原文作者:罗耀_UI 设计语言中的表单中的登录与注册部分 大致讲完了按钮.下拉菜单.导航栏.分页等,就要开始讲表单了.表单也分几种功能和几种样式,我也不可能不能把它们一一讲出来,所以只挑出几个常用的来 ...

  4. html给div设置宽度无效,HTML学习之给div高度设置百分比不生效的问题

    这几天在学习HTML的知识,今天想做一个极为简单的页面,就是分为头部,内容和底部,本来用三个div即可,可是给div高度设置百分比时发现不生效,具体页面如下,非常简单. 下面是html部分: 1111 ...

  5. html高度随宽度编号,纯css实现容器高度随宽度等比例变化的四种解决方案

    使用一个隐藏的图片来实现 这个方法是我最推荐的,因为不需要考虑任何兼容性,PC移动完美运行.除了增加了一个dom结构,但是相对与一个页面成百上千的代码来说,不值一提 我们知道,div容器如果不给定高度 ...

  6. 容器高度或者宽度的获取方式

    为了使表格或者一些数据能能够自适应浏览器的宽度或者高度,就不可避免的要获取浏览器的尺寸 电脑屏幕尺寸的获取方式 window.screen.height //获取电脑屏幕分辨率的高度 window.s ...

  7. duilib 修复Text控件无法设置宽度的bug,增加自动加算宽度的属性

    转载请说明原出处,谢谢~~: 今天有朋友反映CTextUI控件无法设置宽度,于是修复了这个bug,顺便给Text控件增加了一个自动计算宽度的属性,描述如下 <Attribute name=&qu ...

  8. div设置宽度,实现不等比缩放,或设置最小宽度 min-width

    div设置宽度,实现不等比缩放,如 width="1140px",或设置最小宽度 min-width,如 width="60%", min-width=&quo ...

  9. [html] table中给td设置宽度无效怎么解决?

    [html] table中给td设置宽度无效怎么解决? 默认是列宽度由单元格内容设定 table 添加css tableLayout :fixed; 个人简介 我是歌谣,欢迎和大家一起交流前后端知识. ...

最新文章

  1. 你真的会用Android的Dialog吗?由一个Exception想到的
  2. 步入DevExpress的使用(VS)
  3. SAP Fiori应用中事务锁的实现 - Transaction Lock实现机制
  4. 这个偏僻的小山村竟出了12位博士28位硕士,高产“学霸”背后原因曝光......
  5. speech开源框架_微软SAPI(The Microsoft Speech API):让你的软件能说会道
  6. 图像处理——双线性插值(Bilinear Interpolation)
  7. 对外提供dubbo服务的最佳实践
  8. Visio2007注册码(产品密匙)
  9. C#报表控件ReportViewer
  10. 计算机等级考试二级VB基础教程
  11. 200行Python实现连连看辅助
  12. java中的main_Java中的main()方法详解
  13. C++primer plus第六版课后编程题答案14.3(仅供参考)
  14. Xaml技术:浅析为什么说一个标签就是new一个对象?
  15. 七届世界冠军迈克尔-舒马赫将正式退役
  16. python 空数组判断
  17. 点如何在平面设计中应用
  18. python客户端开发自行车租赁系统_python可视化--共享单车项目
  19. ROS::多种方式的GDB调试
  20. 谷歌紧急修复今年已遭利用的第9个0day

热门文章

  1. python实现图片文件批处理
  2. caffe教程翻译:Alex’s CIFAR-10 tutorial, Caffe style
  3. matlab工作区保留或者清除部分变量
  4. 十七、“秦时山洞汉时水,水长山高不止息。”(2021.5.17)
  5. 手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7
  6. lambda函数if_lambda表达式速度如何呢?看完这篇文章你就明白了
  7. easyexcel根据模板写入_ProxmoxVE 之 创建win10基础镜像模板
  8. VTK修炼之道38:图像平滑_中值滤波器
  9. [OS复习]设备管理2
  10. jquery 跨域 没有权限