.. title:: MochiKit.Style - painless Style manipulation API Name ==== MochiKit.Style - painless Style manipulation API Synopsis ======== :: var messagePos = getElementPosition('message'); var messageSize = getElementDimensions('message'); var notifyPos = new MochiKit.Style.Coordinates( messagePos.x + messageSize.w + 10, messagePos.y); setElementPosition('notify', notifyPos); Description =========== Refactored from :mochiref:`MochiKit.DOM`. Dependencies ============ - :mochiref:`MochiKit.Base` - :mochiref:`MochiKit.DOM` Overview ======== Refactored from :mochiref:`MochiKit.DOM`. Element Visibility ------------------ The :mochiref:`hideElement` and :mochiref:`showElement` functions are provided as a convenience, but only work for elements that are ``display: block``. For a general solution to showing, hiding, and checking the explicit visibility of elements, we recommend using a solution that involves a little CSS. Here's an example:: MochiKit doesn't ship with such a solution, because there is no reliable and portable method for adding CSS rules on the fly with JavaScript. API Reference ============= Functions --------- :mochidef:`getStyle(element, cssSelector)`: Looks up a CSS property for the given element. The element can be specified as either a string with the element's ID or the element object itself. ``cssSelector``: The CSS selector, e.g. ``background-color``. *Availability*: Available in MochiKit 1.4+ :mochidef:`setStyle(element, styles)`: Set CSS properties on a the given element. The element can be specified as either a string with the element's ID or the element object itself. ``styles``: Dictionnary holding CSS properties to set, e.g. ``{'background-color': 'red', 'opacity': 0.5}``. *Availability*: Available in MochiKit 1.4+ :mochidef:`setOpacity(element, opacity)`: Sets ``opacity`` for ``element``. Valid ``opacity`` values range from 0 (invisible) to 1 (opaque). ``element`` is looked up with :mochiref:`getElement`, so string identifiers are also acceptable. *Availability*: Available in MochiKit 1.4+ :mochidef:`getElementDimensions(element[, contentSize=false])`: Return the absolute pixel width and height of ``element`` as an object with ``w`` and ``h`` properties, or ``undefined`` if ``element`` is not in the document. The size will include padding and border, but not margins, unless ``contentSize`` is set to true, in which case the size will be only the content size, without padding and border. ``element`` may be specified as a string to be looked up with :mochiref:`getElement`, a DOM element, or trivially as an object with ``w`` and/or ``h`` properties. *Availability*: Available in MochiKit 1.4+ :mochidef:`setElementDimensions(element, dimensions[, units='px'])`: Sets the dimensions of ``element`` in the document from an object with ``w`` and ``h`` properties. Warning: IE in quirks-mode seems to behave strange when you set the height off an element containing text to 0. You can workaround this by setting the value of visibly/display. ``element``: A reference to the DOM element to update (if a string is given, :mochiref:`getElement(node)` will be used to locate the node) ``dimensions``: An object with ``w`` and ``h`` properties. You can also specify only one property. ``units``: Optionally set the units to use, default is ``px`` *Availability*: Available in MochiKit 1.4+ :mochidef:`getElementPosition(element[, relativeTo={x: 0, y: 0}])`: Return the absolute pixel position of ``element`` in the document as an object with ``x`` and ``y`` properties, or ``undefined`` if ``element`` is not in the document. ``element`` may be specified as a string to be looked up with :mochiref:`getElement`, a DOM element, or trivially as an object with ``x`` and/or ``y`` properties. If ``relativeTo`` is given, then its coordinates are subtracted from the absolute position of ``element``, e.g.:: var elemPos = getElementPosition(elem); var anotherElemPos = getElementPosition(anotherElem); var relPos = getElementPosition(elem, anotherElem); assert( relPos.x == (elemPos.x - anotherElemPos.x) ); assert( relPos.y == (elemPos.y - anotherElemPos.y) ); ``relativeTo`` may be specified as a string to be looked up with :mochiref:`getElement`, a DOM element, or trivially as an object with ``x`` and/or ``y`` properties. *Availability*: Available in MochiKit 1.4+ :mochidef:`setElementPosition(element, position[, units='px'])`: Sets the absolute position of ``element`` in the document from an object with ``x`` and ``y`` properties. ``element``: A reference to the DOM element to update (if a string is given, :mochiref:`getElement(node)` will be used to locate the node) ``position``: An object with ``x`` and ``y`` properties. You can also specify only one property. ``units``: Optionally set the units to use, default is ``px`` *Availability*: Available in MochiKit 1.4+ :mochidef:`makePositioned(element)`: Ensure that ``element.style.position`` is set to ``"relative"`` if it is not set or is ``"static"``. If ``element`` is a string, then it will be looked up with :mochiref:`getElement`. *Availability*: Available in MochiKit 1.4.1+ :mochidef:`undoPositioned(element)`: Restore the setting of ``element.style.position`` set by :mochiref:`makePositioned(element)`. If ``element`` is a string, then it will be looked up with :mochiref:`getElement`. *Availability*: Available in MochiKit 1.4.1+ :mochidef:`makeClipping(element)`: Ensure that ``element.style.overflow = 'hidden'``. If ``element`` is a string, then it will be looked up with :mochiref:`getElement`. Returns the original values of ``overflow``, ``overflow-y`` and ``overflow-y`` so that they may be restored with :mochiref:`undoClipping(element, overflow)`. *Availability*: Available in MochiKit 1.4.1+ :mochidef:`undoClipping(element, overflow)`: Restore the setting of ``element.style.overflow`` set by :mochiref:`makeClipping(element)`. If ``element`` is a string, then it will be looked up with :mochiref:`getElement`. *Availability*: Available in MochiKit 1.4.1+ :mochidef:`setDisplayForElement(display, element[, ...])`: Change the ``style.display`` for the given element(s). Usually used as the partial forms: - :mochiref:`showElement(element, ...)` - :mochiref:`hideElement(element, ...)` Elements are looked up with :mochiref:`getElement`, so string identifiers are acceptable. For information about the caveats of using a ``style.display`` based show/hide mechanism, and a CSS based alternative, see `Element Visibility`_. *Availability*: Available in MochiKit 1.4+ :mochidef:`showElement(element, ...)`: Partial form of :mochiref:`setDisplayForElement`, specifically:: partial(setDisplayForElement, "block") For information about the caveats of using a ``style.display`` based show/hide mechanism, and a CSS based alternative, see `Element Visibility`_. *Availability*: Available in MochiKit 1.4+ :mochidef:`hideElement(element, ...)`: Partial form of :mochiref:`setDisplayForElement`, specifically:: partial(setDisplayForElement, "none") For information about the caveats of using a ``style.display`` based show/hide mechanism, and a CSS based alternative, see `Element Visibility`_. *Availability*: Available in MochiKit 1.4+ :mochidef:`getViewportDimensions()`: Return the pixel width and height of the viewport as an object with ``w`` and ``h`` properties. *Availability*: Available in MochiKit 1.4+ :mochidef:`getViewportPosition()`: Return the pixel position of the viewport inside the window, as a :mochiref:`Coordinates` object. *Availability*: Available in MochiKit 1.4+ Objects ------- :mochidef:`Coordinates(x, y)`: Constructs an object with ``x`` and ``y`` properties. ``obj.toString()`` returns something like ``{x: 0, y: 42}`` for debugging. *Availability*: Available in MochiKit 1.4+ :mochidef:`Dimensions(w, h)`: Constructs an object with ``w`` and ``h`` properties. ``obj.toString()`` returns something like ``{w: 0, h: 42}`` for debugging. *Availability*: Available in MochiKit 1.4+ Authors ======= - Bob Ippolito - Beau Hartshorne Copyright ========= Copyright 2005-2006 Bob Ippolito , and Beau Hartshorne . This program is dual-licensed free software; you can redistribute it and/or modify it under the terms of the `MIT License`_ or the `Academic Free License v2.1`_. .. _`MIT License`: http://www.opensource.org/licenses/mit-license.php .. _`Academic Free License v2.1`: http://www.opensource.org/licenses/afl-2.1.php