Sass Nedir? Özellikleri nelerdir?

Sass genel olarak css derleyicisidir. Css sayesinde var olmuş fakat css’i teknik olarak geçmeyi başarmıştır. Nasıl geçmiş kısaca özetliyorum;

  • Css’in değişken tanımlanılabilinen hali (Variables)
  • Css’in tarayıcılar için yazdığımız ekstra kodları kendisi oluşturabilen hali(Mixins)
  • Css’in girintileri fark ederek iç içe class’ları yazabilen hali (Nesting)
  • Css dosyasında istediğimiz kodları istediğimiz yerde extend edebiliyoruz (Extend/Inheritance)
  • Css dosyamızı parçalara ayırıp, ayırdığımız kısımları istediğimiz yerde çağırabiliyoruz (İmport)
  • Css dosyamızda çarpma,bölme toplama vs. yapabiliyorz. (Operators)

Şimdi artılarını açıklamaya çalışacağım.

Özellikleri

Variables: Sass’ta değişken tanımlayabildiğimizi söylemiştik. Örneğe bakalım.

Değişkenleri tanımlıyoruz.

$header-font-style:  Helvetica, sans-serif
$header-color: #000

Değişkenleri kullanıyoruz.

.header
  font: $header-font-style
  color: $header-color

Nesting: Nesne girintilerine göre kod yazmak.

#nav
  ul
   color: red
  li
   color: blue
  a
   color: green

Css çıktısı:

#nav ul {
  color: red;
}
#nav li {
  color: blue;
}
#nav a {
  color: green;
}

Partials ve @import: Kodlarımızı bölümleyip istediğimiz yerde import edebiliyoruz.

/* _reset.sass */
body
     margin: 0
     padding: 0

Bu dosyayı asıl stil dosyamıza dahil edelim.

/* base.sass */
@import 'reset'

Mixins: bu özellik sayesinde css3 ün hayatımızı zor bir yoldan kolaylaştıran özelliklerini sıkılmadan uygulayabileceğiz.

@mixin border-radius($radius)
    -webkit-border-radius: $radius
    -moz-border-radius: $radius
    -ms-border-radius: $radius
    -o-border-radius: $radius
    border-radius: $radius

Mixin'i sass'da çağırıyoruz.

.box
    @include border-radius(10px)

Bu mixin'inden sonra border-radius kullandığımızda ekstra kodları yazmamıza gerek yok.

Extend/Inheritance: class yada id'lerde kullandığımız özellikleri @extend özelliği ile bir sonraki class yada id mizin içinde kullanabiliyoruz.

message class'ı için kodlarımız bunlar.

.message
      border: 1px solid #ccc
      padding: 10px
      color: #333

Şimdide diğer class yada id'mizde bu kodları extend edelim.

.success
      @extend .message
      border-color: green
.error
      @extend .message
      border-color: red

Operators: css özelliklerini yazarken operatorleri kullanabileceğimizi biliyor muydunuz? :)

aside
     float: right
     width: 300px / 960px * 100%

Css çıktısı:

aside {
    float: right;
    width: 31.25%;
}
comments powered by Disqus