[]

css otomatikleştirme, sanırım less veya sass gibi birşey..

Merhaba CSS sevenler,
öyle bir css yazmak istiyorum ki, mesela class="m-b-10" veya class="m-b-14" veya class="m-b-3" diye istediğim gibi o an ne gerekiyorsa çekeyim kullanayım istiyorum.
ama aşağıdaki*** gibi birsürü css tanımlaması yapmak istemiyorum.
bu tarz ürünlerin adı less veya sass-scss galiba. sass'ı arastırdım ama ruby falan filan kurmak gerekiyormus. biraz gözümü korkuttu açıkçası ya da iyi anlatılan bir tutoriala denk gelmedim sanırım.
less'i de arastırdım less.js diye birşey online etkide bulunuyormuş css dosyasına sanırım. bu da pek akıl karı gelmedi. en azından ağır bir web projesinde performansa etki eder diye düşünüyorum.

bootstrap da 4. versiyonunda sass-scssye geçiyormus diye okudum.
birisi beni güzelce aydınlatabilir mi ?

not: css beginner değilim.

***
.m-b-10 { margin-bottom: 10px; }
.m-b-20 { margin-bottom: 20px; }
.m-b-30 { margin-bottom: 30px; }
.m-t-10 { margin-top: 10px; }
.m-t-20 { margin-top: 20px; }
.m-l-10 { margin-left: 10px; }
.m-r-0 { margin-right: 0px; }
.m-r-10 { margin-right: 10px; }
.m-r-15 { margin-right: 15px; }
.p-t-10 { padding-top: 10px; }
.p-t-15 { padding-top: 15px; }
.p-t-30 { padding-top: 30px; }
***

 
koala-app.com'dan uygulamayı indirirsen, yazdığın LESS veya SASS kodlarını CSS'ye derlersin. Böylelikle sunucuya bişey kurmana gerek kalmaz.

Yalnız SASS veya LESS senin istediğin şeyi yapmıyor sanırım. Yani class isimlerini rastgele "m-b-27" diye yazamazsın. Yine de tanımlaman gerekir. Tek tek olmasa da fonksiyonlar falan var.

"m-b-27" gibi şeyleri jQuery kullanarak tanımlayabilirsin ama. Mesela jQuery'de class'ları okutup stackoverflow.com sonra m-b-X şekline olanlara istediğin özellikleri eklersin.

Ama asıl zurnanın zırt dedği yer şu, yaptığın şey komple yanlış. Görüntü detayları html'deki class listesinde olmamalı. Çünkü bir elementi bir çok yerde kullanacaksın, hepsini <div class="category title m-b-10"> diye tanımladın diyelim, hem de bir çok farklı dosyada. İleride bunların aralarındaki boşluğu değiştirmek sitersen onlarda yerde m-b-20'ye çevirmen gerekir. Ancak bu elementleri <div class="category title container"> gibi tanımlarsan, CSS'de tek seferde düzenleme yaparsın.

HTML kodunun içinde görünümle ilgili hiç bir şey olmamalı. m-b-20 gibi kısa yollar çok kötü alışkanlıklar edinmene sebep olur. Onun yerine elementlere ve class'lara tanımlayıcı isim ver. O ismi okuyan kişi, görüntü detayını anlamamalı. Renk bile kullanmamak lazım aslında. Mesela şu bile yanlış:

<div class="title red">
.red {color: #ff0000;}

Onun yerine şu olmalı:

<div class="title vurgulu">
.vurgulu {color: #ff0000;}

böylelikle ileride görüntü özelliklerini değiştirmek istediğinde class isimlerini de değiştirmek zorunda kalmazsın.

Baştan böyle alış. Her zaman "ileride görünümü değiştirmek istersem class isimlerini değiştirmek zorunda kalmamalıyım" diye düşün. "m-b-10" bu kurala uymuyor, "red" de uymuyor. Class isimleri görünümü tanımlamaz, elementi tanımlar. En doğru kullanım budur.
  • harzem  (02.10.15 01:42:34) 
@harzem cok hakli. ekleyecek hicbir sey birakmamis neredeyse.
sass/less derlemek pek sikintili is degil, ruby vs gozunu korkutmasin. grunt kullanimi uzerine turkce makaleler mevcut, bakabilirsin derleme kismi icin. less/sass yazimi konusunda da turkce/ingilizce bicok kaynak var. zaten syntax'lari benziyor. less biraz dususte bu aralar, dedigin gibi bootstrap de sass'a geciyor zaten.
bugun su linke rastladim: corpuscss.com burda birisi whitespace.css diye bir kalip hazirlamis sass icin github.com . belki bu isine yarayabilir, en azindan sen kendin yazmamis olursun ml-10 gibi kodlari. ama @harzem'in dedigi gibi bu hic iyi bi kullanim degil.
  • hjarteblod  (02.10.15 02:19:13) 
senin sorununu en iyi less.js cözer. Bircok agir web uygulamasi less.js kullanir zaten. Performans olarak neden problem olmadigina gelince? senin less css olarak yazdigin kod gelistirme asamasinda her degisiklikten sonra javascript tarafindan css olarak derleniyor ve performans düser dogrudur(kodun uzunlugune göre milisaniyeler oraninda kayip olur). fakat gelistirme yaptiktan sonra kodunu servera canli kod olarak attiginda serverda acilan kod temiz css, yani ekstra derleme felan yok. Yani derlenme olayi sadece gelistirme sirasinda oluyor.

Peki neden büyük projeler less.js kullaniyor? cünkü css de en büyük problem "encapsulation". yani bir class ismi projenin baska yerinde baska isimle kullanildiysa birbirini etkileyecektir. Bir baska neden de css kodunu belli bir hierarside göremememk okunurlugu zorlastiriyor. Less de ise tipki bir json yapisinda oldugu icin css kodlari ici ice. Css icin fonksiyon yazilabliliyor. Matematik hesaplamasi yapilabiliyor (meselab bir elemanin 100% genisliginden 10 pixel cikar gibi). Su anda milyonlarda css kodu barindiran bir projede calisiyorum less olmasa isin icinden cikamazdik.

Bu problemi bir de jquery ile cözmeye kalkarsan asil o zaman performans sorunu ile karsilasirsin. cünkü jquery kodu her web sitesini calistirginda calisacaktir, browsera ekstra yük. Ama less ile derledigin kod sadece bir kerelik css koduna dönüstürülürken performans sorunu yasayacak sonrasinda browsera temiz css gidecek.

Senin tam ihtiyacin da "parametric mixin" lesscss.org

mesela böyle bir fonksiyon yap

.m-b(@pixel) {
margin-bottom: @pixel;
}

sonra bunu böyle diledigin gibi diledigin parametre ile cagirabilirsin
header{
.m-b(10px);
}
  • emrahday  (02.10.15 10:45:31 ~ 10:57:58) 
@emrahday adamın istediği şey html içinde keyfi olarak çağırmak, css içinde değil. Less ile olacak iş değil bu. Zaten dediğim gibi method olarak da çok yanlış.


  • harzem  (02.10.15 11:40:47) 
yıllardır css kullanıyorum ciddi ve nizami bir şekilde.
neden böyle birşey yapmak istedim ve nereden aklıma böyle birşey geldi hiç bilemiyorum.
backend devam eden kariyerim 2 hafta önce direkt olarak frontende dogru yön aldı. sanırım bunalımdan saçma sapan arayışlara girmişim.
sorduktan sonra zaten bu tarz kullanmanın çok abes ve saçma olduğunu anladım.
@emrahday'in dediği tekniğe geçmeyi düşünüyorum bir süredir.
neyse bu da böyle bir anımdır.
  • vadrigar  (09.10.15 23:39:27) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.