/** * This is a pseudo SCSS file to test Kate's SCSS syntax highlighting. */ /* Properties */ body { font-size: 15pt; font-family: Verdana, Helvetica, "Bitstream Vera Sans", sans-serif; margin-top: 0px; /* yet another comment */ margin-bottom: 0px; // this is no comment, it's just broken! background-color: hsl(0, 0%, calc(95% - 3%)); font-family: "Droid Sans", Arial, sans-serif; font-size: 11pt; line-height: 1.5em; background: #fff000; text-shadow: 0 0 2px rgba(0, 0, 0, 0.3); box-sizing: border-box; font-variant-alternates: styleset(nice-style); } /* Selectors */ body, blockquote { margin: 0; } header #logo { width: 100px; } div#footer .link { color: blue; } .something { margin-right: 0px; color: #cdd; color: #AAFE04; color: rgb(10%,30%,43%); background: maroon; } sidebar #subscribe .subscribe_form input[type="text"] { font-size: 20px; } sidebar #subscribe .subscribe_form:nth-child(2n + 1):hover input[class*="small-"] { font-weight: bold; } input[value=text] input[value= text ] input[value= text i] input[value= "text" i] input[value=i] input[value= i] { font-size: 20px; } #header, a:hover, p.intro:first-letter, p:lang(nl), img[align="right"] { border: 1px solid Qt::red !important; -moz-border-radius: 15px; /* unknown properties render italic */ } .nice-look { } ul { list-style: thumbs; } /* SVG <a> */ svg|a {} /* XHTML and SVG <a> */ *|a {} *{} .class{} #id{} :hover{} :lang(fr){} E{} E F{} E>F{} E > F{} E~F{} E ~ F{} E:first-child{} E:visited{} E::after{} E:lang(c){} E:lang(fr-ca){} E + F{} E+F{} E[foo]{} E[foo=warning]{} E[foo="warning"]{} E[foo~="warning"]{} E[foo^="warning"]{} E[foo$="warning"]{} E[foo*="warning"]{} E[lang|="en"]{} DIV.warning{} DIV .warning{} E#myid{} E #myid{} E,E{} E, E{} E ,E{} E , E{} p:nth-child(2) { background: red; } /* Elements that are not <div> or <span> elements */ body :not(div):not(span) { font-weight: bold; } /* Elements that are not `.crazy` or `.fancy` */ /* Note that this syntax is not well supported yet. */ body :not(.crazy, .fancy) { font-family: sans-serif; } :nth-child(odd) { color: lime; } :nth-child(even) { color: lime; } :nth-child(4) { color: lime; } :nth-child(4n) { color: lime; } :nth-child(3n+4) { color: lime; } :nth-child(-n+3) { color: lime; } :nth-child(n+8):nth-child(-n+15) { color: lime; } .first span:nth-child(2n+1), .second span:nth-child(2n+1), .third span:nth-of-type(2n+1) { background-color: lime; unknown-property: lime; } :root{ --foo: if(x > 5) this.width = 10; /* valid custom property, invalid in any normal property */ } :root, :root:lang(en) {--external-link: "external link";} :root:lang(de) {--external-link: "externer Link";} a[href^="http"]::after {content: " (" var(--external-link) ")"} one { --foo: 10px; } two { --bar: calc(var(--foo) + 10px); } three { --foo: calc(var(--bar) + 10px); } .foo { --gap: 20; margin-top: var(--gap)px; /*20 px*/ margin-top: calc(var(--gap) * 1px); /*20px*/ } foo { width: calc(50% -8px); /* invalid */ width: calc(50%- 8px); /* invalid */ width: calc(50% +8px); /* invalid */ width: calc(50%+ 8px); /* invalid */ width: calc(2px -var(--a)); /* invalid */ width: calc(50%*-8px); width: calc(50% - 8px); width: calc(50% + -8px); width: calc(50% +(8px)); width: calc(2px -(var(--a))); } sweet-alert input:focus::-moz-placeholder { -webkit-transition: opacity 0.3s 0.03s ease; transition: opacity 0.3s 0.03s ease; opacity: 0.5; } @font-feature-values Font One { @styleset { nice-style: 12; } } @font-feature-values Font Two { @styleset { nice-style: 4; } } @font-palette-values --identifier { font-family: Bixa; } @counter-style thumbs { system: cyclic; symbols: "\1F44D"; suffix: " "; } @font-face { font-family: "Open Sans"; /* comments */ unknown: 2px; src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2"), url("/fonts/OpenSans-Regular-webfont.woff") format("woff"); } @page { margin: 1cm; } @page :first { margin: 2cm; /* comments */ marks: crop cross; } @page :unknown { margin: 2cm; } @document url("https://www.example.com/") { h1 { color: green; } } @charset "UTF-8"; @import 'custom.css'; @import "common.css" screen; @import url("fineprint.css") print; @import url(fineprint.css) print; @import url('bluish.css') speech; @import url("chrome://communicator/skin/"); @import url('landscape.css') screen and (orientation:landscape); @import url("othersheet.css") screen, print; @namespace url(http://www.w3.org/1999/xhtml); @namespace svg url(http://www.w3.org/2000/svg); /* Animation (Keyframes) */ @keyframes important1 { from { margin-top: 50px; } 50% { margin-top: 150px !important; } /* ignored */ to { margin-top: 100px; } } @keyframes important2 { from { margin-top: 50px; margin-bottom: 100px; } to { margin-top: 150px !important; /* ignored */ margin-bottom: 50px; } } @keyframes slidein { from { margin-left: 100%; width: 300%; } to { margin-left: 0%; width: 100%; } } /* Media Queries */ @media print { .container { width: 100%; } a:hover { color: red } /* comments */ a:hover { color: red } #header { display: none; } } @media screen and (orientation: landscape) { .sidebar { width: 500px; } } @media screen and (min-width: 768px) and (max-width: 960px) { .container { width: 720px; } } @media (max-width: 600px) { .sidebar { display: none; } } @media print { } @media (height > 600px) { body { line-height: 1.4; } } @media (400px <= width <= 700px) { body { line-height: 1.4; } } @supports (display: grid) { div { display: grid; } } @supports font-tech(color-COLRv1) { div {} } @supports not (not (transform-origin: 2px)) { div {} } @supports (display: grid) and (not (display: inline-grid)) { div {} } /* * CSS Syntax Highlight Sample File (Standard) * * This file contains most CSS syntax, CSS3 properties, @media, @font-face and * @keyframes annotations. * * @author Guo Yunhe guoyunhebrave@gmail.com * @date 2016-09-16 */ /* * Block comment * * Alert keywords: * TODO BUG FIXME */ /* Region markers */ /*BEGIN Comment */ /*END Comment */ /* * CSS Syntax Highlight Sample File (Complex) * * This file contains complex CSS syntax that can test unexpected situations. * * @author Guo Yunhe guoyunhebrave@gmail.com * @date 2016-09-16 */ /* Comments with special content */ /* * .class-selector #id "string" 'comment' // comment {} [] () /* comment * TODO BUG DEBUG * body { * margin: 0 !important; * } */ /* Comments in special positions */ header/* comment here */.active /* comment here */ { /* comment here */ color : /* comment here */ blue/* comment here */; font-family: Arial /* comment here */, "Droid Sans", /* comment here */ sans-serif/* comment here */; } @media screen /* comment here */ and (max-width: 300px /* comment here */) /* comment here */ {/* comment here */} /* Strings with special content */ @import url("{} $variable /* comment */"); /* Without extra breaklines and spaces */ pre.primary:hover.large:nth-child(2n-1){font-size:17px;font-family:"Noto Sans";-webkit-box-shadow:1px 1px 3px rgba(0,0,0,0.3)} /* With unnecessary breaklines and spaces */ blockquote .ref { flex : 0 1 30%; flex-wrap : wrap; } @media screen and (orientation: landscape) { .sidebar { width: 500px; } } /* Special selectors: HTML5 allows user defined tags */ header { flex { width: 300px; } } /* CSS Nesting */ header { .abc { width: 300px; } width: 300px; & width:hover { width: 300px; } width: 300px; } /** * SCSS https://sass-lang.com/documentation/file.SASS_REFERENCE.html */ // These comments are only one line long each. // They won't appear in the CSS output, // since they use the single-line comment syntax. #sidebar { width: grid-width(5); } #main { content: $content; new-content: $new_content; } #main { $width: 5em !global; width: $width; } #main { @import "example"; } #main { color: black; &-sidebar { border: 1px solid; } } #main p { color: #00ff00; width: 97%; .redbox { background-color: #ff0000; color: #000000; } } #main { color: black; a { font-weight: bold; &:hover { color: red; } } } .sidebar { float: left; margin-left: pow(4, 3) * 1px; } .banner { background-color: $primary-color; color: scale-color($primary-color, $lightness: +40%); } .micro { width: sum(50px, 30px, 100px); width: min($widths...); } a.funky:hover { font: 20px/24px fantasy { weight: bold; } } .foo.bar .baz.bang, .bip.qux { $selector: &; } ul, ol { text-align: left; & & { padding: { bottom: 0; left: 0; } } font-size: scale-below(20px, 16px); border-radius: $border-radius; box-shadow: $box-shadow; } ul li { $padding: 16px; padding-left: $padding; [dir=rtl] & { padding: { left: 0; right: $padding; } } } div { background-image: url("/icons/#{$name}.svg"); font: #{"string"}; } p { font: 10px/8px; // Plain CSS, no division $width: 1000px; width: $width/2; // Uses a variable, does division width: round(1.5)/2; // Uses a function, does division height: (500px/2); // Uses parentheses, does division margin-left: 5px + 8px/2px; // Uses +, does division font: (italic bold 10px/8px); // In a list, parentheses don't count } p { $font-size: 12px; $line-height: 30px; font: #{$font-size}/#{$line-height}; } p { color: #010203 + #040506; color: rgba(255, 0, 0, 0.75) + rgba(0, 255, 0, 0.75); } p { color: opacify($translucent-red, 0.3); background-color: transparentize($translucent-red, 0.25); } div { filter: progid:DXImageTransform.Microsoft.gradient(enabled='false', startColorstr='#{ie-hex-str($green)}', endColorstr='#{ie-hex-str($translucent-red)}'); } p { cursor: e + -resize; } p { width: 1em + (2em * 3); width: #{$n}px; } p { color: hsl($hue: 0, $saturation: 100%, $lightness: 50%); } :root { --font-family-sans-serif: #{inspect($font-family-sans-serif)}; --font-family-monospace: #{inspect($font-family-monospace)}; } p:before { font-family: sans- + "serif"; content: "Foo " + Bar; content: "I ate #{5 + 10} pies!"; content: "I ate #{$value} pies!"; } a { font-weight: bold; text-decoration: none; &:hover { text-decoration: underline; } body.firefox & { font-weight: normal; } } #context a%extreme a %extreme { color: blue; font-weight: bold; font-size: 2em; } %strong-alert:hover { color: red; } .alert:hover, %strong-alert { font-weight: bold; } p.#{$name} { #{$attr}-color: blue; } p { background: { color: red; } background-#{prop}: red; #{prop}-color: red; #a#{""}c .a#{""}c a#{""}c { } } .icon-#{$name} { position: absolute; #{$top-or-bottom}: 0; -#{$prefix}-#{$property}: $value; .icon-#{$name} { position: absolute; #{$top-or-bottom}: 0; -#{$prefix}-#{$property}-image: $value } } @mixin firefox-message($selector) { body.firefox #{$selector}:before { content: "Hi, Firefox users!"; } } @mixin clearfix { display: inline-block; &:after { content: "."; display: block; } * html & { height: 1px } } @mixin apply-to-ie6-only { * html { @content; } } @mixin highlighted-background { background-color: #fc0; } @mixin sexy-border($color, $width) { border: { color: $color; width: $width; style: dashed; } color: #ff0000; } @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; -ms-border-radius: $radius; border-radius: $radius; } @mixin define-emoji($name, $glyph) { span.emoji-#{$name} { font-family: IconFont; } } @mixin styles { code { border-radius: $-border-radius; box-shadow: -box-shadow(); } } @mixin rtl($property, $ltr-value, $rtl-value) { #{$property}: $ltr-value; [dir=rtl] & { #{$property}: $rtl-value; } } @mixin replace-text($image, $x: 50%, $y: 50%) { text-indent: -99999em; overflow: hidden; text-align: left; background: { image: $image; repeat: no-repeat; position: $x $y; } } @mixin btn($args...) { @warn "The btn() mixin is deprecated. Include button() instead."; @import url("http://fonts.googleapis.com/css?family=#{$family}"); @include button($args...); } @mixin hover { &:not([disabled]):hover { @content; } } @mixin adjust-location($x, $y) { @if unitless($x) { @error "$x may not be unitless, was #{$x}."; @warn "Assuming #{$x} to be in pixels"; $x: 1px * $x; } @if unitless($y) { @error "$y may not be unitless, was #{$y}."; @warn "Assuming #{$y} to be in pixels"; $y: 1px * $y; } position: relative; left: $x; top: $y; } @mixin avatar($size, $circle: false) { width: $size; height: $size; @if $circle != 0 { border-radius: math.div($size, 2); } } @mixin theme-colors($light-theme: true) { @if $light-theme { background-color: $light-background; color: $light-text; } @else { background-color: $dark-background; color: $dark-text; } } @mixin configure($black: null, $border-radius: null, $box-shadow: null) { @if $black { $-black: $black !global; } @if $border-radius { $-border-radius: $border-radius !global; } } @mixin does-parent-exist { @if & { &:hover { color: red; } } @else { a { color: red; } } } @mixin order($height, $selectors...) { @for $i from 0 to length($selectors) { #{nth($selectors, $i + 1)} { position: absolute; height: $height; margin-top: $i * $height; } } } @mixin syntax-colors($args...) { @debug meta.keywords($args); // (string: #080, comment: #800, variable: #60b) @each $name, $color in meta.keywords($args) { pre span.stx-#{$name} { color: $color; } } } @mixin media($types...) { @each $type in $types { @media #{$type} { @content($type); } } } @mixin reflexive-position($property, $value) { @if $property != left and $property != right { @error "Property #{$property} must be either left or right."; } $left-value: if($property == right, initial, $value); $right-value: if($property == right, $value, initial); left: $left-value; right: $right-value; [dir=rtl] & { left: $right-value; right: $left-value; } } @mixin prefix($property, $value, $prefixes) { @each $prefix in $prefixes { @if not index($known-prefixes, $prefix) { @warn "Unknown prefix #{$prefix}."; } -#{$prefix}-#{$property}: $value; } #{$property}: $value; } @mixin inset-divider-offset($offset, $padding) { $divider-offset: (2 * $padding) + $offset; @debug "divider offset: #{$divider-offset}"; margin-left: $divider-offset; width: calc(100% - #{$divider-offset}); } @mixin sticky-position { position: fixed; @supports (position: sticky) { position: sticky; } } @at-root (without: media) { color: #111; } @at-root (with: rule) { font-size: 1.2em; } @mixin unify-parent($child) { @at-root #{selector.unify(&, $child)} { @content; } @at-root #{selector-unify(&, $child)} { @content; } } @media print { .page { width: 8in; @at-root (without: media) { color: red; } } } .sidebar { width: 300px; @media screen and (orientation: landscape) { width: 500px; } } @media screen { .sidebar { @media (orientation: landscape) { width: 500px; } } } @media (min-width: $layout-breakpoint-small) { .hide-extra-small { display: none; } } @media (hover: hover) { .button:hover { border: 2px solid black; @media (color) { border-color: #036; } } } @media #{$media} and ($feature: $value) { .sidebar { width: 500px; } } @extend .error; .hoverlink { @extend a:hover; @extend %extreme; @extend .message; @extend .notice !optional; border-width: 3px; } .error { border: 1px #f00; background-color: #fdd; &--serious { @extend .error; border-width: 3px; } } p { @if 1 + 1 == 2 { border: 1px solid; } @if 5 < 3 { border: 2px dotted; } @if null { border: 3px double; } } p { @if $type == ocean { color: blue; } @else if $type == matador { color: red; } @else if $type == monster { color: green; } @else { color: black; } } @each $animal in puma, sea-slug, egret, salamander { .#{$animal}-icon { background-image: url('/images/#{$animal}.png'); } } @each $name, $glyph in $icons { .icon-#{$name}:before { display: inline-block; font-family: "Icon Font"; content: $glyph; } } @each $size in $sizes { .icon-#{$size} { font-size: $size; height: $size; width: $size; } } @each $animal, $color, $cursor in (puma, black, default), (sea-slug, blue, pointer), (egret, white, move) { .#{$animal}-icon { background-image: url('/images/#{$animal}.png'); border: 2px solid $color; cursor: $cursor; } } @each $header, $size in (h1: 2em, h2: 1.5em, h3: 1.2em) { #{$header} { font-size: $size; } } @for $i from 1 through 3 { .item-#{$i} { width: 2em * $i; } } @for $i from 1 to 3 { ul:nth-child(3n + #{$i}) { background-color: lighten($base-color, $i * 5%); } } @while $i > 0 { .item-#{$i} { width: 2em * $i; } $i: $i - 2; } @include order(150px, $form-selectors...); @include order(150px, "input.name", "input.address", "input.zip"); @include unify-parent("input") { } @include google-font("Droid Sans"); @include library.styles; @include library.configure( $black: #222, $border-radius: 0.1rem ); @include firefox-message(".header"); @include apply-to-ie6-only { #logo { background-image: url(/logo.gif); } } @include media(screen, print) using ($type) { h1 { font-size: 40px; @if $type == print { font-family: Calluna; } } } p { @include sexy-border(blue, 1in); } h1 { @include sexy-border($color: blue, $width: 2in); } nav ul { @include corners.rounded; padding: 5px + corners.$radius; @include horizontal-list; @include rtl(float, left, right); @include hover { border-width: 2px; } @include replace-text(url("/images/mail.svg"), 0); @include square(100px, $radius: 4px); // Oops, we typo'd "webkit" as "wekbit"! @include prefix(transform, rotate(15deg), wekbit ms); } .primary { @include colors($value-map...); } .box { @include border-radius(10px); } .wrapper .field { @include unify-parent("input") { /* ... */ } @include unify-parent("select") { /* ... */ } } .banner { @include theme-colors($light-theme: true); body.dark & { @include theme-colors($light-theme: false); } } @function grid-width($n) { @return $n * $grid-width + ($n - 1) * $gutter-width; } @function scale-below($value, $base, $ratio: 1.618) { @while $value > $base { $value: math.div($value, $ratio); } @return $value; } /// If the user has configured `$-box-shadow`, returns their configured value. /// Otherwise returns a value derived from `$-black`. @function -box-shadow() { @return $-box-shadow or (0 0.5rem 1rem rgba($-black, 0.15)); } @function pow($base, $exponent) { $result: 1; @for $_ from 1 through $exponent { $result: $result * $base; } @return $result; } @function invert($color, $amount: 100%) { $inverse: change-color($color, $hue: hue($color) + 180); @return mix($inverse, $color, $amount); } @function sum($numbers...) { $sum: 0; @each $number in $numbers { $sum: $sum + $number; } @return $sum; } @function fg($args...) { @warn "The fg() function is deprecated. Call foreground() instead."; @return foreground($args...); } @function str-insert($string, $insert, $index) { // Avoid making new strings if we don't need to. @if string.length($string) == 0 { @return $insert; } $before: string.slice($string, 0, $index); $after: string.slice($string, $index); @return $before + $insert + $after; } // Variable define $image-path: "../../static/images"; $-text-color: #333 !default; // Default can be overrided $default-font-size: 16px !default; $default-font-family: Roboto, "Droid Sans", sans-serif; $default-font-weight: 400; $default-line-height: $default-font-size * 1.8; $shadow-transparence: 0.25; $box-shadow: 0 0 3px rgba(0,0,0,$shadow-transparence); $page-width: 100rem; // kabab-case $gapOfArticle: 20px; // camelCase $body_background_color: white; // snake_case $-box-shadow: null; $sizes: 40px, 50px, 80px; $icons: ("eye": "\f112", "start": "\f12e", "stop": "\f12f"); $value-map: (text: #00ff00, background: #0000ff, border: #ff0000); $map: (key1: value1, key2: value2, key3: value3); $icons: "eye" "\f112" 12px, "start" "\f12e" 16px, "stop" "\f12f" 10px; $known-prefixes: webkit, moz, ms, o; $primary-color: #036; $form-selectors: "input.name", "input.address", "input.zip" !default; $color1: hsl(120deg, 100%, 50%); $color2: rgb($red, $green, blue($color1)); $color3: mix($color1, $color2, [$weight]); $translucent-red: rgba(255, 0, 0, 0.5); $name: foo; $attr: border; $media: screen; $feature: -webkit-min-device-pixel-ratio; $value: 1.5; $values: #ff0000, #00ff00, #0000ff; library.$color: blue; // Nesting #home-page { header { width: 80%; margin: 0 auto; .cover { @include border-radius(20px); max-width: 100%; &:hover { background: #ffffff; } .like-button { font-size: $default-font-size * 0.8; @media (max-width: 300px) and (min-width: 200px) { font-size: $default-font-size * 0.8; .icon { width: 20px; height: 20px; } } @media print { display: none; } } } } } @use "sass:selector"; @use 'library'; @use "src/corners" as *; @use "src/corners" as c; @use 'opinionated' with ($black: #333); @use 'library' with ( $black: #222, $border-radius: 0.1rem ); @forward "src/list" hide list-reset, $horizontal-list-gap; @forward "src/list" as list-*; @forward 'library' with ( $black: #222 !default, $border-radius: 0.1rem !default ); @import url("http://fonts.googleapis.com/css?family=#{$family}"); @import 'foundation/code', 'foundation/lists'; @import "http://fonts.googleapis.com/css?family=Droid+Sans"; @error "Property #{$property} must be either left or right."; @error var(--abcd); @debug 10em + 12em; @debug library.$color; //=> blue @debug radial-gradient($primary, $accent); // radial-gradient(#f2ece4, #e1d7d2) @debug -webkit-flex; // -webkit-flex @keyframes slide-in { from { margin-left: 100%; width: 300%; } #{$x}% { margin-left: 90%; width: 150%; } 70% { margin-left: 90%; width: 150%; } }