It's a display of tabular data, using divs because I needed a nice and friendly display for mobile.
Color coding, badges and icons
A Pen by Laura Moraiti on CodePen.
| .row-hr | |
| .title Title | |
| .meta-data | |
| .col.time Time | |
| .col.zone Zone | |
| .col.notes Notes | |
| .col.status Status | |
| .row | |
| .title Yummy title about chocolate birthday cakes and balloons and cakes and balloons | |
| .meta-data | |
| .col.time 2hrs | |
| .col.zone Recipes | |
| .col.notes | |
| .yes | |
| .col.status | |
| .row.urgent | |
| .title This is an example of a title of a news piece about cats and birthday cakes | |
| .meta-data | |
| .col.time 10mins | |
| .col.zone Recipes | |
| .col.notes | |
| .no | |
| .col.status | |
| .icon-urgent | |
| .row | |
| .title Yummy title about chocolate birthday cakes and balloons and cakes and balloons | |
| .meta-data | |
| .col.time 2hrs | |
| .col.zone Recipes | |
| .col.notes | |
| .no | |
| .col.status | |
| .icon-seen | |
| .row | |
| .title Yummy title about chocolate birthday cakes and balloons and cakes and balloons | |
| .meta-data | |
| .col.time 2hrs | |
| .col.zone Recipes | |
| .col.notes | |
| .yes | |
| .col.status | |
| .icon-seen | |
| .row.rejected | |
| .title This is an example of a title of a news piece about cats and birthday cakes | |
| .meta-data | |
| .col.time 10mins | |
| .col.zone Recipes | |
| .col.notes | |
| .no | |
| .col.status | |
| .icon-rejected | |
| .row | |
| .title Yummy title about chocolate birthday cakes and balloons and cakes and balloons | |
| .meta-data | |
| .col.time 2hrs | |
| .col.zone Recipes | |
| .col.notes | |
| .yes | |
| .col.status | |
| .icon-seen | |
| .row.published | |
| .title Yummy title about chocolate birthday cakes and balloons and cakes and balloons | |
| .meta-data | |
| .col.time 2hrs | |
| .col.zone Recipes | |
| .col.notes | |
| .no | |
| .col.status | |
| .icon-published |
It's a display of tabular data, using divs because I needed a nice and friendly display for mobile.
Color coding, badges and icons
A Pen by Laura Moraiti on CodePen.
| @function map-fetch($map, $keys) { | |
| $key: nth($keys, 1); | |
| $length: length($keys); | |
| $value: map-get($map, $key); | |
| @if ($length > 1) { | |
| $rest: (); | |
| @for $i from 2 through $length { | |
| $rest: append($rest, nth($keys, $i)) | |
| } | |
| @return map-fetch($value, $rest) | |
| } @else { | |
| @return $value; | |
| } | |
| } | |
| @mixin sch($map, $tree) { | |
| @each $theme in map-keys(map-get($map, $tree)) { | |
| $color: map-fetch($map, $tree $theme color); | |
| $font: map-fetch($map, $tree $theme font); | |
| $cursor: map-fetch($map, $tree $theme cursor); | |
| $badge: map-fetch($map, $tree $theme badge); | |
| .row.#{$theme} { | |
| cursor: #{$cursor}; | |
| * { | |
| color: $color; | |
| cursor: #{$cursor}; | |
| } | |
| .title { | |
| font-weight: $font; | |
| &:before { | |
| content: '#{$theme}'; | |
| font-weight: $badge; | |
| background-color: $color; | |
| @extend %badge; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| @mixin media($break, $limit: '') { | |
| @if($limit == '') { | |
| $limit: max; | |
| } | |
| @media (#{$limit}-width: $break) { | |
| @content; | |
| } | |
| } | |
| * { | |
| box-sizing: border-box; | |
| font-family: 'Source Sans Pro', sans-serif; | |
| } | |
| body { | |
| padding: 2em; | |
| } | |
| $blue: #0B7DCF; | |
| $main-color: darken($blue, 25%); | |
| $light: #A5CFEE; | |
| $lighter: lighten($light, 12.5%); | |
| $mid: darken($light, 35%); | |
| $break: 500px; | |
| $padding: 1rem; | |
| $green: #7AC558; | |
| $red: rgba(darken(red, 10%), .5); | |
| $config: ( | |
| themes: ( | |
| urgent: ( | |
| color: $green, | |
| badge: 400 | |
| ), | |
| rejected: ( | |
| color: $red, | |
| font: 400, | |
| cursor: 'not-allowed !important' | |
| ), | |
| published: ( | |
| color: $light, | |
| font: 400, | |
| cursor: 'default !important' | |
| ) | |
| ) | |
| ); | |
| %title { | |
| font-weight: 700; | |
| color: $main-color; | |
| padding: $padding * 1.5 $padding; | |
| @include media($break) { | |
| padding: $padding; | |
| } | |
| } | |
| %copy { | |
| color: $mid; | |
| } | |
| %uppercase { | |
| text-transform: uppercase; | |
| font-size: .85em; | |
| color: $mid; | |
| } | |
| %table-head { | |
| color: $light; | |
| font-size: 1.25em; | |
| } | |
| %dot { | |
| width: 7px; | |
| height: 7px; | |
| border-radius: 100%; | |
| @include media($break + 1, min) { | |
| margin-top: -4px; | |
| } | |
| } | |
| %center-to-left { | |
| text-align: center; | |
| @include media ($break) { | |
| text-align: left; | |
| } | |
| } | |
| %badge { | |
| text-transform: uppercase; | |
| margin-right: .5em; | |
| font-size: 80%; | |
| color: #fff; | |
| padding: 1px 3px; | |
| border-radius: 3px; | |
| } | |
| .icon-seen, | |
| .icon-urgent { | |
| font-size: 1.25em; | |
| } | |
| .icon-seen { | |
| color: $main-color; | |
| } | |
| .row { | |
| border-bottom: 1px solid $lighter; | |
| position: relative; | |
| * { | |
| display: inline-block; | |
| vertical-align: middle; | |
| } | |
| .title { | |
| width: 50%; | |
| cursor: pointer; | |
| @extend %title; | |
| @include media($break + 1, min) { | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| } | |
| @include media($break) { | |
| display: block; | |
| width: 100%; | |
| clear: left; | |
| } | |
| } | |
| .meta-data { | |
| width: 50%; | |
| > * { | |
| width: 25%; | |
| padding: 0 $padding / 2; | |
| cursor: pointer; | |
| @include media($break) { | |
| width: auto; | |
| display: inline-block; | |
| } | |
| } | |
| @include media($break) { | |
| position: relative; | |
| display: block; | |
| width: 100%; | |
| clear: left; | |
| background-color: rgba($light, .10); | |
| padding: $padding; | |
| } | |
| .col { | |
| @include media($break) { | |
| &:before { | |
| display: block; | |
| text-transform: uppercase; | |
| font-size: .7em; | |
| } | |
| } | |
| } | |
| } | |
| .time { | |
| @extend %copy; | |
| @include media($break) { | |
| &:before {content: 'Time';} | |
| } | |
| } | |
| .zone { | |
| @extend %uppercase, %center-to-left; | |
| @include media($break) { | |
| font-size: 1em; | |
| &:before {content: 'Zone';} | |
| } | |
| } | |
| .notes { | |
| @extend %uppercase, %center-to-left; | |
| @include media($break) { | |
| &:before {content: 'Notes';} | |
| } | |
| .yes { | |
| @extend %dot; | |
| background-color: $green; | |
| } | |
| .no { | |
| @extend %dot; | |
| background-color: rgba(black, .15); | |
| } | |
| } | |
| .status { | |
| @extend %center-to-left; | |
| @include media($break) { | |
| float: right; | |
| position: absolute; | |
| top: 50%; | |
| right: $padding / 2; | |
| margin-top: -.75em; | |
| * { | |
| font-size: 1.5em; | |
| } | |
| } | |
| } | |
| } | |
| @include sch($config, themes); | |
| // Caption | |
| .row-hr { | |
| background-color: lighten($light, 18%); | |
| * { | |
| display: inline-block; | |
| } | |
| .title, | |
| .col { | |
| @extend %table-head; | |
| } | |
| .title { | |
| width: 50%; | |
| padding: $padding; | |
| } | |
| .meta-data { | |
| width: 50%; | |
| * { | |
| width: 25%; | |
| padding: 0 $padding / 2; | |
| } | |
| @include media($break) { | |
| display: none; | |
| } | |
| } | |
| .notes, .status, .zone { | |
| text-align: center; | |
| } | |
| } |