@ -7,77 +7,92 @@ Semantic's goal is to define a vocabulary for interface elements based on consen
For developers, this means defining class names for UI elements, outlining states that an elements can exist, and describing common variations of that element.
## How
### Download
You can use our build tool to select only the components you want
http://semantic-ui.com/download
Or download the whole kit and kaboodle
http://semantic-ui.com/ui/semantic.min.css
http://semantic-ui.com/ui/semantic.min.js
## A More Semantic Web
### Based on class
Semantic is based on class names, instead of tags. This means, except for links, tables and forms, you can use semantic with tags like ``<div><article><nav>`` without any difference.
### Context sensitive
In Semantic, variations maintain context based on the element they modify, but keep the same vocabulary between element,
just like in natural language, the adjective 'big' may have very different implications for a big planet versus a big insect.
In Semantic, variations maintain context based on the element they modify, but keep the same vocabulary between elements. Just like how in English, the adjective 'big' may describe a different scale for a big planet versus a big insect.
For example, a UI Collection like a form you may have a size variation called "large". This may tell individual elements inside the form to change in size:
For example, a form you can have a variation called "inverted". This changes the appearance of form elements to work on dark backgrounds.
```html
<divclass="ui large form"></div>
<divclass="ui inverted form"></div>
```
However the same variation can exist on an individual element and carry its own contextual meaning
The same variation can also be useful in the context of a menu.
```html
<divclass="ui large button"></div>
<divclass="ui inverted menu"></div>
```
### Defining UI
Here is part of Semantic's definition of a button
**Standard**: A button is a shape that can be pressed in to complete an action
**Standard**: A button is a shape that can be pressed in to complete an action.
```html
<divclass="ui button"></div>
```
**State**: A button can sometimes be active, or selected by the user
**State**: A button can sometimes be active, designating it is selected by the user.
```html
<divclass="ui active button">
```html
<divclass="ui active button">
```
**Variations**: A button may sometimes look different than a simple button.
```html
<divclass="ui large blue icon button">
<iclass="ui icon heart"></i>
</div>
**Variations**: A button may sometimes look different than its prototype.
```html
<divclass="ui large blue icon button">
<iclass="ui icon heart"></i>
</div>
```
**Plurality**: A button can sometimes exist in a group of buttons
``` html
<divclass="ui large blue buttons">
<divclass="ui button">
I am blue
</div>
<divclass="ui button">
I am blue too
</div>
</div>
<divclass="ui large blue buttons">
<divclass="ui button">
I am blue
</div>
<divclass="ui button">
I am blue too
</div>
</div>
```
## Types of UI
UI components are split into four categories:
* UI elements
* UI Elements
* UI Collections
* UI VIews
* UI Modules
All UI definitions are made of a neutral prototypical definition, a list of states it can occupy, and a set of common variations or "types" of that element.
All UI definitions are made of a neutral, ideal definition, a list of states it can occupy, and a set of common variations or "types" of that element.
### UI Elements
UI Elements are basic design elements. Any part of the element cannot be thought of as something separate, although they may be made up of parts. In chemistry, you can think of this as an "element".
UI Elements are interface elements which do not contain other elements inside themselves. This can be thought of as similar in definition as an "element" in chemistry.
They may also may be useful sometimes to define in plural. Groups of UI elements are always homogenous.
UI elements can have plural definitions when they are known to exist together frequently.
For example in this case each button can be described as large because we understand it is a type of large button
In this case each button will be large because we understand it is a part of the large button group
``` html
<divclass="large buttons">
<divclass="ui button">Cancel</div>
<divclass="ui positive button">Continue</div>
</div>
<divclass="large buttons">
<divclass="ui button">Cancel</div>
<divclass="ui positive button">Continue</div>
</div>
```
Examples of UI elements:
@ -88,9 +103,9 @@ Examples of UI elements:
### UI Collections
UI Collections are groups of heteregeneous UI elements which are usually found together. These can be thought of as molecules.
UI Collections are groups of heteregeneous UI elements which are usually found together. Carrying the chemistry metaphor, these can be thought of as molecules.
UI collections do not usually require all elements to be found, but they describe a list of the "usual suspects". Collections are not typically useful to define in plural.
UI collections have a definition of elements that exist, or could exist inside of them. They do not usually require all elements to be found, but they describe a list of the "usual suspects". Unlike elements, collections are not typically useful to define in plural.
Examples of UI collections:
* Forms
@ -99,7 +114,7 @@ Examples of UI collections:
* Menus
## UI Views
UI Views are common ways that UI collections are grouped together. The focus is not on providing a specific interaction, but providing a view for a website's content. These might be difficult to define completely.
UI Views are common ways to display site content. Instead of providing a specific interaction, views structure content so that it can be understood more easily.
Examples of UI views:
** Comment Feed
@ -109,7 +124,7 @@ Examples of UI views:
## UI Modules
UI modules are UI elements where it's behavior is a fundamental part of its existence.
UI modules are UI elements where it's behavior is a fundamental part of its definition. UI Modules are dependent on the javascript which carry their definition.
Examples of UI modules:
* Popups
@ -123,19 +138,5 @@ Examples of UI modules:
#### I want to contribute to the spec
Semantic is very new. We're still working out the best way to join in the discussion.
We're currently working to figure ouin [coding guidelines](http://semantic-ui.com/guidelines).
###Library
You can use our build tool to select only the components you want
http://semantic-ui.com/download
Or download the whole kit and kaboodle
http://semantic-ui.com/ui/semantic.min.css
http://semantic-ui.com/ui/semantic.min.js
Semantic is very new standard, and we need a community to become truly useful. We're working currently to determine the best ways to engage the community for contribution. If you'd like to participate feel free to reach out by e-mail [semantic@quirky.com](mailto:semantic@quirky.com)