Only one request, many bg images
A Pen by Sergio Forés on CodePen.
| <header> | |
| <hgroup> | |
| <h1>Sprite SVG</h1> | |
| <h2>One svg file, many differents bg images and sizes to reuse</h2> | |
| </hgroup> | |
| </header> | |
| <main> | |
| <div class="ico-graviola">I'm so big...</div> | |
| <div class="ico-graviola-sm" title="I'm small!"></div> | |
| <div class="ico-graviola-md" title="I'm medium!"></div> | |
| <div class="ico-graviola-xl" title="I'm large!"></div> | |
| <div class="ico-goji">I'm also big</div> | |
| <div class="ico-goji-sm" title="I'm small!"></div> | |
| <div class="ico-goji-md" title="I'm medium!"></div> | |
| <div class="ico-goji-xl" title="I'm large!"></div> | |
| <div class="ico-cacaocriollo"></div> | |
| <div class="ico-cacaocriollo-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-chlorella" title="I'm a tinny icon!"></div> | |
| <div class="ico-chlorella-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-chia"></div> | |
| <div class="ico-chia-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-chia-md" title="I'm a tinny icon!"></div> | |
| <div class="ico-chia-xl" title="I'm a tinny icon!"></div> | |
| <div class="ico-amaranto" title="I'm a tinny icon!"></div> | |
| <div class="ico-amaranto-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-amaranto-md"></div> | |
| <div class="ico-amaranto-xl"></div> | |
| <div class="ico-spiroulina"></div> | |
| <div class="ico-spiroulina-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-spiroulina-md"></div> | |
| <div class="ico-spiroulina-xl"></div> | |
| <div class="ico-camucamu"></div> | |
| <div class="ico-camucamu-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-camucamu-md"></div> | |
| <div class="ico-camucamu-xl"></div> | |
| <div class="ico-canamo"></div> | |
| <div class="ico-canamo-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-canamo-md"></div> | |
| <div class="ico-canamo-xl"></div> | |
| <div class="ico-lucuma"></div> | |
| <div class="ico-lucuma-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-lucuma-md"></div> | |
| <div class="ico-lucuma-xl"></div> | |
| <div class="ico-maca"></div> | |
| <div class="ico-maca-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-maca-md"></div> | |
| <div class="ico-maca-xl"></div> | |
| <div class="ico-stevia"></div> | |
| <div class="ico-stevia-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-stevia-md"></div> | |
| <div class="ico-stevia-xl"></div> | |
| <div class="ico-quinoa"></div> | |
| <div class="ico-quinoa-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-alfalfa"></div> | |
| <div class="ico-alfalfa-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-alfalfa-md"></div> | |
| <div class="ico-alfalfa-xl"></div> | |
| <div class="ico-trigoverde"></div> | |
| <div class="ico-trigoverde-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-trigoverde-md"></div> | |
| <div class="ico-trigoverde-xl"></div> | |
| <div class="ico-algarroba"></div> | |
| <div class="ico-algarroba-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-cardomariano"></div> | |
| <div class="ico-cardomariano-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-cardomariano-md"></div> | |
| <div class="ico-cardomariano-xl"></div> | |
| <div class="ico-linodorado"></div> | |
| <div class="ico-linodorado-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-fresa"></div> | |
| <div class="ico-fresa-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-fresa-md"></div> | |
| <div class="ico-fresa-xl"></div> | |
| <div class="ico-coco"></div> | |
| <div class="ico-coco-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-coco-md"></div> | |
| <div class="ico-coco-xl"></div> | |
| <div class="ico-gymtonic"></div> | |
| <div class="ico-gymtonic-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-delifiber"></div> | |
| <div class="ico-delifiber-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-brainshake"></div> | |
| <div class="ico-brainshake-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-andeanprotein"></div> | |
| <div class="ico-andeanprotein-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-macuchino"></div> | |
| <div class="ico-macuchino-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-macuchino-md"></div> | |
| <div class="ico-macuchino-xl"></div> | |
| <div class="ico-bodtox"></div> | |
| <div class="ico-bodtox-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-bodtox-md"></div> | |
| <div class="ico-royalbreakfast"></div> | |
| <div class="ico-royalbreakfast-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-royalbreakfast-md"></div> | |
| <div class="ico-royalbreakfast-xl"></div> | |
| <div class="ico-camucao"></div> | |
| <div class="ico-camucao-sm" title="I'm a tinny icon!"></div> | |
| <div class="ico-camucao-md"></div> | |
| <div class="ico-camucao-xl"></div> | |
| </main> | |
| <footer> | |
| <small>Developed by Sergio Forés in <a class="btn" href="http://energyfruits.es"> energyfruits.es</a> web site</small> | |
| </footer> |
Only one request, many bg images
A Pen by Sergio Forés on CodePen.
| $seconds: 1s; | |
| $image-path: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/98095/'; | |
| $brand_names: graviola goji cacaocriollo chlorella chia amaranto spiroulina camucamu canamo maca lucuma stevia quinoa alfalfa trigoverde algarroba cardomariano linodorado fresa coco gymtonic delifiber brainshake andeanprotein macuchino bodtox royalbreakfast camucao; | |
| // Brand colors | |
| $color_graviola: rgb(127,116,76); | |
| $color_goji: rgb(230,25,11); | |
| $color_cacaocriollo: rgb(60,29,29); | |
| $color_chlorella: rgb(30,19,16); | |
| $color_chia: rgb(140,126,115); | |
| $color_amaranto: rgb(177,35,101); | |
| $color_spiroulina: rgb(46,56,40); | |
| $color_camucamu: rgb(101,51,60); | |
| $color_canamo: rgb(0,144,77); | |
| $color_maca: rgb(171,69,108); | |
| $color_lucuma: rgb(245,176,6); | |
| $color_stevia: rgb(0,123,74); | |
| $color_quinoa: rgb(194,41,49); | |
| $color_alfalfa: rgb(38,136,112); | |
| $color_trigoverde: rgb(74,121,47); | |
| $color_algarroba: rgb(31,20,16); | |
| $color_cardomariano: rgb(166,120,174); | |
| $color_linodorado: rgb(222,197,67); | |
| $color_fresa: rgb(226,56,3); | |
| $color_coco: rgb(129,77,35); | |
| $color_gymtonic: rgb(192,4,17); | |
| $color_delifiber: rgb(239,214,0); | |
| $color_brainshake: rgb(217,145,0); | |
| $color_andeanprotein: rgb(58,99,36); | |
| $color_macuchino: rgb(176,135,66); | |
| $color_bodtox: rgb(163,189,49); | |
| $color_royalbreakfast: rgb(113,22,17); | |
| $color_camucao: rgb(139,59,29); | |
| // Brand Colors | |
| $brand_colors: $color_graviola $color_goji $color_cacaocriollo $color_chlorella $color_chia $color_amaranto $color_spiroulina $color_camucamu $color_canamo $color_maca $color_lucuma $color_stevia $color_quinoa $color_alfalfa $color_trigoverde $color_algarroba $color_cardomariano $color_linodorado $color_fresa $color_coco $color_gymtonic $color_delifiber $color_brainshake $color_andeanprotein $color_macuchino $color_bodtox $color_royalbreakfast $color_camucao; | |
| // Posicion en el Sprite | |
| $graviola: 0; | |
| $goji: -400; | |
| $cacaocriollo: -800; | |
| $chlorella: -1200; | |
| $chia: -1600; | |
| $amaranto: -2000; | |
| $spiroulina: -2400; | |
| $camucamu: -2800; | |
| $canamo: -3200; | |
| $maca: -3600; | |
| $lucuma: -4000; | |
| $stevia: -4400; | |
| $quinoa: -4800; | |
| $alfalfa: -5200; | |
| $trigoverde: -5600; | |
| $algarroba: -6000; | |
| $cardomariano: -6400; | |
| $linodorado: -6800; | |
| $fresa: -7200; | |
| $coco: -7600; | |
| $gymtonic: -8000; | |
| $delifiber: -8400; | |
| $brainshake: -8800; | |
| $andeanprotein: -9200; | |
| $macuchino: -9600; | |
| $bodtox: -10000; | |
| $royalbreakfast: -10400; | |
| $camucao: -10800; | |
| $sprite_position: $graviola $goji $cacaocriollo $chlorella $chia $amaranto $spiroulina $camucamu $canamo $maca $lucuma $stevia $quinoa $alfalfa $trigoverde $algarroba $cardomariano $linodorado $fresa $coco $gymtonic $delifiber $brainshake $andeanprotein $macuchino $bodtox $royalbreakfast $camucao; | |
| // Asigna el elemento del sprite a cada una de las clases de la lista | |
| @each $name in $brand_names { | |
| $i: index($brand_names, $name); | |
| $elcolor: nth($brand_colors, $i); | |
| @each $tamano, $size in (sm: 10, md: 15, xl: 30) { | |
| .ico-#{$name}, .ico-#{$name}-#{$tamano}:before { | |
| background-image: url(#{$image-path}sprites.svg); | |
| background-repeat: no-repeat; | |
| background-position: center (nth($sprite_position, $i) / 92) + em; | |
| height: 4em; | |
| background-size: 10em; | |
| } | |
| .ico-#{$name} { | |
| width: 100%; | |
| font-size: 50px; | |
| line-height: 5; | |
| background-color: lighten($elcolor,5); | |
| &:hover { | |
| transition: all 1s; | |
| background-color: darken($elcolor,10); | |
| background-position: 2em (nth($sprite_position, $i) / 92) + em; | |
| } | |
| } | |
| .ico-#{$name}-#{$tamano} { | |
| position: relative; | |
| font-size: #{$size}px; | |
| } | |
| .ico-#{$name}-xl { top: -1em; } | |
| .ico-#{$name}-md { left: 70%; } | |
| .ico-#{$name}-#{$tamano}:before { | |
| content: ""; | |
| position: absolute; | |
| top: -5em; | |
| left: 0; | |
| right: 0; | |
| width: 10em; | |
| text-align: right; | |
| } | |
| .ico-#{$name}-#{$tamano}:after { | |
| content: attr(title); | |
| position: absolute; | |
| top: -4em; | |
| left: 5em; | |
| } | |
| } | |
| } | |
| body { | |
| padding: 0 20px; | |
| font-family: 'Open Sans', sans-serif; | |
| text-align: center; | |
| } | |
| .exemple { | |
| background-color: red; | |
| width: 350px; | |
| } | |
| h1 { font-size: 300%; } | |
| h2 { font-size: 200%; } | |
| small { font-size: 100%; } | |
| main { | |
| flex-direction: column; | |
| justify-content: center; | |
| } | |
| main, header, footer { | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| margin: 25px 0; | |
| } |