当前位置 : 主页 > 网页制作 > Dojo >

Dojo学习笔记(十):Dojo布局――堆叠容器

来源:互联网 收集:自由互联 发布时间:2021-06-15
可以把小部件层叠在一起,而一次只显示一个屏面。 1dijit.layout.AccordionContainer AccordionContainer 顾名思义是像手风琴一样可以收缩的面板,这种方式比较适合单个portal的布局,小巧易用;

    可以把小部件层叠在一起,而一次只显示一个屏面。

1 dijit.layout.AccordionContainer

    AccordionContainer 顾名思义是像手风琴一样可以收缩的面板,这种方式比较适合单个portal的布局,小巧易用;也可以用于整个页面的布局。

AccordionContainer申明方式样例:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="dijit/themes/soria/soria.css">
    <script type="text/javascript" src="dojo/dojo.js" djConfig="parseOnLoad:true"></script>
    <script type="text/javascript">
        require(["dojo/parser", "dijit/layout/AccordionContainer", "dijit/layout/ContentPane","dojo/domReady!"]);
    </script>
    <title>AccordionContainer学习</title>
</head>
<body class="soria">
<div style="width: 300px; height: 300px">
    <div data-dojo-type="dijit/layout/AccordionContainer" style="height: 300px;">
        <div data-dojo-type="dijit/layout/ContentPane" title="标题1">
            标题1内容
        </div>
        <div data-dojo-type="dijit/layout/ContentPane" title="标题2" selected="true">
            标题2内容
        </div>
        <div data-dojo-type="dijit/layout/ContentPane" title="标题3">
            <b>标题3内容</b>测试
        </div>
    </div>
</div>
</body>
</html>

AccordionContainer编程方式样例:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="dijit/themes/soria/soria.css">
    <script type="text/javascript" src="dojo/dojo.js" djConfig="parseOnLoad:true"></script>
    <script type="text/javascript">
        require(["dijit/layout/AccordionContainer", "dijit/layout/ContentPane", "dojo/domReady!"],
                function (AccordionContainer, ContentPane) {
                    var aContainer = new AccordionContainer({style: "height: 300px"}, "myAccordionContainer");
                    aContainer.addChild(new ContentPane({
                        title: "标题1",
                        content: "标题1内容"
                    }));
                    aContainer.addChild(new ContentPane({
                        title: "标题2",
                        content: "标题2内容",
                        selected:true
                    }));
                    aContainer.addChild(new ContentPane({
                        title: "标题3",
                        content: "<b>标题3内容</b>测试"
                    }));
                    aContainer.startup();
                });
    </script>
    <title>AccordionContainer学习</title>
</head>
<body class="soria">
<div id="myAccordionContainer" style="width: 300px; height: 300px"></div>
</body>
</html>

输出:

650) this.width=650;" src="http://img.558idc.com/uploadfile/allimg/210615/1956193112-2.png" title="快照3.jpg" alt="wKiom1RAiNSQJkYzAACxJIJSlRM281.jpg" d="3714148" s="dfc_00d" t="jpg">

2 dijit.layout.TabContainer

    TabContainer的导航按钮在顶端一字排开,而AccordionContainer的导航按钮在面板内显示。

TabContainer申明方式样例:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="dijit/themes/soria/soria.css">
    <script type="text/javascript" src="dojo/dojo.js" djConfig="parseOnLoad:true"></script>
    <script type="text/javascript">
        require(["dojo/parser", "dijit/layout/TabContainer", "dijit/layout/ContentPane"]);
    </script>
    <title>TabContainer学习</title>
</head>
<body class="soria">
<div style="width: 350px; height: 300px">
    <div data-dojo-type="dijit/layout/TabContainer" style="width: 100%; height: 100%;">
        <div data-dojo-type="dijit/layout/ContentPane" title="My first tab" data-dojo-props="selected:true">
            Lorem ipsum and all around...
        </div>
        <div data-dojo-type="dijit/layout/ContentPane" title="My second tab">
            Lorem ipsum and all around - second...
        </div>
        <div data-dojo-type="dijit/layout/ContentPane" title="My last tab" data-dojo-props="closable:true">
            Lorem ipsum and all around - last...
        </div>
    </div>
</div>
</body>
</html>

TabContainer编程方式样例:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="dijit/themes/soria/soria.css">
    <script type="text/javascript" src="dojo/dojo.js" djConfig="parseOnLoad:true"></script>
    <script type="text/javascript">
        require(["dijit/layout/TabContainer", "dijit/layout/ContentPane", "dojo/domReady!"], function(TabContainer, ContentPane){
            var tc = new TabContainer({
                style: "height: 100%; width: 100%;"
            }, "myTabContainer");
            var cp1 = new ContentPane({
                title: "My first tab",
                content: "Lorem ipsum and all around.."
            });
            tc.addChild(cp1);
            var cp2 = new ContentPane({
                title: "My second tab",
                content: " Lorem ipsum and all around - second..."
            });
            tc.addChild(cp2);
            
            var cp3 = new ContentPane({
                title: "My third tab",
                content: " Lorem ipsum and all around - third...",
                closable:true
            });
            tc.addChild(cp3);
            tc.startup();
        });
    </script>
    <title>TabContainer学习</title>
</head>
<body class="soria">
<div style="width: 350px; height: 300px">
    <div style="width: 350px; height: 290px">
        <div id="myTabContainer"></div>
    </div>
</div>
</body>
</html>

输出:

650) this.width=650;" src="http://img.558idc.com/uploadfile/allimg/210615/1956193112-2.png" title="快照4.jpg" alt="wKiom1RAje_xrkhmAACw-COU9H4781.jpg" d="3714149" s="6ac_8bb" t="jpg">

2.1 tabPosition属性:String

    决定导航按钮相对于内容面板的位置,可取值:"top", "bottom", "left-h", "right-h"。


2.2 doLayout属性:Boolean

    默认值为true,表示TabContainer高度与内容面板最大高度一致,为false表示TabContainer高度与当前内容面板高度一致。

    TabContainer可伸缩高度样例:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="dijit/themes/soria/soria.css">
    <script type="text/javascript" src="dojo/dojo.js" djConfig="parseOnLoad:true"></script>
    <script type="text/javascript">
        require(["dojo/parser", "dijit/layout/TabContainer", "dijit/layout/ContentPane"]);
    </script>
    <title>TabContainer学习</title>
</head>
<body class="soria">
<div style="width: 600px;">
    <div data-dojo-type="dijit/layout/TabContainer" style="width: 100%;" doLayout="false">
        <div data-dojo-type="dijit/layout/ContentPane" title="My first tab" data-dojo-props="selected:true">
            Lorem ipsum and all around...
        </div>
        <div data-dojo-type="dijit/layout/ContentPane" title="My second tab" data-dojo-props="closable:true">
            Lorem ipsum and all around - second...<br />
            Hmmm expanding tabs......
        </div>
        <div data-dojo-type="dijit/layout/ContentPane" title="My last tab">
            Lorem ipsum and all around - last...<br />
            <br />
            <br />
            Hmmm even more expanding tabs......
        </div>
    </div>
</div>
</body>
</html>


2.3  selected属性:Boolean

    设置当前激活的Tab,与selectChild()方法类似。


    备注:dijit.layout.AccordionContainer和dijit.layout.TabContainer都继承dijit/layout/StackController,具有dijit/layout/StackController中dijit/layout/StackContainer.ChildWidgetProperties 属性的值。

网友评论