使用Flexbox和Enyo時,我在調整畫布座標系的大小時遇到問題。看例子:http://jsfiddle.net/g7MLS/1989/畫布使用Flexbox和Enyo調整大小
當你第一次運行它,一切都很好。收縮盒子的寬度,文本行保持1行,直到畫布達到最小寬度,然後文本開始換行。
要查看問題,取消註釋行:
c.width = b.width;
c.height = b.height;
Flexbox似乎現在正在使用內部座標寬度來排列事物...或其他東西。文本現在將開始在畫布縮小爲最小寬度之前進行包裝。
我不能重複不Enyo確切的設置,但是這是接近,似乎並沒有做同樣的事情:https://jsfiddle.net/ez6b2q8v/103/
我的理解是,設置畫布寬度/高度應該隻影響內部座標,而不是畫布本身的大小。我錯過了什麼?
var ready = require('enyo/ready'),
kind = require('enyo/kind'),
Toolbar = require('onyx/Toolbar'),
Application = require('enyo/Application'),
Button = require('enyo/Button');
ready(function() {
var MySample = kind({
name: "MySample",
rendered: function() {
this.inherited(arguments);
c = this.$.myCanvas.hasNode();
b = this.$.myCanvas.getBounds()
//c.width = b.width;
//c.height = b.height;
console.log(c.width);
},
buttonTapped: function(inSender, inEvent) {
this.render();
return true;
},
components: [{
classes: "main",
components: [{
classes: "content",
components: [{
classes: "canvas",
tag: "canvas",
name: "myCanvas"
}, {
classes: "label",
content: "This text should be on 1 line, but wrap when canvas == min-width"
}]
}, {
kind: Button,
ontap: "buttonTapped",
content: "Render",
}]
}],
});
app = new Application({
view: MySample
});
});
.main {
position: relative;
margin: 0px;
padding: 0px;
box-sizing: border-box;
background: red;
}
.content {
order: 0;
display: flex;
background: yellow;
flex: 1 1 auto;
}
.canvas {
padding: 4px;
margin: auto;
min-width: 100px;
flex: 1 1 auto;
height: 40px;
background: blue;
box-sizing: border-box;
}
.label{
flex: 0 1 auto;
}
我知道handleResize,但在實際的項目中,它永遠不會被這些控件調用。 有問題的控件深度爲6或7級,我使用分離器類型的控件來允許對兩個主要區域進行水平調整。 在試圖弄清楚爲什麼它從未被調用過的時候,我意識到分離器並未在兩個主要區域調用resize()。我修改它來調用resize(),但handleResize仍然從未在此控件上調用過。但是,它現在可以正常工作。不知何故,呼籲調整其偉大的,...祖父母,使其工作。 –