Feature / Desired application | Bootstrap | Foundation |
---|
Responsive layouts | - Bootstrap uses fixed width containers that "snap" across breakpoints
- Grid layout needs to follow a container-row-column hierarchy. Otherwise 15px paddings / margins don't align properly.
| - Foundation uses fluid width containers that stretch and shrink depending on the size of the client, with relevant breakpoints.
- Foundation has a row-column hierarchy with paddings on the columns only. Row is only for containment.
|
Style reset | | - normalize.css is included in default package, but optional whether or not it is used in your markup.
|
Units in EMs | Current release (v3) uses pixels and not EMs. However, v4 (unreleased) will support EMs. See Mark Otto's January 9th response in this thread on Github. - Note: EMs will be supported. Unclear if REMs will be used.
- UIO works well with Bootstrap's pixel units, although EMs are more desirable.
| Foundation 5 uses REM units throughout. The exception being media queries which use EM units.- REMs are desirable and easier to use for CSS styling than EM because REMs always refer to the root EM and not the parent EM as with EM units.
- REM units currently do not scale properly in UI Options. See
Jira |
---|
server | Fluid Project Issue Tracker |
---|
key | FLUID-4698 |
---|
|
|
Ease of using default styles in a heavily customized application | - +/-15px margin and padding on container, rows, and columns dictate a hierarchy and usage pattern. Customizing this or deviating from this pattern causes unintentional and unwanted alignment issues which can be hard to correct (involves overriding).
- This hierarchy is required to ensure good scalable layouts.
| - Working with Foundation within a heavily customized application seemed very straight forward. Some styles needed to be overridden, but that was expected.
- Foundation button has !important for font weight
|
Use of !important | - important used for print media styling, visibility of collapsing navbar, and visible and hidden elements.
- no use of !important on html elements
| - Important primarily used to position starting and ending Foundation classes such as offsets, start and end of navigation containers, hide/show elements (i.e. "hide-for-large"), and custom components (like Joyride widget).
- Uses of !important on html elements
- button: font-weight: normal !important;
- select: webkit - appearance: none !important;
|
Namespacing framework classnames | - Bootstrap uses generic classnames which may cause classname collisions.
- A work-around is to use LESS or Sass to add a named container. See this as a possible solution: https://coderwall.com/p/uiwcow
| |
UIO Theme generation | - Themes can be created using the online tool but it is not a quick process and error prone: http://getbootstrap.com/customize/
- Themes can also be created by modifying the variables.less file
- There are a lot of variables to configure, experimentation will be needed to determine the effect of each variable and which variables should be modified for a theme.
| - Background colour can not be changed using the online customization tool: http://foundation.zurb.com/develop/download.html#customizeFoundation
- Themes can be created by modifying the _settings.scss file
- There are a lot of variables to configure, experimentation will be needed to determine the effect of each variable and which variables should be modified for a theme.
|
Effects of custom Foundation build with another framework | | - REM sizing may be an issue (see below)
- Namespace collisions make integrating another framework difficult
|
Possible Learner Prefs with CSS Framework | - Bootstrap components can be turned into a Learner Preference.
- For example:
- Linearize / stack content by changing the grid layout
- Navigation bar preferences: make tabs look like pills, make navigation pills stack
- Pager: size, appearance, spacing
- Alerts: change the way alerts are positioned or styled (i.e. make them bigger, put them in a floating panel etc.)
- Hide / show screenreader-only content (elements with "sr-only" class).
| - Like Bootstrap, Foundation features can be turned into Learner Preferences
- For example:
- Linearize / stack content by changing grid layout
- Reposition side navigation
- Turn sub-nav (frequently used for filtering lists) from horizontal list into a drop-down menu.
- Change the way link-buttons (links that look like buttons) appear
- Make progress bars bigger and appear in different colours.
|
Example implementation of Fluidproject.org design | https://github.com/acheetham/fluidproject.org/tree/FLUID-5261 | https://github.com/jhung/fluidproject.org/tree/FLUID-5262 |