# qooxdoo

Home » Manual (v2.1.1) » qx.Website » Technical view on the low-level APIs

# Technical view on the low-level APIs

Note

This document describes implementation details. The user API is covered in qx.Website and the corresponding overview documentation.

## qx.bom - Browser Object Model

The classes contained in the `qx.bom` namespace provide a cross-browser abstraction layer for object classes of the browser JavaScript runtime.

The BOM classes mainly consists of the following three parts:

- DOM element manipulation
- wrappers for native layers/objects
- powerful low-level helper classes

See the API reference of qx.bom for more details.

### DOM element manipulation

The `qx.bom.element` package allows you to manipulate DOM elements in almost any way you can think of. Each class is offering several `static` methods that take a DOM element as their first argument. Since those BOM classes are static, no instances need to be created in order to manipulate a DOM element in the document.

The following manipulations are offered by the `qx.bom.element` package:

- Dimension and location
- Box-sizing - supports the modes `content-box` (W3C model) and `border-box` (Microsoft model)
- Scroll and overflow
- Style querying and modification
- CSS class name support - supports multiple class names for each element
- Scroll elements into view
- powerful low-level decoration support
- cross-browser support for opacity - optimized for animations
- CSS3 transforms and animations
- Attribute/Property handling
- Background images and support for the clip property
- Cursor property

### Wrapper for native layers/objects

These classes offer an unique and powerful way to deal with native layers and objects. Wrappers exist for:

- the current document
- DOM elements to be connected to qooxdoo's event system
- native event management
- flash embedding
- CSS font styles
- several native controls like `iframe`, `form elements`, `label` and `image` elements

As every object or layer is abstracted by a corresponding qooxdoo class you can use these BOM classes to interact without worrying about the underlying browser used.

### Additional classes

These additional classes help in developing low-level, cross-browser applications.

Features include:

- unified XMLHttp transport implementation
- powerful client detection classes
- low-level `Range` and `Selection` API
- helper class for browser history
- wrapper for working with CSS stylesheets
- string utility class
- helper class for the client's viewport
- helper class for VML

## qx.dom - Cross-browser DOM manipulation

The Document Object Model (DOM) is a tree model that represents the document in a browser. The classes provided by this packages allow you to query, to manipulate (i.e. add, remove, change order or replace) and to check the nodes contained in the DOM.

Currently the `qx.dom` package consists of three classes:

- Element: manages children structures, inserts, removes and replaces nodes
- Hierarchy: for querying nodes
- Node: basic node creation and type detection

See the API reference of qx.dom for more details.

## qx.xml - XML handling

This package is all about working with XML documents in a cross-browser way. Its three classes are:

- Document: creating an XML document
- Element: API to select, query and serialize XML elements
- String: escaping and unescaping of XML strings

See the API reference of qx.xml for more details.