<boxmodel>
A mixin that adds CSS2 box model support to view.

JavaScript: lz.boxmodel

The <boxmodel> mixin adds CSS2 box model support to <view>

<boxmodel> implements a subset of the CSS2 box model spec http://www.w3.org/TR/CSS2/box.html

Example 32. Simple view with boxmodel

<canvas height="200" bgcolor="antiquewhite">
  <stylesheet>
    #thebox {
      padding: 1 3 5 7;
      border-width: 2 4 6 8;
      border-color: cornflowerblue;
      margin: 3 7 11 15;
    }
    text { color: navy; }
    .margin { background-color: aliceblue; }
    .borderwidth { color: white; background-color: cornflowerblue; }
    .padding { background-color: skyblue; }
    .content { background-color: white; }
    colortext { border-width: 1; }
    colortext.margin, colortext.borderwidth { border-bottom-width: 0 }
  </stylesheet>

  <class name="colorview" extends="view">
    <attribute name="bgcolor" style="background-color" value="transparent"/>
    <attribute name="fgcolor" style="color" value="black"/>
  </class>
  <class name="colortext" extends="text" with="boxmodel" width="100%" multiline="true">
    <attribute name="bgcolor" style="background-color" value="transparent"/>
    <attribute name="fgcolor" style="color" value="black"/>
  </class>

  <colorview styleclass="margin" x="5" y="5">
    <colorview id="thebox" with="boxmodel" styleclass="padding" width="250">
      <colorview styleclass="content" layout="axis: y; spacing:0" width="100%">
        <text>Click me to demonstrate updating:</text>
        <text name="op"/>
        <colortext styleclass="margin">
          <handler name="onmargin" reference="thebox" method="display"/>
          <handler name="oninit" method="display"/>
          <method name="display" args="ignore">
            this.format("margin: %s", thebox.presentAttribute('margin'));
          </method>
        </colortext>
        <colortext styleclass="borderwidth">
          <handler name="onborderwidth" reference="thebox" method="display"/>
          <handler name="oninit" method="display"/>
          <method name="display" args="ignore">
            this.format("borderwidth: %s", thebox.presentAttribute('borderwidth'));
          </method>
        </colortext>
        <colortext styleclass="padding">
          <handler name="onpadding" reference="thebox" method="display"/>
          <handler name="oninit" method="display"/>
          <method name="display" args="ignore">
            this.format("padding: %s", thebox.presentAttribute('padding'));
          </method>
        </colortext>
        <attribute name="attribute" type="string"/>
        <attribute name="amount" type="number"/>
        <handler name="onclick" method="doit"/>
        <handler name="oninit" method="doit"/>
        <method name="doit" args="ignore">
          if (this.attribute) {
            thebox.setAttribute(this.attribute, thebox[this.attribute] + amount);
          }
          var r = Math.floor(Math.random()*3);
          var prefix = ['margin', 'border', 'padding'][r];
          var suffix = ['','width',''][r];
          this.attribute = prefix+['top','right','bottom','left'][Math.floor(Math.random()*4)]+suffix;
          this.amount = Math.round(Math.random()*10);
          op.format("%s += %w", attribute, amount);
        </method>
       </colorview>
    </colorview>
  </colorview>
</canvas>

boxmodel is a mixin intended for use with <view> and its subclasses.

Attributes

Name (CSS property) Type (tag) Type (js) Default Category
borderbottomwidth number Number 0 read/write
border-bottom-width The bottom border width of the view, in pixels
bordercolor color Color black read/write
border-color The bordercolor of the view
borderleftwidth number Number 0 read/write
border-left-width The left border width of the view, in pixels
borderrightwidth number Number 0 read/write
border-right-width The right border width of the view, in pixels
bordertopwidth number Number 0 read/write
border-top-width The top border width of the view, in pixels
borderwidth boxsidedimensions Boxsidedimensions 0 read/write
border-width The border width of the view, in pixels
margin boxsidedimensions Boxsidedimensions 0 read/write
margin The margin of the view, in pixels
marginbottom number Number 0 read/write
margin-bottom The bottom margin of the view, in pixels
marginleft number Number 0 read/write
margin-left The left margin of the view, in pixels
marginright number Number 0 read/write
margin-right The right margin of the view, in pixels
margintop number Number 0 read/write
margin-top The top margin of the view, in pixels
padding boxsidedimensions Boxsidedimensions 0 read/write
padding The padding of the view, in pixels
paddingbottom number Number 0 read/write
padding-bottom The bottom padding of the view, in pixels
paddingleft number Number 0 read/write
padding-left The left padding of the view, in pixels
paddingright number Number 0 read/write
padding-right The right padding of the view, in pixels
paddingtop number Number 0 read/write
padding-top The top padding of the view, in pixels