Last active
November 13, 2016 13:57
-
-
Save mistergraphx/2fccca186e267fd92a0bcad020874b80 to your computer and use it in GitHub Desktop.
Corner Ribbon Scss component
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| .container { | |
| max-width: 600px; | |
| height: 200px; | |
| display: block; | |
| top: 100px; | |
| position: relative; | |
| margin: 0 auto; | |
| background-color: silver; | |
| } | |
| /* # Corner Ribbon | |
| Sources & Inspirations : | |
| - <http://marketmesuite.github.io/3D-CORNER-RIBBONS/> | |
| - <http://www.cssportal.com/css-ribbon-generator/> | |
| .corner-ribbon-small - Set Small Text | |
| .corner-ribbon-large - Set a larger text | |
| .corner-ribbon-black - Black | |
| .corner-ribbon-pink - Pink | |
| .corner-ribbon-red - Red | |
| Markup: | |
| <div class="corner-ribbon $modifierClass"> | |
| <div class="banner"> | |
| <div class="text">My Ribbon Text</div> | |
| </div> | |
| </div> | |
| @version - 1.0.0 | |
| Styleguide components.ui.ribbons.cornerribbons | |
| */ | |
| .corner-ribbon { | |
| /*position: absolute;*/ | |
| /*top: 0;*/ | |
| /*right: 0;*/ | |
| } | |
| /* reset certain elements (in case of conflicting CSS for classes, links, etc.) */ | |
| .corner-ribbon .text, | |
| .corner-ribbon .banner, | |
| .corner-ribbon a { | |
| margin: 0; | |
| padding: 0; | |
| border: 0; | |
| outline: 0; | |
| font-size: 100%; | |
| vertical-align: baseline; | |
| background: transparent; | |
| } | |
| .corner-ribbon a { | |
| color: #fff; | |
| text-decoration: none; | |
| } | |
| .corner-ribbon .banner { | |
| -webkit-transform: rotate(45deg); | |
| -ms-transform: rotate(45deg); | |
| transform: rotate(45deg); | |
| -webkit-font-smoothing: antialiased; | |
| display: block; | |
| float: right; | |
| position: relative; | |
| right: -14px; | |
| top: 22px; | |
| width: 100px; | |
| } | |
| .corner-ribbon .banner::after, | |
| .corner-ribbon .banner::before { | |
| content: ''; | |
| display: block; | |
| height: 12px; | |
| position: absolute; | |
| width: 30px; | |
| } | |
| .corner-ribbon .banner::before { | |
| -webkit-transform: skewY(-45deg) translate(50%, 15px); | |
| -ms-transform: skewY(-45deg) translate(50%, 15px); | |
| transform: skewY(-45deg) translate(50%, 15px); | |
| -webkit-transform-origin: 100% center; | |
| -ms-transform-origin: 100% center; | |
| transform-origin: 100% center; | |
| left: -45px; | |
| } | |
| .corner-ribbon .banner::after { | |
| -webkit-transform: translate(100%, -100%) skewY(45deg) translateX(-58%); | |
| -ms-transform: translate(100%, -100%) skewY(45deg) translateX(-58%); | |
| transform: translate(100%, -100%) skewY(45deg) translateX(-58%); | |
| -webkit-transform-origin: 0 center; | |
| -ms-transform-origin: 0 center; | |
| transform-origin: 0 center; | |
| right: -17px; | |
| } | |
| .corner-ribbon .text { | |
| position: relative; | |
| z-index: 2; | |
| padding: 6px 0; | |
| font-size: 12px; | |
| font-weight: bold; | |
| text-align: center; | |
| min-height: 18px; | |
| line-height: 18px; | |
| text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2); | |
| white-space: nowrap; | |
| text-overflow: ellipsis; | |
| } | |
| .corner-ribbon .text::before, | |
| .corner-ribbon .text::after { | |
| content: ''; | |
| display: block; | |
| height: 30px; | |
| position: absolute; | |
| top: 0; | |
| width: 100%; | |
| z-index: -1; | |
| } | |
| .corner-ribbon .text::before { | |
| -webkit-transform: translateX(-15%) skewX(-45deg); | |
| -ms-transform: translateX(-15%) skewX(-45deg); | |
| transform: translateX(-15%) skewX(-45deg); | |
| } | |
| .corner-ribbon .text::after { | |
| -webkit-transform: translateX(15%) skewX(45deg); | |
| -ms-transform: translateX(15%) skewX(45deg); | |
| transform: translateX(15%) skewX(45deg); | |
| } | |
| /*--- RIBBON COLORIZER ---*/ | |
| .corner-ribbon--tertiary .banner::after, | |
| .corner-ribbon--tertiary .banner::before { | |
| background-color: #ff8da1; | |
| } | |
| .corner-ribbon--tertiary .text::before, | |
| .corner-ribbon--tertiary .text::after { | |
| background-color: pink; | |
| } | |
| .corner-ribbon--tertiary .text { | |
| color: white; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <div class="container"> | |
| <div class="corner-ribbon corner-ribbon--tertiary"> | |
| <div class="banner"> | |
| <div class="text">My Ribbon Text</div> | |
| </div> | |
| </div> | |
| </div> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ---- | |
| // libsass (v3.3.6) | |
| // Autoprefixer: last 2 version | |
| // ---- | |
| .container{ | |
| max-width:600px; | |
| height: 200px; | |
| display: block; | |
| top:100px; | |
| position: relative; | |
| margin: 0 auto; | |
| background-color: silver; | |
| } | |
| // ---------------------------------------------------- | |
| // LIB | |
| // ---------------------------------------------------- | |
| $modernize: false; | |
| /* # Corner Ribbon | |
| Sources & Inspirations : | |
| - <http://marketmesuite.github.io/3D-CORNER-RIBBONS/> | |
| - <http://www.cssportal.com/css-ribbon-generator/> | |
| .corner-ribbon-small - Set Small Text | |
| .corner-ribbon-large - Set a larger text | |
| .corner-ribbon-black - Black | |
| .corner-ribbon-pink - Pink | |
| .corner-ribbon-red - Red | |
| Markup: | |
| <div class="corner-ribbon $modifierClass"> | |
| <div class="banner"> | |
| <div class="text">My Ribbon Text</div> | |
| </div> | |
| </div> | |
| @version - 1.0.0 | |
| Styleguide components.ui.ribbons.cornerribbons | |
| */ | |
| $corner-ribbon_prefix: 'corner-ribbon'; | |
| $corner-ribbon-banner-color-default: #51a351; | |
| $corner-ribbon-text-color-default: #62c462; | |
| .#{$corner-ribbon-prefix} { | |
| /*position: absolute;*/ | |
| /*top: 0;*/ | |
| /*right: 0;*/ | |
| } | |
| /* reset certain elements (in case of conflicting CSS for classes, links, etc.) */ | |
| .#{$corner-ribbon-prefix} .text, | |
| .#{$corner-ribbon-prefix} .banner, | |
| .#{$corner-ribbon-prefix} a { | |
| margin: 0; | |
| padding: 0; | |
| border: 0; | |
| outline: 0; | |
| font-size: 100%; | |
| vertical-align: baseline; | |
| background: transparent; | |
| } | |
| .#{$corner-ribbon-prefix} a { | |
| color: #fff; | |
| text-decoration: none; | |
| } | |
| .#{$corner-ribbon-prefix} .banner { | |
| transform: rotate(45deg); | |
| //color: #fff; | |
| -webkit-font-smoothing: antialiased; | |
| display: block; | |
| float: right; | |
| position: relative; | |
| right: -14px; | |
| top: 22px; | |
| width: 100px; | |
| } | |
| .#{$corner-ribbon-prefix} .banner::after, | |
| .#{$corner-ribbon-prefix} .banner::before { | |
| content: ''; | |
| display: block; | |
| height: 12px; | |
| position: absolute; | |
| width: 30px; | |
| } | |
| .#{$corner-ribbon-prefix} .banner::before { | |
| transform: skewY(-45deg) translate(50%,15px); | |
| transform-origin: 100% center; | |
| left: -45px; | |
| } | |
| .#{$corner-ribbon-prefix} .banner::after { | |
| transform: translate(100%,-100%) skewY(45deg) translateX(-58%); | |
| transform-origin: 0 center; | |
| right: -17px; | |
| } | |
| .#{$corner-ribbon-prefix} .text { | |
| position: relative; | |
| z-index: 2; | |
| padding: 6px 0; | |
| font-size: 12px; | |
| font-weight: bold; | |
| text-align: center; | |
| min-height: 18px; | |
| line-height: 18px; | |
| text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.20); | |
| white-space: nowrap; | |
| text-overflow: ellipsis; | |
| } | |
| .#{$corner-ribbon-prefix} .text::before, | |
| .#{$corner-ribbon-prefix} .text::after { | |
| content: ''; | |
| display: block; | |
| height: 30px; | |
| position: absolute; | |
| top: 0; | |
| width: 100%; | |
| z-index: -1; | |
| } | |
| .#{$corner-ribbon-prefix} .text::before { | |
| transform: translateX(-15%) skewX(-45deg); | |
| } | |
| .#{$corner-ribbon-prefix} .text::after { | |
| transform: translateX(15%) skewX(45deg); | |
| } | |
| @if $modernize == true { | |
| .no-css-transforms .#{$corner-ribbon-prefix} { | |
| font-size: 1em; | |
| position: relative; | |
| width: 100%; | |
| } | |
| .no-css-transforms .#{$corner-ribbon-prefix} .banner { | |
| position: static; | |
| width: 100%; | |
| float: none; | |
| font-size: 10px; | |
| } | |
| .no-css-transforms .#{$corner-ribbon-prefix} .text { | |
| height: 25px; | |
| padding: 3px; | |
| } | |
| } | |
| @mixin corner-ribbon-small(){ | |
| // Small banner | |
| .#{$corner-ribbon-prefix}--small .banner { | |
| right: -8px; | |
| top: 15px; | |
| width: 65px; | |
| } | |
| .#{$corner-ribbon-prefix}--small .banner::after, | |
| .#{$corner-ribbon-prefix}--small .banner::before { | |
| height: 6px; | |
| width: 20px; | |
| } | |
| .#{$corner-ribbon-prefix}--small .banner::before { | |
| top: -5px; | |
| left: -30px; | |
| } | |
| .#{$corner-ribbon-prefix}--small .banner::after { | |
| top: 18px; | |
| right: -12px; | |
| } | |
| // small text | |
| .#{$corner-ribbon-prefix}--small .text { | |
| padding: 3px 0; | |
| font-size: 8px; | |
| min-height: 14px; | |
| line-height: 14px; | |
| } | |
| } | |
| @mixin corner-ribbon-large(){ | |
| // large banner | |
| .#{$corner-ribbon-prefix}--large .banner { | |
| right: -20px; | |
| top: 32px; | |
| width: 150px; | |
| } | |
| .#{$corner-ribbon-prefix}--large .banner::after, | |
| .#{$corner-ribbon-prefix}--large .banner::before { | |
| height: 18px; | |
| width: 45px; | |
| } | |
| .#{$corner-ribbon-prefix}--large .banner::before { | |
| top: 9px; | |
| left: -68px; | |
| } | |
| .#{$corner-ribbon-prefix}--large .banner::after { | |
| top: 45px; | |
| right: -26px; | |
| } | |
| // large text | |
| .#{$corner-ribbon-prefix}.#{$corner-ribbon-prefix}--large .text::before, | |
| .#{$corner-ribbon-prefix}.#{$corner-ribbon-prefix}--large .text::after { | |
| height: 46px; | |
| } | |
| } | |
| /*--- RIBBON COLORIZER ---*/ | |
| @mixin colorize-corner-ribbon($banner-color: $corner-ribbon-banner-color-default, | |
| $text-color: $corner-ribbon-text-color-default | |
| ){ | |
| & .banner::after, | |
| & .banner::before { | |
| background-color: darken($banner-color, 10%); | |
| } | |
| & .text::before, | |
| & .text::after { | |
| background-color: $banner-color; | |
| } | |
| & .text { | |
| color: $text-color; | |
| } | |
| @if $modernize == true { | |
| .no-css-transforms & .text { | |
| background-color: $banner-color; | |
| } | |
| } | |
| } | |
| // ---------------------------------------------------- | |
| // USAGE | |
| // ---------------------------------------------------- | |
| $brand-color-tertiary: pink; | |
| .corner-ribbon--tertiary { | |
| @include colorize-corner-ribbon($brand-color-tertiary, white); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment