惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Spread Privacy
Spread Privacy
P
Palo Alto Networks Blog
P
Proofpoint News Feed
AI
AI
Help Net Security
Help Net Security
S
Securelist
T
Troy Hunt's Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cisco Blogs
Scott Helme
Scott Helme
Hacker News - Newest:
Hacker News - Newest: "LLM"
Vercel News
Vercel News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
B
Blog
GbyAI
GbyAI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
D
Darknet – Hacking Tools, Hacker News & Cyber Security
P
Proofpoint News Feed
S
Security Affairs
Cisco Talos Blog
Cisco Talos Blog
AWS News Blog
AWS News Blog
T
Tenable Blog
H
Help Net Security
NISL@THU
NISL@THU
F
Fortinet All Blogs
博客园_首页
G
GRAHAM CLULEY
L
LINUX DO - 最新话题
P
Privacy International News Feed
G
Google Developers Blog
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Security Archives - TechRepublic
Security Archives - TechRepublic
The Register - Security
The Register - Security
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
T
Tor Project blog
P
Privacy & Cybersecurity Law Blog
量子位
C
Cyber Attacks, Cyber Crime and Cyber Security
Forbes - Security
Forbes - Security
S
Secure Thoughts
Simon Willison's Weblog
Simon Willison's Weblog
D
Docker
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
L
Lohrmann on Cybersecurity
T
Tailwind CSS Blog

囧克斯

奔四了,写给40岁的自己 有序退网 我和 Vue.js 的十年 我参与《代码之外 Beyond Code》的故事 博客站迁移至 VitePress 的备忘 写给我的奶奶 中文格式化小工具 zhlint 及其开发心得 vue-mark-display:用 markdown 语法轻松撰写幻灯片 我对技术会议的一些看法 VueConf Hangzhou 见闻 第四届 CSSConf CN 见闻 [译]Web 表单的未来 [译]苹果正在做一些他们的程序员明摆着不想要的东西 [译]为什么我不会无偿加班且你也不应该 [译]如果管理是唯一可走的路,那就完蛋了 [译]如何撰写 Git 提交信息 [译]C 程序的原则 Vue 2.0 来了! Weex 近 4 个月的开源之路 Weex 在 JS Runtime 内的多实例管理 我理解的 SPA 我理解的 Flux 架构 【整理】Vue 2.0 自 beta 1 到 beta 4 以来的主要更新 通过一张图走进 Vue 2.0 Code Review for Vue 2.0 Preview Vue 2.0 发布啦! 务实的小而美 Vue.js 1.0.0 发布了! [译]如何成为一名卓越的前端工程师 手机淘宝前端的图片相关工作流程梳理 [译]如何让办公室政治最小化 Vue.js 源码学习笔记 从原型到发布——“团队时间线” 1.0 开发心得 Vue + webpack 项目实践 用 Koa 写服务体验 webcomponents 笔记 之 配置管理 小秀个人的13~14年摄影作品 (共19张) 由今年D2前端论坛想到的 [译]CSS命名神马的真心难 [译]Git 分支的最佳实践 [译]撰写可测试的 JavaScript [译]语义化版本管理 [译]通过HTML5 Canvas API调节图像的亮度和颜色 [译]JavaScript V8性能小贴士 [译]视觉差,走起! [译]Chrome开发者工具中评估性能的五大新特性 精气神儿 细节无微不至,彩屏让人又爱又恨——新老“神机”大对决:Nokia 1050 vs Nokia 1202 秦升拿到红牌之后…… 用Sass重新整理自己的博客主题样式 Connect中间件使用手册 巧用 RequireJS Optimizer 给传统的前端项目打包 编辑器小调查结果 [译]JSLint 文档 烟火——写给蛇年的傲游和我 小秀个人的全年摄影作品 (共15张) 2012年终毫无正能量的总结 标签?ID?还是CLASS? 微创新=伪创新 HTML5峰会归来 分享bookmarklet一则:随意阅读 国际羽联和中国队之间的恶性循环 ZeroClipboard 学习笔记 “思考人生” 听杨东杰弹吉他 学习精髓 网站装修笔记20120426 网站装修笔记20120414 网站装修笔记20120406 分享Typecho插件:百度统计助手 我的得奖感言 网站装修笔记20120331 用CSS3制作尖角标签按钮样式 分享Typecho插件:Markdown 解析器 + 编辑器 分享Typecho皮肤:我的字很大 汇总自己过去的一些HTML5科普文章 html5中的消息通信简介 + 我的新网站开张 网站装修计划 Typed Arrays 是神马? 文明看球 HTML5中的文件处理 之 File Writer API HTML5中的文件处理 之 File API 独生子女、互相等和不耐烦 IndexedDB技术简介(四) IndexedDB技术简介(三) IndexedDB技术简介(二) IndexedDB技术简介(一) 把博客的字体进一步调大,同时去掉了侧边栏 “模仿别人是为了找到自己” 写给我未婚妻的2011年 写给自己的2011年 手把手教你入门EaselJS做HTML5动画 “吃了吧,不吃就浪费了” 写给傲游的2011年 所谓专业 写给HTML5的2011年 对HTML5中LocalStorage的一些使用建议 回味一下我2011年看到的最过瘾的5场足球比赛 浅浅浅谈开饭店被顾客吃出“异物”的用户体验 前端的本职
WebApp时代的界面布局浅析(我在WebReBuild.ORG第五届年会北京站上的主题分享)
勾三股四 · 2011-11-16 · via 囧克斯

本文摘自 勾三股四 更早时期的 不老歌 博客。


WebPage时代的布局

WebPage

* 其功效集中在内容的展现
* 多以文档形式存在
* 流式布局
常见的WebPage布局
* 页眉
* 横向导航
* 侧边导航
* 正文内容
* 页脚
Beautiful HTML Code
* http://css-tricks.com/121-what-beautiful-html-code-looks-like/
经典案例:新闻、博客

WebPage++时代

不同之处:
* 谋求更丰富的交互
* 谋求更灵活的布局
* 谋求更开放的版式
比如:
* 大量的交互性元素
* 对操作的集中控制
* 更复杂的交互逻辑
从界面的角度看:
* 围绕着内容发展出了各种各样的按钮和浮层
* 出现了控制面板和工具条
* 出现了复杂的交互
* 内容由静态转为动态,信息越来越多
* WebApp的影子开始浮现
典型的例子:微博、SNS

WebApp时代的到来

什么是WebApp?两条线索:
* 能够取代传统应用程序
* 运用了大量的HTML5技术
经典的案例:Google Apps、iCloud.com
更多的WebApp:http://web.appstorm.net/

界面布局正在悄然改变……

WebPage

* 内容 → 网页 → 浏览区域

WebApp

* 内容 → 可视区域

WebPage vs. WebApp

WebPage
* 网页好比一张长长的画卷,
* 浏览器犹如放大镜,
* 浏览网页,好比用户那着放大镜看画卷的局部
WebApp
* 浏览器如观光玻璃,
* 内容如流水一样,浩瀚、灵活,
* 用户在水族馆里观赏风景

回归到界面的本质

* 直接根据可视空间设计界面
* 解放思想,解放生产力

换个角度考虑界面布局

以可视空间为本 →
如何充分利用有边界的可视空间? →
填满可视空间先…… →
开始各种探索、思考、纠结……
这时,我们不妨从传统应用程序的界面中开拓视野,找寻灵感💡

找了几个别的领域的前端技术

介绍几种界面布局的思路
* WPF (Windows Presentation Foundation):是微软推出的基于Windows Vista的用户界面框架,属于.net的一部分
* Cocoa:苹果公司为Mac OS X所创建的原生面向对象的编程环境
* HTMLayout:一个免费的开源界面库(核心未开源),以DLL的方式运行,可以高效的解析和渲染HTML网页,并根据界面库的特征,做了很多有用的功能性扩展。傲游3浏览器的界面就是基于HTMLayout设计和开发的

WPF

* StackPanel:朝一个特定的方向(横向或纵向),依次排列子元素
* WrapPanel:在 StackPanel 的基础上,可以允许子元素自动折行
* Grid:网格式布局,可设定一共几行几列,和每行的行高、每列的列宽
* DockPanel:把界面分成上、下、左、右、中间5个部分

Appkit (Cocoa)

坐标、尺寸及其自动调整的方式

一些特定界面元素

* Toolbar:一种特定的布局方式,只能出现在窗口的最上部。子元素从左到右排布,可以放置按钮、输入框,也可以放置“可无限撑大”的空白区域,将其右侧的子元素挤到工具栏的最后边
* Menu:菜单栏,永远在屏幕的最上面

更多子元素的内部布局

* TableView
* OutlineView
* CollectionView
更复杂的界面布局都需要通过代码来实现

HTMLayout

height: 100%

* 可以让元素撑满整个窗口的高度
* 传递很明确的信息:——应用程序的界面是有固定高度的

新长度单位:%%

* 在剩余的总长度中选取相应比例的长度,相当于WPF中的*单位
* http://www.terrainformatica.com/htmlayout/fspu.whtm

新布局方式:flow

* vertical | horizontal | vertical-flow | horizontal-flow | grid
* 前四个相当于WPF中的StackPanel和WrapPanel,分横向纵向两个方向
* 第五个相当于WPF中的Gird
* http://www.terrainformatica.com/htmlayout/flow.whtm
其它
* calc(...) 长度计算函数:http://www.terrainformatica.com/htmlayout/csss!-calc-function.whtm
* Flex 布局 / min-intrinsic / max-intrinsic:http://www.terrainformatica.com/w3/flex-layout/flex-layout.htm
更多:http://www.terrainformatica.com/htmlayout/

HTMLayout 实践

* 傲游3浏览器皮肤系统
* 大量的素材、文档、源代码
* 首页 → 傲游实验室 → 皮肤系统:http://www.maxthon.cn/lab/skin/

简单回顾一下

* 从 NativeApp 得到的启发

流式布局其实很棒

* 遭遇了流式布局缺失的界面库,才懂得流式布局的强大!
* 流式布局想垒积木一样灵活,非常适合功能性界面

DockPanel 式布局很讨喜

* 较为复杂的应用程序几乎都可以从DockPanel作为界面布局的起点

绝对定位应用最为广泛

* 在较为简单的界面中,绝对定位是最直观、成本最低的方式
* 可以很好的配合所见即得编辑器进行布局

绝对定位可能面临的问题

* DPI的改变
* 多语言环境等
建议
* 给每个元素保留足够的余地,以应付内容变化
* 从排版上尽量回避由于文字长短、多媒体元素尺寸大小造成的布局混乱
* 推荐:《Flexible Web Design》Zoe Mickley Gillenwater (加)

几个WebApp的“好朋友”

box-sizing

* 可以选择根据边框、内边距或实际内容计算盒模型,适用于边框大小、边距大小会动态变化的元素
* http://www.w3.org/TR/css3-ui/#box-sizing

background-origin (-clip)

* 可以选择根据边框、内边距或实际内容计算背景图片的坐标起点和覆盖区域,同样适用于边框大小、边距大小会动态变化的元素
* http://www.w3.org/TR/css3-background/#the-background-origin
* http://www.w3.org/TR/css3-background/#the-background-clip

绝对定位

* 快速定位一个元素在窗口中的位置和大小,适用于尺寸需要根据窗口变化而变化的元素

display: box / flex-*

* 类似 grid 的布局,可以让若干子元素,通过具体长度或长度比例,撑满整行/整列容器空间,但它是单行或单列的,并没有网格形式,适用于工具栏等元素,以及界面上大块的布局划分
* http://www.w3.org/TR/css3-flexbox/

transform (-origin)

* 等比例伸缩盒模型中的几乎一切内容,适用于尺寸需要等比例变化的展示性元素
* http://www.w3.org/TR/css3-2d-transforms/

grid

网格化布局,从设计的角度看,非常实用
* http://www.w3.org/TR/css3-grid-layout/

media queries

通过不同的界面尺寸,应用不同的CSS样式
* http://www.w3.org/TR/css3-mediaqueries/

multi-column / regions

* 两者均属于对于界面布局细节的雕琢
1. 分列显示大块内容 (demo)
2. 打破“矩形盒子”的限制,在高度自定义的一个或多个区域内填充内容
* http://www.w3.org/TR/css3-multicol/
* http://www.w3.org/TR/css3-regions/

参考资料

* w3c官网 - CSS:http://www.w3.org/Style/CSS/current-work
* win8 html5 platform 展示页:http://ie.microsoft.com/testdrive/Graphics/hands-on-css3/
* HTML5 Rocks:Tutorials:http://www.html5rocks.com/en/tutorials/
* 前端观察:http://www.qianduan.net/

其实,这张幻灯片也是一个WebApp!

HTML5幻灯片系统

传统PPT
* 太过笨重
* 很多冗余的功能和设计
* 只有一张空白幻灯片的pptx文件也有几百行代码
* 大部分的Powerpoint功能我们根本用不到

HTML5幻灯片系统

* 带有交互性的演示
* 小巧轻便、易于分享和传播
* 跨平台
* 可扩展
* 可融入其它的软件和系统

希望重新定义幻灯演示

欢迎加入我们的行列!

迎接挑战吧!

THANKS & QA