html万能排版布局插件,web视图定位布局创意技术演示页

html万能排版布局插件,是不是感觉很强大,原理其实很简单,不过功能很强大哈哈,大量节省排版布局时间啊!

test.html

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>web视图定位布局创意技术演示页</title>
<meta content="width=device-width,initial-scale=1.0,minimum-scale=1.0,user-scalable=no,maximum-scale=1.0" id="viewport" name="viewport">
<script type="text/javascript" src="web_layout.js"></script>
<style type="text/css">
html,body{ margin:0; padding:0; width:100%; height:100%; }
#canvas1{ background:#000;width:100%; height:100%; }#demo_div{ background:#FFF; width:100%; height:100%; }
#canvas2{ background:#CCC; }
.circle{ background:#F90; -moz-border-radius:999px; -webkit-border-radius:999px; border-radius:999px; }
</style>
</head>

<body>
<div id="canvas1"></div>
<div id="demo_div"></div>

<div id="canvas2"></div>
<div id="circle1" class="circle"></div>
<div id="circle2" class="circle"></div>
<div id="circle3" class="circle"></div>
<div id="circle4" class="circle"></div>
<div id="circle5" class="circle"></div>
<div id="circle6" class="circle"></div>
<div id="circle7" class="circle"></div>
<div id="circle8" class="circle"></div>
<div id="circle9" class="circle"></div>
<div id="circle10" class="circle"></div>
<div id="circle11" class="circle"></div>
<div id="circle12" class="circle"></div>
<div id="circle13" class="circle"></div>
<div id="circle14" class="circle"></div>
<div id="circle15" class="circle"></div>
<div id="circle16" class="circle"></div>
<div id="circle17" class="circle"></div>

</body>
</html>

web_layout.js

/**
 * web_layout.js - v1.0.0 (2016-07-12T18:15:51+0800)
 *
 * Allows you to easily page layout!
 * by Abo.
 *
 * Copyright (C) 2016.
 *
 **/

var web_layout = {

    zoom: {
        _o_w: 0,
        _o_h: 0,
        _n_w: 0,
        _n_h: 0
    },

    draw: function(d) {
        var self = this;
        var n = d.length;
        if (n > 0) {
            for (var i = 0; i < n; i++) {
                self.config(
                d[i].w, d[i].h, {
                    id: d[i].id,
                    w: d[i].zoom_w,
                    h: d[i].zoom_h,
                    x: d[i].x,
                    y: d[i].y,
                    layer: d[i].layer,
                    position: d[i].position,
                    opacity: d[i].opacity,
                    fn: d[i].fn
                });
                var nn = d[i].subobject.length;
                if (nn > 0) {
                    for (var j = 0; j < nn; j++) {
                        self.set(
                        d[i].subobject[j].w, d[i].subobject[j].h, {
                            id: d[i].subobject[j].id,
                            x: d[i].subobject[j].x,
                            y: d[i].subobject[j].y,
                            layer: d[i].subobject[j].layer,
                            position: d[i].subobject[j].position,
                            opacity: d[i].subobject[j].opacity,
                            fn: d[i].subobject[j].fn
                        });
                    }
                }
            }
        }
    },

    config: function(w, h, v) {

        var self = this;

        if ("object" != typeof v || isNaN(w) || isNaN(h)) {
            return;
        }

        var _w = _h = 0;

        isNaN(v.w) || isNaN(v.h) || (_w = v.w, _h = v.h);
        isNaN(v.w) && !isNaN(v.h) && (_w = w / (h / h / (w / w / (h / v.h))), _h = v.h);
        isNaN(v.h) && !isNaN(v.w) && (_w = v.w, _h = h / (w / v.w));

        self.zoom._o_w = w, self.zoom._o_h = h, self.zoom._n_w = _w, self.zoom._n_h = _h;

        if ("undefined" == typeof v.id) {
            return;
        }
        var Object = document.getElementById(v.id);
        if ("object" != typeof Object) {
            return;
        }

        (0 != _w && (Object.style.width = _w + "px"), 0 != _h && (Object.style.height = _h + "px"), self.xy(v, Object, w, h, _w, _h),

        "function" == typeof v.fn && v.fn(Object));

    },

    xy: function(v, Object, w, h, _w, _h) {

        if ("undefined" != typeof v.position) {
            Object.style.position = v.position;
        }

        if (!isNaN(v.opacity)) {
            Object.style.opacity = v.opacity;
        }

        if (!isNaN(v.layer)) {
            Object.style.zIndex = v.layer;
        }

        if (!isNaN(v.x)) {
            if (!isNaN(_w) && !isNaN(w)) {
                Object.style.left = v.x / (w / _w) + "px";
            }
        }

        if (!isNaN(v.y)) {
            if (!isNaN(_h) && !isNaN(h)) {
                Object.style.top = v.y / (h / _h) + "px";
            }
        }
    },

    set: function(w, h, v) {

        var self = this;

        if ("object" != typeof v || isNaN(self.zoom._n_w) || isNaN(self.zoom._n_h)) {
            return;
        }
        var _w = w / (this.zoom._o_w / self.zoom._n_w),
            _h = h / (this.zoom._o_h / self.zoom._n_h);
        if ("undefined" == typeof v.id) {
            return;
        }
        var Object = document.getElementById(v.id);
        if ("object" != typeof Object) {
            return;
        }

        var __w, __h;
        !isNaN(w) ? __w = _w + "px" : __w = w;
        !isNaN(h) ? __h = _h + "px" : __h = h;

        (Object.style.width = __w, Object.style.height = __h, this.xy(v, Object, w, h, _w, _h),

        "function" == typeof v.fn && v.fn(Object));

    }
}

/*

  示例

*/

function a(){
    return [
        {
            "id":"canvas1","w":640,"h":1136,"zoom_w":document.body.clientWidth,"x":0,"y":0,"layer":1,"position":"absolute","subobject":[
                { "id":"demo_img", "w":191, "h":191, "x":328, "y":332, "layer":2, "position":"absolute" }
            ]
        },
        {
            "id":"canvas2","w":146,"h":150,"zoom_w":document.body.clientWidth/2,"x":80,"y":300,"layer":3,"position":"absolute","subobject":[
                { "id":"circle1","w":53,"h":53,"x":100,"y":377,"layer":4,"position":"absolute","opacity":0.55 },
                { "id":"circle2","w":50,"h":50,"x":112,"y":389,"layer":4,"position":"absolute","opacity":0.60 },
                { "id":"circle3","w":48,"h":48,"x":127,"y":399,"layer":4,"position":"absolute","opacity":0.75 },
                { "id":"circle4","w":45,"h":45,"x":142,"y":404,"layer":4,"position":"absolute","opacity":0.80 },
                { "id":"circle5","w":43,"h":43,"x":158,"y":405,"layer":4,"position":"absolute","opacity":0.75 },
                { "id":"circle6","w":41,"h":41,"x":173,"y":402,"layer":4,"position":"absolute","opacity":0.70 },
                { "id":"circle7","w":39,"h":39,"x":187,"y":396,"layer":4,"position":"absolute","opacity":0.65 },
                { "id":"circle8","w":37,"h":37,"x":199,"y":386,"layer":4,"position":"absolute","opacity":0.60 },
                { "id":"circle9","w":35,"h":35,"x":207,"y":374,"layer":4,"position":"absolute","opacity":0.55 },
                { "id":"circle10","w":33,"h":33,"x":212,"y":361,"layer":4,"position":"absolute","opacity":0.50 },
                { "id":"circle11","w":32,"h":32,"x":213,"y":347,"layer":4,"position":"absolute","opacity":0.45 },
                { "id":"circle12","w":30,"h":30,"x":209,"y":333,"layer":4,"position":"absolute","opacity":0.40 },
                { "id":"circle13","w":29,"h":29,"x":202,"y":321,"layer":4,"position":"absolute","opacity":0.35 },
                { "id":"circle14","w":27,"h":27,"x":192,"y":311,"layer":4,"position":"absolute","opacity":0.30 },
                { "id":"circle15","w":26,"h":26,"x":180,"y":304,"layer":4,"position":"absolute","opacity":0.25 },
                { "id":"circle16","w":25,"h":25,"x":166,"y":300,"layer":4,"position":"absolute","opacity":0.20 },
                { "id":"circle17","w":23,"h":23,"x":152,"y":301,"layer":4,"position":"absolute","opacity":0.15 }
            ]
        }
    ];
}

//页面加载结束后
window.onload=function(){

    //布局画布
    web_layout.draw(a());

    //页面大小改变后重新布局
    window.addEventListener("resize",function(){
        web_layout.draw(a());
    });

}

就web元素排版布局而言,在此之前,Web设计师需对Document元素完全按照HTML/CSS语言语法来编写Web页面,这意味着所有Web设计师都必须遵循许多浏览器的非标准差异来编写页面,而W3C又迟迟未统一这一标准,长久以来,导致编写网页Web设计师需处理不同浏览器之间的各种差异,一但排版布局稍微复杂,便完全不可能做到不同浏览器之间视图呈现的一致性,使得这种非标准差异和各种布局单位的换算问题成为困扰Web设计师、网页排版布局浪费大量宝贵时间增加技术成本影响开发进度的关键原因。因此,Web视图定位布局创意技术,彻底攻克解决了这一世界性普遍技术难题 :)

实现方法及原理

我们处在一个物质性质极其不确定的世界,因此需对某些物质位置进行完全非独立精确定位或对其进行独立标准尺度变化衡量几乎不可能实现。通常性质为动态流动变化且无固定容器无可塑外形发展变化较为不稳定的物质譬如水相对于其依存的主体时譬如河流,标准HTML/CSS语言认为可以通过宽度高度、距离等来定位其位置大小容积等,当主体依存关系改变时,其相对或绝对位置也因此而发生改变,且认为此算法能很好地服务于一切计算机网页视图呈现的应用中。然而这一算法并非如此,无法想象、当一滴水在不同河流都需要以10px*10px的高宽漂浮流动在水面且位置需保持固定不变,问题显而易见。:)

但现在可以实现了,使用Web视图定位布局创意技术,令人激动和喜悦。Web设计师可以使水滴不再受到不同河流,河流自然运动等诸多因素影响,能够非常轻松地实现精准排版布局,且不必担心浏览器差异等问题,更能缩减技术成本和缩短项目开发时间加快进度。:)

用这段代码,你可以毫无排版布局压力,任何一切复杂得排版都可以轻松搞定!

时间: 2024-10-01 06:10:20

html万能排版布局插件,web视图定位布局创意技术演示页的相关文章

Selenium2学习-002-Selenium2 Web 元素定位及 XPath 编写演示示例

此文主要对 Selenium2 的 Web 元素定位及 XPath 编写示例,敬请各位亲们参阅,共同探讨.若有不足之处,敬请各位大神指正,不胜感激! 通过 Firefox(火狐)浏览器的插件 Firebug + xpath checker ,结合三个示例来演示实现页面元素的定位及 xpath 路径编写.下面就一起开始我们的 Web 页面元素定位之旅吧... 首先,启动 Firefox(火狐)浏览器,并启动 Firebug 插件(按 F12 按键即可) 一.百度搜索框定位(元素的 ID) 网址输入

CSS之定位布局(position,定位布局技巧)

css之定位 1.什么是定位:css中的position属性,position有四个值:absolute/relative/fixed/static(绝对/相对/固定/静态(默认))通过定位属性可以设置一些不规则的布局,使用TLBR(top,left,bottom,right)来调整元素位置. 2.各个属性值的描述: static(静态) 没有特别的设定,遵循基本的定位规定,不能通过z-index进行层次分级,在普通流中,各个元素默认的属性. relative(相对定位) 对象不可层叠.不脱离文

前端(七)—— 高级布局:文档流、浮动布局、流式布局、定位布局、flex布局、响应布局

高级布局:文档流.浮动布局.流式布局.定位布局.flex布局.响应布局 一.文档流 1.什么是文档流 将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素 2.本质 文档流本质是 nomal flow (普通流.常规流) 3.BFC(Block Formatting Contxt) 块级格式化上下文,它是一个独立的渲染区域,只有Block-level box参与,它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干 4.BFC的规则

七个帮助你处理Web页面层布局的jQuery插件

1.UI.Layout  jQuery UI布局插件 官方网站:http://layout.jquery-dev.com/index.cfm 使用大小可折叠的嵌套面板和大量选项创建高级UI布局.布局可以创建任何你想要的UI外观; 从简单的标题或侧边栏到具有工具栏,菜单,帮助面板,状态栏,子表单等的复杂应用程序.集成并增强其他UI小部件,如选项卡,手风琴和对话框,以创建丰富的界面. 2.jQUery Masonry 官方网站:https://masonry.desandro.com/?resour

第6章—渲染web视图—使用Apache Tiles视图定义布局

使用Apache Tiles视图定义布局 Tiles是一个免费的开源模板Java应用程序的框架.基于复合模式简化的用户界面的构建.对于复杂的网站仍是最简单.最优雅的方式与任何MVC技术一起工作.Struts2对Tiles提供了支持,如今Tiles发展已有13个年头,成为Apache的一个独立项目,我们可以单独使用Tiles来构建用户界面布局. Tiles项目:http://tiles.apache.org/index.html Tiles的配置DTD定义:http://tiles.apache.

jQuery Mobile的布局插件和示例

[转自网络] 现在已经进入了移动互联网时代,因此将你的网站迁移到移动设备上就显得比较重要的.问题是,如何在移动设备的小屏幕中呈现你的网站中的所有内容呢? 本文介绍13款基于jQuery Mobile的布局插件和示例,可以帮助你创建多视图或者分割视图布局的移动web页面,并会根据移动设备的方向和屏幕大小来动态调整所显示的内容. 1.  Three Column iPad Layout 三列分割视图布局效果,为手机和平板电脑上的移动网页布局提供了一个良好的平台. 源码/ 演示 2.  JQM Mul

《Spring实战》学习笔记-第六章:web视图解析

本章主要内容包括: 将model数据展现为HTML JSP视图的使用 在前面的章节中,我们主要关注点在于编写控制来处理web请求,同时也创建了一些简单的视图来展现请求返回的model数据,本章我们将主要讨论在控制器完成请求处理之后和将返回结果展示到用户的浏览器之前,这个过程之间发生了什么. 理解视图解析 在之前章节中所编写的控制器中并没有直接生成HTML的方法,它只是将数据填充到model中,然后将model传送到视图中进行展现. Spring MVC中定义了一个ViewResolver接口:

jq滚动插件jquery.nicescroll+定位到底部

<pre name="code" class="html"><!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compat

spring(6) 渲染web视图

[0]README 1)本文部分文字描述转自:"Spring In Action(中/英文版)",旨在review  "spring(6) 渲染web视图" 的相关知识: [1] 理解视图解析 [1.1]视图解析的基础知识以及spring 提供的其他视图解析器 1)spring mvc 定义了一个名为 ViewResolver的接口,如下 public interface ViewResolver { View resolveViewName(String view