# Semantic Semantic is a set of specifications for sharing UI elements between developers. Semantic is also a UI library to make front end development simpler and easier to learn. ## The Library ### Getting Started The Semantic library describes many UI elements. In most instances it might be best to build a custom build with only the elements you need. You can use our build tool to select only the components you want http://semantic-ui.com/download Or download the entire library and build out the code yourself using [Grunt](http://gruntjs.com/) or another package management system. git clone git@github.com:quirkyinc/semantic.git If you prefer to download the whole kit and kaboodle you can grab that as well. http://semantic-ui.com/ui/semantic.min.css http://semantic-ui.com/ui/semantic.min.js ## The Specification The aim of the semantic specification is to create conventions for structuring and naming code for describing interface elements. By defining a vocabulary for interface elements based on consensus, and convention, we can increase portability of UI design. ### What it defines **For all ui**: Defines class name and html structures which can be used to represent an element **For elements**: Outlines states that an elements can exist, lists common types, or variations, of an element, and if necessary, defines how the element functions in groups. **For collections**: Defines a list of elements that it can include, and ways which variations in the collection can affect each element. **For modules**: Defines a set of behaviors the module is expected to perform. **For views**: Defines the types of content it usually contains, and a standard heirarchy for presenting the content to the user. ### How it is defined #### Based on class Semantic is based on class names, instead of tags. This means, except for links, tables and form elements, you can use semantic with tags like ``