LESS ile hiyerarşik ve fonksiyonel css yazmak

Benzer belgeler
Arayüz Geliştirme Dokümantasyonu

Radio butonları CSS ile makyajlamak

HTML Bloklar. CSS Display özelliği

WEB TASARIMININ TEMELLERİ

11. STIL ŞABLONU (CSS) MENÜ İŞLEMLERİ

HTML içerik oluşturmak için düşünülen bir işaret dilidir. Örnek

CSS. 1. CSS nin Yapısı Sınıf (Class) Seçicisi

Basamaklı Stil Şablonları (CSS) BIM206 Web Programlama

Yeni site açıp, masa üstündeki vt.mdb dosyasını sitemize ekliyoruz ve a bağlanıp 1 Mart tarihli sayfayı açıyoruz

WEB TASARIMI veprogramlama DERSİ CSS DERS NOTLARI

3. Metin ve Görünüm Etiketleri

CSS ile Web Sayfası Oluşturma

CSS(CASCADING STYLE SHEETS)

Css Stillerinin Nesneyi Etkileme Yolları Ve Sırası, Diez, Nokta, Yıldız, Class Css De Neyi İfade Eder.

HTML Etiketleri Genel Özellikler (Global Attributes)

CSS Anlatımları #1. Hazırlayan Oğuzhan CABBAROĞLU

Basamaklı Stil Şablonları (CSS) BIM206 Web Programlama

WEB TASARIMININ TEMELLERİ

Atatürk Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü BM Web Programlama ÖDEV 1

ADOBE DREAMWEAVER CS5 CSS PANEL

Web Tasarımının Bugünü ve Geleceği

HTML - 8 Hypertext takıları iki ana değişik şekilde karşımıza çıkar: Anchors ve Images. Anchors, resim veya yazıya bir olay eklemek için kullanılır.

4 Ocak 2012 / Çarşamba. Renk uyumunu seçmek için google colorschemedesigner RGB ye tıklayınca bir pencere çıkıyor

Renault Clio HP BVA Executive

CSS (Stil Şablon) (Cascading Style Sheets) YRD. DOÇ. DR. ENGİN CEMAL MENGÜÇ

HTML Sayfaları. Bütün html sayfaları

Karabük Üniversitesi, Mühendislik Fakültesi...

BMT 202 Web Tasarımı Bahar Dönemi. Yük. Müh. Köksal GÜNDOĞDU 1

Zemin özellikleri Font özellikleri Kutu modeli özellikleri Tablo özellikleri Pozisyon özellikleri Liste özellikleri

E-postalarınıza HTML imza ile daha ilgi çekici olun

MODÜL 3 HTML İLE STİL ŞABLONLARI

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

Volkswagen LT 32 SDI

Site Temizlik Projesi Kodları. Site Tasarım Çalışması -3

JavaScript Örnekleri PDF

Honda Civic 1.6 Elegance Otomatik

Örnek Ölçülü Site Kodları. Site Temizlik Projesi Kodları. İlk Hafta Sunumu ve Ön Test

İmleci yazıya getirip tıklayınca aşağıda hangi tag ler içinde olduğunu gösterir.

Mercedes Vito 115 CDI Panelvan Uzun

DIV KAVRAMI <style> position: absolute

WEB TASARIMIN TEMELLERİ

HTML & CSS. Öğr.Gör. M.Ersin AKAY

CSS ile Sayfa Yerleşim Düzeni

12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )

Site Tasarım Çalışması -3

MacOSX'de Mail.app (Apple Mail) istemcisinde html imza ayarlamak

Doç. Dr. İsmail Rakıp Karaş Hazırlayan: İdris Kahraman

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

CSS3, HTML 5 ve jquery ile Web Tasarımı. Umuthan Uyan

HTML5, CSS3 ve JavaScrıpt

<html> <head> <title>sayfa Başlığı</title> </head> <body> Bu benim ilk sayfam <b>bu metin koyu</b> </body> </html>

Google Search API ile ajax arama

CSS ile yazıcı çıktı işlemleri

HTML 5 ve CSS 3. Yrd. Doç. Dr. Murat Olcay ÖZCAN

Hyundai Starex Kamyonet TCI Kasasiz

İNTERNET PROGRAMLAMA II. Tanımlar

10. STİL ŞABLONU (CSS) ÖZELLİKLERİ

WEB TASARIMININ TEMELLERİ

İNTERNET PROGRAMCILIĞI

Renault Megane 1.5 dci Privilege

Basit Bir Photoshop ile Yapılmış Web. Tasarlanır? Hazır bir PSD dosyasına göre HTML ve CSS kodlarını yazmak

Cssin Html İçerisinde Kullanım Şekilleri, Puseduo Class Örnekleri

WEB TASARIM DERSLERİ

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

1 BOOTSTRAP NEDİR? 1 Bootstrap Nedir? 1 Bootstrap Dosyalarının Siteye Dahil Edilmesi 2 Bootstrap ın Sağladığı Kolaylıklar 3

STİL ŞABLONLARI / C S S. Web Tasarımı ve Programlama

Volkswagen Passat 1.6 FSI 16V Comfortline

Lyx Nedir? Belge Hazırlama Bir Örnek Ekler L Y X. Esin Çavlan. 5 Mart 2012

12. Tanımlama Listeleri <dl> </dl>, <dt> </dt>, <dd> </dd>

GoFeed Kullanıcı Arayüzü

Ford Mustang 4.6 V8 V8 GT

Kia Rio Hatchback 1.5 CRDi 110 HP Trend + ABS

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 5

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 2

2-Hafta Temel İşlemler

Div Çatılı sayfalar Oluşturmak

11 Ocak 2012 / Çarşamba. Spry menü aktifken, açılır menu ekleyebiliyoruz. Spry Menu Bar OK

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Site Temizlik Projesi Kodları

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 4

Daewoo Nexia 1.5i GTX

Ford Fiesta 1.4 TDCi 68 HP Titanium

İnternet,artık hayatımızın önemli bir parçası. Her gün interneti programlar aracılığı ile ya da internet siteleri aracılığı ile kullanıyoruz.

Background, Border, Classification, Dimension, Font, Generated Content, List And Marker, Margin

CSS i Web Sayfalarına Eklemek

Facebook connect ile kullanıcı giriş çıkış

Bu gün dersimizde değişik web kontrollerinin kullanımını gösteren birkaç web sitesi hazırlayacağız. Önce Visual Studio 2005 i açalım.

SM 100 Terazi Ayarları. Digi SM 100. SM 100 Terazi Ayarları

Volkswagen Passat 2.0 TDI 140 HP BlueMotion Comfortline Tiptronik DSG şanzıman

İNTERNET PROGRAMCILIĞI I

7. Çerçeveler. Bu bölümü bitirdiğinizde,

1.PROGRAMLAMAYA GİRİŞ

Renault Megane Sedan 1.5 dci Expression 100 bg

2. Belgeye Metin Ekleme

KELİME İŞLEMCİ MİCROSOFT OFFİCE WORD KULLANIMI

5. Hafta Kontrollerin Genel Özellikleri BPR251 Görsel

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

Transkript:

LESS ile hiyerarşik ve fonksiyonel css yazmak 13 Kasım Pazar 11 (X)HTML, CSS ve JavaScript Dökümanları http://mfyz.com/less-ile-hiyerarsik-ve-fonksiyonel-css-yazmak LESS bir çeşit css derleyicisi ve aslında css sytax'ı üstüne ek özelliklerin eklenmiş olduğu bir araç. Çıktığı dönemden beri bütün projelerimde less dosyaları ile çalışıyorum ve son dönemdeki birkaç uygulama sayesinde çok daha kolay kullanılabilir olmasından dolayı herkese öneriyorum. Neden LESS kullanmalısınız? Aslında LESS kullanmak için genel ve çok önemli ihtiyaç yok bana kalırsa. Fakat artık web uygulamaları eskisi gibi basit veya küçük css dosyaları ile şekillendirilen uygulamalar olmaktan çıktılar. Güçlü css seçicileri olsa bile her (grup) element için bir sınıf tanımladığınızı düşünürseniz orta ölçekli bir stil dosyası binlerce satıra ulaşması çok normal. Dosyanızın uzunluğundan çok iç içe tanımlı grup tanımlaları arasında kaybolmak çok kolay. Dolayısıyla css dosyanızı hiyerarşik bir şekilde organize edecek bir araca sahip olmak her zaman bir artı. Sadece bu ihtiyacınızı kullandığınız gelişitirici uygulamayı degiştirerek sağlamak da mümkün. Örneğin çok basit bir css dosyanızda ul.menu { margin: 0; ul.menu li.item { margin 0; padding: 0; list-style: none; Sayfa 1 / 8

ul.menu li.item a { display: block; float: left; width: 200px; padding: 5px 10px; ul.menu li.item a:hover { color: red; ul.menu li.item a span.icon { display: block; float: left; width: 30px; ul.menu li.item a:hover span.icon { background: blue; Böyle bir CSS yapısı sık sık yazdığınız bir navigasyon kodu olabilir. Böyle bir yapı, tipik hiyerarşik modele uygun bir örnek. Böyle bir yapıyı LESS ile daha anlaşılır yazmak mümkün: ul.menu { margin: 0; li.item { margin 0; padding: 0; list-style: none; a { display: block; float: left; Sayfa 2 / 8

width: 200px; padding: 5px 10px; span.icon { display: block; float: left; width: 30px; &:hover { color: red; span.icon { background: #efefef; Gördüğünüz gibi herşey doğru şekilde indent edilmiş ve & gibi referanslar ile bütün css kurallarınızı hiyerarşik hale getirmeniz kolay. Böyle bir yapının sınıf isimlerinden bağımsızlaşması da işinizi kolaylaştıracaktır. LESS'in diğer birkaç özelliği gercekten alışkanlık yapmaya yeterli. Eğer bir arayüz tasarımcısıysanız genelde matematiksel veya mimari modellere, gridlerle calışıyor olmalısınız. Aynı şeyler tipografi kuralları için de geçerli. Görsel her öğe bir şekilde birbirleriyle çok doğru orantılılar. Font boyutları, renkler vs. Mesela font boyutunuz 16px iken satır aralığınız bunun 1.5 katı, padding'leriniz 1.5 katı belki koyduğunuz arayüz kuralına göre de kenarlıklarınız 0.2 katı olabilir veya ürettiğiniz grid arayüzünde bir grid genişliğini tanımlayıp sidebarınızı 2 kolon, ana içerik alanınızı 10 kolon olarak ayarlamış olabilirsiniz. Bunları düz CSS'de hesaplayıp tanımlamak durumundasınız. Kuralların bu kadar net belirlenebildiği bir ortamda CSS'de statik renk kodlarına, sürekli hesaplama yaparak font boyutu, padding, margin, border radius hesaplamak zorunda kalıyor olabilirsiniz. LESS size bu matematiği LESS dosyanız içinde Sayfa 3 / 8

yapmanızı sağlıyor. Bir rengi belli bir contrast değeriyle daha açık veya daha koyu bir renge dönüştürebilir, matematiksel değerleri formülasyona sokabilir veya başka sınıfları kendi sınıfınıza dahil edebilirsiniz. Örnek vermek gerekirse siteniz için genel bir oran ve başlangıç rakamı belirleyebilirsiniz, veya 3-4 renkten oluşan bir renk paletiniz var olabilir. Düz CSS'de her varyasyonu hesaplayarak yazmak zorunda kalabilirisiniz: div.user { width: 400px; height: 100px; font-size: 18px; line-height: 27px; color: #f00; padding: 10px; margin: 5px; /* normal ic genisligin yarisi */ background: #ccc; border-radius: 5px; /* normal ic genisligin yarisi */ div.user span.info { color: #f66; /* acik kirmizi */ font-size: 12px /* normal font boyutunun 2/3'u */ div.user div.avatar { width: 300px; /* user sinifinin 3/4 boyutu */ height: 75px; /* user sinifinin 3/4 boyutu */ border: 1px /* ic genisligin 1/10'u */ Yorumlarda kurallari yazmaya çalıştım ve normalde bir arayüz tasarımcısı böyle arayüzler geliştirirken bu tarz kurallara sahiptir, en büyük örnegini Apple arayüzlerinde görebilirsiniz. Mimari bir ürün gibidir. Böyle kurallarla donatılmış bir arayüzün css'lerini yazarken her değeri hesaplamak zorunda kalabilirsiniz fakat LESS ile bu işlemlerin hepsini matematiksel olarak hesaplatmanız mümkün. Yukarıdaki örnek çok küçük bir örnek ama büyük bir css dosyasını düşünürseniz başa çıkılamaz bir iş haline gelebilir. Ayrıca kuralları matematiksel yazmanın ikinci avantajı, bütün parametreleri birkaç Sayfa 4 / 8

değişken ile yönetip değiştirebilme olanağına sahip olmanızdır. Yukarıdaki örneğin LESS ile yazılmış hali: @fontsize: 18px; @maincolor: #f00; @padding: 10px; @width: 400px; @height: 100px; div.user { width: @width; height: @height; font-size: @font-size; line-height: @font-size * 1.5; /* font boyutunun 1.5 kati */ color: #maincolor; padding: @padding; margin: @padding / 2; /* normal ic genisligin yarisi */ background: #ccc; border-radius: @padding / 2; span.info { color: lighten(@maincolor, 10%); /* orjinal renging %10 acik rengi * / font-size: @fontsize * 2 / 3 div.avatar { width: @width * 3 / 4; /* user sinifinin 3/4 boyutu */ height: @height * 3 / 4; /* user sinifinin 3/4 boyutu */ border: @padding / 10 /* ic genisligin 1/10'u */ Bu özellikleri çok kullanabilirsiniz fakat daha hiyerarşik bir yapıda ortak kullanılan parçaları gruplamak isteyebilirsiniz hatta bazı grupları parametrik olarak değiştirebilmeyi isteyebilirsiniz. Örneğin bir kutu modeli ürettiniz, kenarları köşeli, içindeki h1 başlığını şekillendirdiniz ve bu kutu modelinin farklı boyutlarını ve renklerini üretiyorsunuz sürekli. Genel kutu modelinizde kullandığınız tipografik tanımlamaları, kenar Sayfa 5 / 8

boşluğu kurallarını tekrar tekrar yazmak istemiyorsunuz. Ya da CSS3 kurallarının farklı tarayiıcılarla çalışması için yazmanız gereken 4 farklı kuralı farklı değerlerle sürekli tekrarlamak yerine fonksiyon şeklinde tanımlayıp LESS'e ürettirebilirsiniz. Bunu açıklamak için CSS örnegi yazacağım son olarak..kutu_gri_buyuk { padding: 20px; border: 2px solid #666; font: 12px Georgia; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px;.kutu_gri_buyuk h1 { font-size: 18px;.kutu_gri_kucuk { padding: 10px; border: 1px solid #666; font: 11px Georgia; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;.kutu_gri_kucuk h1 { font-size: 15px;.kutu_mavi_buyuk { padding: 20px; border: 2px solid #00f; font: 12px Georgia; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; Sayfa 6 / 8

.kutu_mavi_buyuk h1 { font-size: 18px;.kutu_mavi_kucuk { padding: 10px; border: 1px solid #00f; font: 11px Georgia; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;.kutu_mavi_kucuk h1 { font-size: 15px; Bu ornegin LESS ile hazirlayabileceginiz versiyonu..borderradius(@radius: 5px){ -webkit-border-radius: @radius; -moz-border-radius: @radius; border-radius: @radius;.kutu(@fontsize: 12px, @headerfontsize: 18px, @bordersize: 2px, @bordercolor: #666, @padding: 20px, @radius: 5px){ padding: @padding; border: @bordersize solid @bordercolor; font: @fontsize Georgia;.borderRadius(@radius); h1 { font-size: @headerfontsize; Sayfa 7 / 8

Powered by TCPDF (www.tcpdf.org).kutu_gri_buyuk {.kutu(12px, 18px, 2px, #666, 20px, 5px);.kutu_gri_kucuk {.kutu(11px, 15px, 1px, #666, 10px, 3px);.kutu_mavi_buyuk {.kutu(12px, 18px, 2px, #00f, 20px, 5px);.kutu_mavi_kucuk {.kutu(11px, 15px, 1px, #00f, 10px, 3px); Bu örnek yukarıdaki CSS'i üretecektir. Gördüğünüz gibi borderradius tanımlarını da bir fonsiyon olarak tanımlayıp kullandım. Bunu yapmadan doğrudan kutu tanımlaması içinde de kullanabilirdim. Fakat uygulamanız içindeki tüm border radius kullanımınızı bu fonksiyon üzerinden ürettirebilirsiniz. Son olarak, yazdığınız LESS dosyalarınızı css'e render ettirmenin bir çok yolu olduğunu unutmayın. Bunun için kullanıcının tarayıcısında javascript ile derletebilir, php veya diğer sunucu taraflı kütüphanelerle sunucunuzda derletip css'leri sunabilir veya LESS.app gibi uygulamalarla masaustünüzde yazarken eş zamanlı olarak css'lere derletip kullanabilirsiniz. Hazırlayan: Mehmet Fatih YILDIZ Bu yazı http://mfyz.com/less-ile-hiyerarsik-ve-fonksiyonel-css-yazmak adresinden indirilmiştir. Sayfa 8 / 8