Source on Github

Compass Horizontal List

Easy mode using simple descendant li selectors:


Advanced mode: If you need to target the list items using a different selector then use +horizontal-list-container on your ul/ol and +horizontal-list-item on your li. This may help when working on layouts involving nested lists. For example:

  > li

This file can be imported using: @import "compass/typography/lists/horizontal-list"


  1. Bullets – Mixins for managing list bullets.
  2. Clearfix – Mixins for clearfixing.
  3. Float – Mixins for cross-browser floats.
  4. Reset – Mixins for resetting elements (old import).


view source

@mixin horizontal-list-container {
  @include reset-box-model;
  @include clearfix;

Can be mixed into any selector that target a ul or ol that is meant to have a horizontal layout. Used to implement +horizontal-list.

view source

=horizontal-list-item($padding: 4px, $direction: left)
  white-space: nowrap
  @if $padding
      left: $padding
      right: $padding
    &:first-child, &.first
      padding-#{$direction}: 0
      padding-#{opposite-position($direction)}: 0
      padding-#{opposite-position($direction)}: 0
@mixin horizontal-list-item($padding: 4px, $direction: left) {
  @include no-bullet;
  white-space: nowrap;
  @include float($direction);
  @if $padding {
    padding: {
      left: $padding;
      right: $padding;
    &:first-child, &.first {
      padding-#{$direction}: 0;
    &:last-child {
      padding-#{opposite-position($direction)}: 0;
    &.last {
      padding-#{opposite-position($direction)}: 0;

Can be mixed into any li selector that is meant to participate in a horizontal layout. Used to implement +horizontal-list.

:last-child is not fully supported see for the support matrix

IE8 ignores rules that are included on the same line as :last-child see for details

Setting $padding to false disables the padding between list elements

view source

=horizontal-list($padding: 4px, $direction: left)
    +horizontal-list-item($padding, $direction)
@mixin horizontal-list($padding: 4px, $direction: left) {
  @include horizontal-list-container;
  li {
    @include horizontal-list-item($padding, $direction);

A list(ol,ul) that is layed out such that the elements are floated left and won't wrap. This is not an inline list.

Setting $padding to false disables the padding between list elements