DOJO Изменение размера div
У меня есть div с идентификатором "panelContent", я хочу изменить размер div, моя текущая программа dojo может переместить div, я также хочу изменить его размер, кто-нибудь может мне помочь.
Заранее спасибо.
Javascript код:
require(["dojo/dnd/Moveable", "dojo/dom", "dojo/on", "dojo/domReady!"],
function(Moveable, dom, on){
var dnd = new Moveable(dom.byId("panelContent"));
});
`
2 ответа
Решение
Это может быть достигнуто с помощью dojo ResizeHandler, поэтому настройки для его использования:
импортировать
dojox/layout/ResizeHandle
Импортируйте инструмент изменения размера Css Style (для рендеринга и изменения размера значка)
установите изменяемый размер div относительно
- создать экземпляр rsizeHandler и установить цель для вашего идентификатора div
таким образом, экземпляр будет выглядеть так:
var handle = new ResizeHandle({
targetId:"panelContent"
}).placeAt("panelContent");
Вы можете найти ниже рабочий фрагмент
require([
"dojox/layout/ResizeHandle",
"dojo/dnd/move",
'dojo/dom',
'dojo/domReady!'
], function(ResizeHandle, dojoDnd, Dom) {
new dojoDnd.parentConstrainedMoveable(Dom.byId("panelContent"), {
handle: this.focusNode,
area: "content",
within: true
})
var handle = new ResizeHandle({
targetId:"panelContent"
}).placeAt("panelContent");
});
#panelContent {
background-color:green;
position:relative;
width:200px;
height:100px;
cursor:pointer;
}
body,html,#container {
width:100%;
height:100%;
}
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojox/layout/resources/ResizeHandle.css" rel="stylesheet"/>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.12.1/dijit/themes/claro/claro.css" />
<script>
window.dojoConfig = {
parseOnLoad: false,
async: true
};
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojo/dojo.js"></script>
<div id="container" class="claro">
<div id="panelContent">
<div id="handler"></div>
</div>
</div>
В следующем примере вы можете увидеть, как вы можете инициировать dijit/layout/ContentPane
и изменить его размер программно (по нажатию кнопки).
В основном вам нужно:
- Получите ваш
ContentPane
с помощьюregistry.byId()
, - Изменить свойство стиля для
ContentPane
используя установщик додзё.set('propertyName', yourValue)
;
require(["dijit/layout/ContentPane", "dijit/registry", "dijit/form/Button", "dojo/domReady!"], function(ContentPane, registry, Button) {
new ContentPane({
content: "<p>Optionally set new content now</p>",
style: "width: 150px; height:150px; background-color:yellow;"
}, "panelContent").startup();
var myButton = new Button({
label: "Click me to enlarge the panel!",
onClick: function() {
registry.byId("panelContent").set('style','width: 350px; background-color:red;')
}
}, "button").startup();
});
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.12.1/dijit/themes/claro/claro.css" />
<script>
window.dojoConfig = {
parseOnLoad: false,
async: true
};
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.1/dojo/dojo.js">
</script>
<body class="claro">
<div id="panelContent" data-dojo-type="dijit/layout/ContentPane">
Hi, pretty boring huh?
</div>
<button id="button" type="button"></button>
</body>