- From: John Hax <johnhax@gmail.com>
- Date: Fri, 12 Aug 2011 14:55:30 +0800
- To: "Kang-Hao (Kenny) Lu" <kennyluck@w3.org>
- Cc: (wrong string) 樂會ML <public-html-ig-zh@w3.org>
Received on Friday, 12 August 2011 06:55:58 UTC
2011/8/12 Kang-Hao (Kenny) Lu <kennyluck@w3.org>
> **
> img { position: absolute;
> position-root: parent;
> top: ...
> right: ... }
>
> 達到,可以完全省掉沒必要的 li { position: relative; } 。@裡的 position-root 用來指定
> top/right/bottom/left 的參考座標元素,有
> parent/previous/container(@差不多是原來的行為)/viewport(差不多就是 'position:
> fixed'),甚至還有之前提過一次[2]的 element() 可以直接指定元素!
>
>
我觉得winter会对这个proposal很满意,position-root消除了position:relative只为设置container的必要性,而position:relative的其他用途可以用transform来解决。这样winter让position:relative退休的想法就可以实现啦!
我也认为Atkins这个设计比CSS原先的设计要好。原本的设计中,太多indirect的因素,无论对于实作还是理解都是非常头痛。
比如当看到一个position:absolute的时候,到底TMD这个元素是如何layout的?你得在脑子里还原其他所有父元素的position的computed
value!唔!
实作也是一样,当一个元素的position发生变化时,得遍历其所有absolute的子孙元素并relayout。
而在这个设计里,只要看写在一起的position-root就可以了。
> 另外,還可以用以下代碼達到微博的「半固定」通知[3]的效果:
>
> nav { position: relative;
> position-root-top: bottommost(self top, viewport top); }
>
> 完全無 JS!求 Hax 用 JS 的兼容實作!
>
> [3] http://hi.baidu.com/aztack/blog/item/a9f2a7c207c7e30e0ff47730.html
>
CSS属性没法实现,因为像position-root-top这样的属性直接被引擎抛弃了,cssom里拿不到!(神奇的IE系列是唯一的例外)。
当然可以做JS接口,但是这样丧失了CSS的其他power如selector的自动匹配和cascade。
不过就这个case来说,通常很少会override像定义position这样的规则,所以可以考虑哦。待我有空尝试一下。
Received on Friday, 12 August 2011 06:55:58 UTC