BloggingWithStyle_2008

Style
Blogging with



         An Introduction to CSS

Presented by Anthony Piraino at ConvergeSouth 2008
What is CSS and
why should I learn it?
BloggingWithStyle_2008
Your Blog: Under the Hood
HTML vs. CSS
HTML
   HyperText Markup Language


Describes the semantics and structure
       of content on a web page.
CSS
         Cascading Style Sheets


   Describes the presentation of content
on a web page by defining design elements
       such as layout, fonts, and colors.
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
How do they work together?


     CSS lets you define visual styling by
targeting rules to individual HTML elements.
<html>
         <body>
           <h1>This is a header</h1>
           <p>
              Here is a block of
              paragraph text, blah
              blah blah etc.
HTML       </p>
           <h2>Another header</h2>
           <p>
              And yet another paragraph
              with a block of text.
           </p>
         </body>
       </html>
body {
        font-family: "trebuchet ms", sans-serif;
        background-color: #ddeedd;
        padding: 20px 100px 0px 100px;
        }
      h1, h2 {
        font-size: 1.8em;
        color: #88aa44;
        margin: 0px;

CSS
        }
      h2 {
        font-size: 1.4em;
        background-color: #ffffff;
        padding: 0px 30px 0px 30px;
        }
      p {
        background-color: #ffffff;
        padding: 30px;
        margin: 0px;
        }
BloggingWithStyle_2008
BloggingWithStyle_2008
body {
                                   font-family: "trebuchet ms", sans-serif;
<body>                             background-color: #ddeedd;
                                   padding: 20px 100px 0px 100px;
  <h1>This is a header</h1>        }

  <p>                            h1, h2 {
     Here is a block of            font-size: 1.8em;
     paragraph text, blah          color: #88aa44;
     blah blah etc.                margin: 0px;
  </p>                             }

                                 h2 {
  <h2>Another header</h2>          font-size: 1.4em;
                                   background-color: #ffffff;
  <p>                              padding: 0px 30px 0px 30px;
     And yet another paragraph     }
     with a block of text.
  </p>                           p {
                                   background-color: #ffffff;
</body>                            padding: 30px;
                                   margin: 0px;
                                   }




          HTML                                    CSS
CSS Syntax

A stylesheet lists rules for presentation.


 Each rule consists of a selector and a
          declaration block.
selector { property: value; }
The Type Selector


p {
 color: #1662d8;
 background-color: #ffffff;
 padding: 10px;
 border: 5px solid #1bc8fe;
 }
Here is an example paragraph with a
styled font, color, padding and border.




           p {
            color: #1662d8;
            background-color: #ffffff;
            padding: 10px;
            border: 5px solid #1bc8fe;
            }
The Class Selector
<p>
   This is a normal paragraph, nothing
   exciting going on here.
</p>
<p class=”alert”>
   But this is a really important
   paragraph - pay attention!
</p>
p {
 color: gray;
 font-size: 12px;
 }


p.alert {
 color: red;
 font-size: 18px;
 font-weight: bold;
 }
This is a normal paragraph, nothing
exciting going on here.


But this is a really important
paragraph - pay attention!
The ID Selector
HTML   <ul id=”contents”>
          <li>Chapter 1</li>
          <li>Chapter 2</li>
          <li>Chapter 3</li>
       </ul>


 CSS   #contents {
          font-weight: bold;
          font-size: 18px;
          }
Descendant Selectors
<p>
   This is a stand-alone paragraph.
</p>
<blockquote>
  <p>
     A paragraph inside our blockquote.
  </p>
  <p>
     And another blockquoted paragraph.
  </p>
</blockquote>
blockquote p {
 color: blue;
 font-weight: bold;
 border-left: 3px solid blue;
 padding-left: 10px;
 }
This is a stand-alone paragraph.

 A paragraph inside our
 blockquote.
 And another blockquoted
 paragraph.
{ The Declaration Block }
Properties and Values



       Value of my House
 Jan   Feb   March   April   May   June
Properties and Values


  selector {
    property: value;
    property: value;
    }
color
By Name


   aqua, black, blue, fuchsia, gray, etc.


        Full list of supported color names:
http://www.w3schools.com/css/css_colornames.asp
By Hex Value


Roses are #ff0000
Violets are #0000ff
Red   Green   Blue

#00 00 00
http://www.colorpicker.com/
background-color
margin
padding
border
The Box Model


   element
    padding
     border
    margin
Margin and Padding Values


margin: 0px 20px 10px 20px;

        top   right bottom   left
Pimp my CSS
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
#outer-wrapper {
  width: 660px;
  margin:0 auto;
  padding:10px;
  text-align:$startSide;
  font: $bodyfont;
  }
#outer-wrapper
#outer-wrapper {
  width: 660px;
  margin:0 auto;
  padding: 10px;
  text-align:$startSide;
  font: $bodyfont;
  }
#outer-wrapper {
  width: 660px;
  margin:0 auto;
  padding: 10px 40px 10px 40px;
  text-align:$startSide;
  font: $bodyfont;
  }
#outer-wrapper {
  width: 660px;
  margin:0 auto;
  padding: 10px 40px 10px 40px;
  text-align:$startSide;
  font: $bodyfont;
  background-color: #effcff;
  border-left: 10px solid #003;
  border-right: 10px solid #003;
  }
BloggingWithStyle_2008
BloggingWithStyle_2008
#header-wrapper {
  width:660px;
  margin:0 auto 10px;
  border:1px solid $bordercolor;
  }
#header {
  margin: 5px;
  border: 1px solid $bordercolor;
  text-align: center;
  color:$pagetitlecolor;
  }
#header h1 {
  margin:5px 5px 0;
  padding:15px 20px .25em;
  line-height:1.2em;
  text-transform:uppercase;
  letter-spacing:.2em;
  font: $pagetitlefont;
  }
#header-wrapper



                  #header



                            #header h1
#header-wrapper



                  #header



                            #header h1
#header-wrapper



                  #header



                            #header h1
#header-wrapper



                  #header



                            #header h1
#header-wrapper {
  width:660px;
  margin:0 auto 10px;
  border:1px solid $bordercolor;
  }
#header {
  margin: 5px;
  border: 1px solid $bordercolor;
  text-align: center;
  color:$pagetitlecolor;
  }
#header h1 {
  margin:5px 5px 0;
  padding:15px 20px .25em;
  line-height:1.2em;
  text-transform:uppercase;
  letter-spacing:.2em;
  font: $pagetitlefont;
  }
#header-wrapper {
  width:660px;
  margin:0 auto 10px;
  border:1px solid $bordercolor;
  }
#header {
  margin: 5px;
  border: 1px solid $bordercolor;
  text-align: center;
  color:$pagetitlecolor;
  }
#header h1 {
  margin:5px 5px 0;
  padding:15px 20px .25em;
  line-height:1.2em;
  text-transform:uppercase;
  letter-spacing:.2em;
  font: $pagetitlefont;
  }
#header-wrapper {
  width:660px;
  margin: 0px 0px 20px 0px;
  border:1px solid $bordercolor;
  }
#header {
  margin: 5px;
  border: 1px solid $bordercolor;
  text-align: center;
  color:$pagetitlecolor;
  }
#header h1 {
  margin:5px 5px 0;
  padding:15px 20px .25em;
  line-height:1.2em;
  text-transform:uppercase;
  letter-spacing:.2em;
  font: $pagetitlefont;
  }
#header-wrapper {
  width:660px;
  margin: 0px 0px 20px 0px;
  border-bottom: 1px solid #c1cccf;
  }
#header {
  margin: 5px;
  border: 1px solid $bordercolor;
  text-align: center;
  color:$pagetitlecolor;
  }
#header h1 {
  margin:5px 5px 0;
  padding:15px 20px .25em;
  line-height:1.2em;
  text-transform:uppercase;
  letter-spacing:.2em;
  font: $pagetitlefont;
  }
#header-wrapper {
  width:660px;
  margin: 0px 0px 20px 0px;
  border-bottom: 1px solid #c1cccf;
  }
#header {



  color:$pagetitlecolor;
  }
#header h1 {
  margin:5px 5px 0;
  padding:15px 20px .25em;
  line-height:1.2em;
  text-transform:uppercase;
  letter-spacing:.2em;
  font: $pagetitlefont;
  }
#header-wrapper {
  width:660px;
  margin: 0px 0px 20px 0px;
  border-bottom: 1px solid #c1cccf;
  }
#header {
  color: #000033;
  }



#header h1 {
  margin:5px 5px 0;
  padding:15px 20px .25em;
  line-height:1.2em;
  text-transform:uppercase;
  letter-spacing:.2em;
  font: $pagetitlefont;
  }
#header-wrapper {
  width:660px;
  margin: 0px 0px 20px 0px;
  border-bottom: 1px solid #c1cccf;
  }
#header {
  color: #000033;
  }



#header h1 {
  margin: 0px;
  padding:15px 20px .25em;
  line-height:1.2em;
  text-transform:uppercase;
  letter-spacing:.2em;
  font: $pagetitlefont;
  }
#header-wrapper {
  width:660px;
  margin: 0px 0px 20px 0px;
  border-bottom: 1px solid #c1cccf;
  }
#header {
  color: #000033;
  }



#header h1 {
  margin: 0px;
  padding: 30px 0px 0px 0px;
  line-height:1.2em;
  text-transform:uppercase;
  letter-spacing:.2em;
  font: $pagetitlefont;
  }
BloggingWithStyle_2008
BloggingWithStyle_2008
.sidebar .widget, .main .widget {
  border-bottom:1px dotted $bordercolor;
  margin:0 0 1.5em;
  padding:0 0 1.5em;
 }
.sidebar .widget, .main .widget {
  margin:0 0 1.5em;
  padding:0 0 1.5em;
 }
.sidebar .widget, .main .widget {
  margin:0px;
  padding:0 0 1.5em;
 }
.sidebar .widget, .main .widget {
  margin:0px;
  padding:0 0 1.5em;
 }


#sidebar-wrapper h2 {
  background-color: #113355;
  padding: 3px 0px 3px 5px;
  color: #ffffff;
 }
BloggingWithStyle_2008
BloggingWithStyle_2008
BloggingWithStyle_2008
Resources and Next Steps

              Selectutorial
 http://css.maxdesign.com.au/selectutorial/

      W3Schools CSS Tutorial
     http://www.w3schools.com/css/

           CSS Zen Garden
      http://www.csszengarden.com/
</slideshow >
1 sur 82

Recommandé

Theme04Theme04
Theme04Atleta De Taekwondo
450 vues5 diapositives
Theme01Theme01
Theme01Atleta De Taekwondo
583 vues6 diapositives
Theme02Theme02
Theme02Atleta De Taekwondo
496 vues6 diapositives
Theme03Theme03
Theme03Atleta De Taekwondo
474 vues5 diapositives
ID01 / W01ID01 / W01
ID01 / W01mkontopo
1.7K vues30 diapositives

Contenu connexe

Tendances(19)

En vedette

tutorial7tutorial7
tutorial7tutorialsruby
1.1K vues12 diapositives
ASPNET_MVC_Tutorial_06_CSASPNET_MVC_Tutorial_06_CS
ASPNET_MVC_Tutorial_06_CStutorialsruby
267 vues10 diapositives
introductionintroduction
introductiontutorialsruby
158 vues3 diapositives

En vedette(8)

&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby309 vues
tutorial7tutorial7
tutorial7
tutorialsruby1.1K vues
ASPNET_MVC_Tutorial_06_CSASPNET_MVC_Tutorial_06_CS
ASPNET_MVC_Tutorial_06_CS
tutorialsruby267 vues
Demo-BW_Tutorial-USPG_%20Ed_1-3Demo-BW_Tutorial-USPG_%20Ed_1-3
Demo-BW_Tutorial-USPG_%20Ed_1-3
tutorialsruby311 vues
introductionintroduction
introduction
tutorialsruby158 vues
XSD%20and%20jCAM%20tutorialXSD%20and%20jCAM%20tutorial
XSD%20and%20jCAM%20tutorial
tutorialsruby671 vues
formsforms
forms
tutorialsruby233 vues

Similaire à BloggingWithStyle_2008

Estilos CssEstilos Css
Estilos Cssandreagonza26
236 vues15 diapositives
css-note.pptxcss-note.pptx
css-note.pptxSamay16
4 vues31 diapositives
Bloggdesign #2 - hawaa.blogg.noBloggdesign #2 - hawaa.blogg.no
Bloggdesign #2 - hawaa.blogg.noHannee92
486 vues17 diapositives
Css tips & tricksCss tips & tricks
Css tips & tricksanubavam-techkt
1.7K vues24 diapositives
cascading style sheet pptcascading style sheet ppt
cascading style sheet pptabhilashagupta
38.3K vues29 diapositives
Css 1Css 1
Css 1H K
949 vues7 diapositives

Similaire à BloggingWithStyle_2008(20)

Estilos CssEstilos Css
Estilos Css
andreagonza26236 vues
css-note.pptxcss-note.pptx
css-note.pptx
Samay164 vues
Css tips & tricksCss tips & tricks
Css tips & tricks
anubavam-techkt1.7K vues
cascading style sheet pptcascading style sheet ppt
cascading style sheet ppt
abhilashagupta38.3K vues
Css 1Css 1
Css 1
H K949 vues
css-ppt.pdfcss-ppt.pdf
css-ppt.pdf
EktaDesai146 vues
CSS BasicsCSS Basics
CSS Basics
WordPress Memphis25K vues
Css1Css1
Css1
Vadim Spiridenko288 vues
Tmx9Tmx9
Tmx9
Lukas Mickosz235 vues
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
tutorialsruby1.2K vues
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
tutorialsruby1K vues
Oocss & progressive css3 selectorsOocss & progressive css3 selectors
Oocss & progressive css3 selectors
daniel_sternlicht1.1K vues
CssCss
Css
Rathan Raj668 vues

Plus de tutorialsruby(20)

&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby237 vues
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby10 vues
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby5 vues
xhtml_basicsxhtml_basics
xhtml_basics
tutorialsruby6 vues
xhtml_basicsxhtml_basics
xhtml_basics
tutorialsruby1.7K vues
xhtml-documentationxhtml-documentation
xhtml-documentation
tutorialsruby8 vues
xhtml-documentationxhtml-documentation
xhtml-documentation
tutorialsruby2K vues
CSSCSS
CSS
tutorialsruby12 vues
CSSCSS
CSS
tutorialsruby1.6K vues
HowTo_CSSHowTo_CSS
HowTo_CSS
tutorialsruby1.3K vues
HowTo_CSSHowTo_CSS
HowTo_CSS
tutorialsruby1.3K vues
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
tutorialsruby1.2K vues
eng2u3less38eng2u3less38
eng2u3less38
tutorialsruby685 vues
eng2u3less38eng2u3less38
eng2u3less38
tutorialsruby587 vues

Dernier(20)

CXL at OCPCXL at OCP
CXL at OCP
CXL Forum183 vues
The Research Portal of Catalonia: Growing more (information) & more (services)The Research Portal of Catalonia: Growing more (information) & more (services)
The Research Portal of Catalonia: Growing more (information) & more (services)
CSUC - Consorci de Serveis Universitaris de Catalunya51 vues

BloggingWithStyle_2008

  • 1. Style Blogging with An Introduction to CSS Presented by Anthony Piraino at ConvergeSouth 2008
  • 2. What is CSS and why should I learn it?
  • 4. Your Blog: Under the Hood
  • 6. HTML HyperText Markup Language Describes the semantics and structure of content on a web page.
  • 7. CSS Cascading Style Sheets Describes the presentation of content on a web page by defining design elements such as layout, fonts, and colors.
  • 19. How do they work together? CSS lets you define visual styling by targeting rules to individual HTML elements.
  • 20. <html> <body> <h1>This is a header</h1> <p> Here is a block of paragraph text, blah blah blah etc. HTML </p> <h2>Another header</h2> <p> And yet another paragraph with a block of text. </p> </body> </html>
  • 21. body { font-family: "trebuchet ms", sans-serif; background-color: #ddeedd; padding: 20px 100px 0px 100px; } h1, h2 { font-size: 1.8em; color: #88aa44; margin: 0px; CSS } h2 { font-size: 1.4em; background-color: #ffffff; padding: 0px 30px 0px 30px; } p { background-color: #ffffff; padding: 30px; margin: 0px; }
  • 24. body { font-family: "trebuchet ms", sans-serif; <body> background-color: #ddeedd; padding: 20px 100px 0px 100px; <h1>This is a header</h1> } <p> h1, h2 { Here is a block of font-size: 1.8em; paragraph text, blah color: #88aa44; blah blah etc. margin: 0px; </p> } h2 { <h2>Another header</h2> font-size: 1.4em; background-color: #ffffff; <p> padding: 0px 30px 0px 30px; And yet another paragraph } with a block of text. </p> p { background-color: #ffffff; </body> padding: 30px; margin: 0px; } HTML CSS
  • 25. CSS Syntax A stylesheet lists rules for presentation. Each rule consists of a selector and a declaration block.
  • 27. The Type Selector p { color: #1662d8; background-color: #ffffff; padding: 10px; border: 5px solid #1bc8fe; }
  • 28. Here is an example paragraph with a styled font, color, padding and border. p { color: #1662d8; background-color: #ffffff; padding: 10px; border: 5px solid #1bc8fe; }
  • 29. The Class Selector <p> This is a normal paragraph, nothing exciting going on here. </p> <p class=”alert”> But this is a really important paragraph - pay attention! </p>
  • 30. p { color: gray; font-size: 12px; } p.alert { color: red; font-size: 18px; font-weight: bold; }
  • 31. This is a normal paragraph, nothing exciting going on here. But this is a really important paragraph - pay attention!
  • 32. The ID Selector HTML <ul id=”contents”> <li>Chapter 1</li> <li>Chapter 2</li> <li>Chapter 3</li> </ul> CSS #contents { font-weight: bold; font-size: 18px; }
  • 33. Descendant Selectors <p> This is a stand-alone paragraph. </p> <blockquote> <p> A paragraph inside our blockquote. </p> <p> And another blockquoted paragraph. </p> </blockquote>
  • 34. blockquote p { color: blue; font-weight: bold; border-left: 3px solid blue; padding-left: 10px; }
  • 35. This is a stand-alone paragraph. A paragraph inside our blockquote. And another blockquoted paragraph.
  • 36. { The Declaration Block }
  • 37. Properties and Values Value of my House Jan Feb March April May June
  • 38. Properties and Values selector { property: value; property: value; }
  • 39. color
  • 40. By Name aqua, black, blue, fuchsia, gray, etc. Full list of supported color names: http://www.w3schools.com/css/css_colornames.asp
  • 41. By Hex Value Roses are #ff0000 Violets are #0000ff
  • 42. Red Green Blue #00 00 00
  • 46. The Box Model element padding border margin
  • 47. Margin and Padding Values margin: 0px 20px 10px 20px; top right bottom left
  • 52. #outer-wrapper { width: 660px; margin:0 auto; padding:10px; text-align:$startSide; font: $bodyfont; }
  • 54. #outer-wrapper { width: 660px; margin:0 auto; padding: 10px; text-align:$startSide; font: $bodyfont; }
  • 55. #outer-wrapper { width: 660px; margin:0 auto; padding: 10px 40px 10px 40px; text-align:$startSide; font: $bodyfont; }
  • 56. #outer-wrapper { width: 660px; margin:0 auto; padding: 10px 40px 10px 40px; text-align:$startSide; font: $bodyfont; background-color: #effcff; border-left: 10px solid #003; border-right: 10px solid #003; }
  • 59. #header-wrapper { width:660px; margin:0 auto 10px; border:1px solid $bordercolor; } #header { margin: 5px; border: 1px solid $bordercolor; text-align: center; color:$pagetitlecolor; } #header h1 { margin:5px 5px 0; padding:15px 20px .25em; line-height:1.2em; text-transform:uppercase; letter-spacing:.2em; font: $pagetitlefont; }
  • 60. #header-wrapper #header #header h1
  • 61. #header-wrapper #header #header h1
  • 62. #header-wrapper #header #header h1
  • 63. #header-wrapper #header #header h1
  • 64. #header-wrapper { width:660px; margin:0 auto 10px; border:1px solid $bordercolor; } #header { margin: 5px; border: 1px solid $bordercolor; text-align: center; color:$pagetitlecolor; } #header h1 { margin:5px 5px 0; padding:15px 20px .25em; line-height:1.2em; text-transform:uppercase; letter-spacing:.2em; font: $pagetitlefont; }
  • 65. #header-wrapper { width:660px; margin:0 auto 10px; border:1px solid $bordercolor; } #header { margin: 5px; border: 1px solid $bordercolor; text-align: center; color:$pagetitlecolor; } #header h1 { margin:5px 5px 0; padding:15px 20px .25em; line-height:1.2em; text-transform:uppercase; letter-spacing:.2em; font: $pagetitlefont; }
  • 66. #header-wrapper { width:660px; margin: 0px 0px 20px 0px; border:1px solid $bordercolor; } #header { margin: 5px; border: 1px solid $bordercolor; text-align: center; color:$pagetitlecolor; } #header h1 { margin:5px 5px 0; padding:15px 20px .25em; line-height:1.2em; text-transform:uppercase; letter-spacing:.2em; font: $pagetitlefont; }
  • 67. #header-wrapper { width:660px; margin: 0px 0px 20px 0px; border-bottom: 1px solid #c1cccf; } #header { margin: 5px; border: 1px solid $bordercolor; text-align: center; color:$pagetitlecolor; } #header h1 { margin:5px 5px 0; padding:15px 20px .25em; line-height:1.2em; text-transform:uppercase; letter-spacing:.2em; font: $pagetitlefont; }
  • 68. #header-wrapper { width:660px; margin: 0px 0px 20px 0px; border-bottom: 1px solid #c1cccf; } #header { color:$pagetitlecolor; } #header h1 { margin:5px 5px 0; padding:15px 20px .25em; line-height:1.2em; text-transform:uppercase; letter-spacing:.2em; font: $pagetitlefont; }
  • 69. #header-wrapper { width:660px; margin: 0px 0px 20px 0px; border-bottom: 1px solid #c1cccf; } #header { color: #000033; } #header h1 { margin:5px 5px 0; padding:15px 20px .25em; line-height:1.2em; text-transform:uppercase; letter-spacing:.2em; font: $pagetitlefont; }
  • 70. #header-wrapper { width:660px; margin: 0px 0px 20px 0px; border-bottom: 1px solid #c1cccf; } #header { color: #000033; } #header h1 { margin: 0px; padding:15px 20px .25em; line-height:1.2em; text-transform:uppercase; letter-spacing:.2em; font: $pagetitlefont; }
  • 71. #header-wrapper { width:660px; margin: 0px 0px 20px 0px; border-bottom: 1px solid #c1cccf; } #header { color: #000033; } #header h1 { margin: 0px; padding: 30px 0px 0px 0px; line-height:1.2em; text-transform:uppercase; letter-spacing:.2em; font: $pagetitlefont; }
  • 74. .sidebar .widget, .main .widget { border-bottom:1px dotted $bordercolor; margin:0 0 1.5em; padding:0 0 1.5em; }
  • 75. .sidebar .widget, .main .widget { margin:0 0 1.5em; padding:0 0 1.5em; }
  • 76. .sidebar .widget, .main .widget { margin:0px; padding:0 0 1.5em; }
  • 77. .sidebar .widget, .main .widget { margin:0px; padding:0 0 1.5em; } #sidebar-wrapper h2 { background-color: #113355; padding: 3px 0px 3px 5px; color: #ffffff; }
  • 81. Resources and Next Steps Selectutorial http://css.maxdesign.com.au/selectutorial/ W3Schools CSS Tutorial http://www.w3schools.com/css/ CSS Zen Garden http://www.csszengarden.com/