马先洁

容器定律——Super concise formula(SCF)超简洁公式探索者!

先看图,原理其实很简单,不过功能很强大,目测应该能大量节省排版布局时间。

 

就web元素排版布局而言,在此之前,Web设计师需对Document元素完全按照HTML/CSS语言语法来编写Web页面,这意味着所有Web设计师都必须遵循许多浏览器的非标准差异来编写页面,而W3C又迟迟未统一这一标准,长久以来,导致编写网页Web设计师需处理不同浏览器之间的各种差异,一但排版布局稍微复杂,便完全不可能做到不同浏览器之间视图呈现的一致性,使得这种非标准差异和各种布局单位的换算问题困扰Web设计师。

 

不过我相信用这段代码,应该可以毫无压力地进行排版布局,一些极为复杂精确度要求极高、甚至是跨不同浏览器及其版本的排版问题都可以轻松搞定!

实现方法:

  • 先用setBox方法设置一个盒子的大小
  • 然后再使用setItem方法将盒子内的图像或DIV。

如果窗口可变化,最后可能需要通过window.resize来重新渲染。

 

 1 //渲染层
 2 "use strict";
 3 
 4 var test = {
 5     
 6     iw: 0,
 7     ih: 0,
 8     zw: 0,
 9     zh: 0,
10 
11     setBox(a, b, c) {
12         var t = this;
13         t.iw = a;
14         t.ih = b;
15         t.zw = c;
16         t.zh = b / (a / c);
17     },
18 
19     setItem(x, y, w, h, z, a, f, o, d, c, fn) {
20 
21         var t = this,
22             w = w / (t.iw / t.zw),
23             h = h * (t.zh / t.ih),
24             x = x / (w / w),
25             y = y / (h / h),
26             p = "px";
27 
28         a = document.getElementById(a);
29         a.style.zIndex = z;
30 
31         if (typeof f === "undefined" || f) {
32             a.style.position = 'absolute';
33         }
34 
35         if (!isNaN(x)) {
36             a.style.left = x + p;
37         } else {
38             a.style.left = x;
39         }
40         if (!isNaN(y)) {
41             a.style.top = y + p;
42         } else {
43             a.style.top = y;
44         }
45         if (!isNaN(w)) {
46             a.style.width = w + p;
47         } else {
48             a.style.width = w;
49         }
50         if (!isNaN(h)) {
51             a.style.height = h + p;
52         } else {
53             a.style.height = h;
54         }
55         if (!d) {
56             o = 0;
57         }
58         a.style.opacity = o;
59         //a.style.display = d ? "block" : "none";
60         a.setAttribute("class", c);
61 
62         if (typeof fn === "function") {
63             fn();
64         }
65     }
66 }

 

posted on 2016-10-31 18:11  马先洁  阅读(5860)  评论(0编辑  收藏  举报