Search by selector inside elements panel.
Show & Tell

roma★

JBB: An Artblog!
art blog(derogatory)

titsay
wallacepolsom

blake kathryn

No title available
Jules of Nature
h
Misplaced Lens Cap
Aqua Utopia|海の底で記憶を紡ぐ
Monterey Bay Aquarium

#extradirty
Cosmic Funnies
No title available
Cosimo Galluzzi

❣ Chile in a Photography ❣

Love Begins

JVL
seen from United States

seen from Canada

seen from Malaysia

seen from Singapore

seen from Australia
seen from Italy
seen from United States
seen from Colombia
seen from Israel
seen from Russia
seen from United States
seen from Argentina
seen from United States
seen from Costa Rica
seen from Oman
seen from Türkiye
seen from Brazil

seen from Indonesia

seen from United States
seen from United States
@fatihhayri
Search by selector inside elements panel.
Firefox'ta select outline sorunu ve çözümü
Kendimize özel select yaparken outline kaldırmak gerekibiliyor.
select:focus { outline: none; }
Firefox'ta işe yaramıyor.
Çözüm.
select:-moz-focusring { color: transparent; text-shadow: 0 0 0 #000; }
Tabi ki çözüm stackoverflow'dan
Kaynak: http://stackoverflow.com/questions/3773430/remove-outline-from-select-box-in-ff/11603104#11603104
JSON.stringify()
JSON hayatımızın vazgeçilmezi oldu. Bazen dönen veriyi string olarak almak istiyoruz. Çözüm çok basitmiş. Murat sağolsun.
console.log(JSON.stringify(gelen_json));
Güzel bir ipucu.
Kaynaklar
https://coderwall.com/p/feuocg
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_native_JSON
Angularjs'in güzel araçları var. (ng-bind-html)
Ben bu işi yaparken kendimi biraz marangoza benzetirim. Marangoz aletlerine ve işine olan sevgimin bunda payı çok.
Marangoz için aletleri çok önemlidir. Bizim için aletlerde kullandığımız dillerin ve betiklerin seçicileri veya metotları. Neyse lafı uzatmadan sadede geleyim.
Angularjs ile kod yazarken bir kaynaktan gelen içeriği html içine ng-bind ile ekliyorken. Bir içeriğe html kodu geliyordu bunu için ufak bir arama yapmam yetti. Angularjs'in bunun için hazır ve basit bir modülü olduğunu görmek beni sevindirdi.
ng-bind-html="description"
Güzel bir araç.
Kaynak
https://docs.angularjs.org/api/ng/directive/ngBindHtml
Websitemizin ikonunu ipad iphone için olanını nasıl ekleriz.
Aşağıdaki gibi kodlar yazmak önerilerden birisi.
<!-- Standard iPhone --> <link rel="apple-touch-icon" sizes="57x57" href="touch-icon-iphone-114.png" /> <!-- Retina iPhone --> <link rel="apple-touch-icon" sizes="114x114" href="touch-icon-iphone-114.png" /> <!-- Standard iPad --> <link rel="apple-touch-icon" sizes="72x72" href="touch-icon-ipad-144.png" /> <!-- Retina iPad --> <link rel="apple-touch-icon" sizes="144x144" href="touch-icon-ipad-144.png" />
Diğer çözüm daha kolay geldi. Apple.com da aynı şeyi yapmış.
apple-touch-icon.png
152x152 boyutunda bir ikon hazrılayıp ana klasöre(root) ekledikmi oluyor.
Kaynaklar
https://developer.apple.com/library/safari/documentation/appleapplications/reference/safariwebcontent/ConfiguringWebApplications/ConfiguringWebApplications.html
http://stackoverflow.com/a/3338847/296373
Angularjs'de dinamik eklenen form elemanlarının hata kontrolünü yapmak
Başlıkta içeriği açıklayan bir konu oldu bu. Angularjs'de formların hata kontrolü çok kolay. HTML5'in form hata kontrolünü kullanarak ve js yazmadan bu işi halledebiliyoruz.
Ancak dinamik olarak oluşturulan form elemanlarında bazı sıkıntılar ortaya çıktı. Çözüm yine stackoverflow'dan geldi.
<form name="outerForm"> <div ng-repeat="item in items"> <ng-form name="innerForm"> <input type="text" name="foo" ng-model="item.foo" /> <span ng-show="innerForm.foo.$error.required">required</span> </ng-form> </div> <input type="submit" ng-disabled="outerForm.$invalid" /> </form>
Dinamik name'ler için http://stackoverflow.com/a/15846954/296373
Kaynak:
http://stackoverflow.com/a/14379763/296373 http://stackoverflow.com/a/15846954/296373
Sublime Text kısayolu eklemek
Terminalden Sublime'a erişmek benim için vazgeçilmez oldu. Yeni makineye geçince ayarları yaptım açılıyordu. Sonra nedense açılmamaya başladı.
zsh: command not found: subl
Kaynak linkindeki stackoverflow cevabımı işimi gördü.
$ sudo rm -rf /usr/local/bin/subl $ sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin $ subl .
http://stackoverflow.com/a/19842659/296373
http://www.sublimetext.com/docs/3/osx_command_line.html
Angularjs'in bir hatasını bulduk
Yeni yapımızda angularjs kullanıyoruz. Gayet güzel işler çıkıyor.
Tabi sorunsuz olmuyor. Bir hata geri döndü. Firefox'da selectbox'ın seçili olan öğesine sayfada yapılan her ajax isteğinde selectbox açıkkken zıplama oluyor ve siz nerede olursanız olun her istekte sizi seçili öğeye odaklıyor.
Sorunu tanımlamak ve google aramak zor oldu. Açıkçası ben Ertuğ(@ertug)'dan yardım istedim. Onun sayesinde de sorunu bulduk. Nede olsa doktora öğrencisi :D
Sorunun yeni çözüldüğünü ve muhtemelen yeni sürümde düzeleceğini öğrendik.
Kaynak
https://github.com/angular/angular.js/issues/3183
https://github.com/angular/angular.js/pull/6177
Stylus'un calc() sorunu ve çözümü
Stylus hayatımızı kolaylaştırıyor. Bazı sıkıntıları oluyor ama ufak tefek olduğu için sorun olmuyor.
CSS3 cacl() özelliği gayet güzel bir özellik. Tabi hayatınızda ie8 diye bir dert yok ise.
ie8’i dert etmiyorsanız.
.icerik-alani width calc(100% - 18px)
Kullanımı çok güzel bir örnek. Stylus bu hesabı yaparken %82 çıkarıyor.
Sorunu çözmek için sadece parametreyi ters bölü(\) ile tnaımlamak gerekiyor.
.icerik-alani width calc(100% \- 18px)
Kaynak
https://github.com/LearnBoost/stylus/issues/687
Stylus kodlarını derlerken grunt hata veriyor
Stylus ile çalışırken izleme modunda çalışmak anında tepki almak için güzel. Bu işi grunt'a havale ettiğimizde bir çok işimizin yanında bunuda yapıyor sağolsun. Grunt güzel bir şey ama bende yeterince bilmiyorum. Öğrensen burada yazardım :D
Grunt bu sıralar beni üzen hatalar vermeye başladı.
segmentation fault grunt
Hatasını alıyorum belli aralıklarla. Her seferinde grunt yazıp çalıştırmaktan gına geldi. Bir arama yapayım dedim. Sonuçta nodejs'i güncelleyince sorunun çözüleceğini belirten bir arkadaş sayesinde sorunu çözdüm.
Nodejs sürümünü(versiyonu) öğrenmek için terminale
node -v
yazmak yeterli bendeki sürüm v0.8.2 idi. Güncelleme işinide http://davidwalsh.name/upgrade-nodejs adresindeki yaptım.
Kaynaklar
https://github.com/gruntjs/grunt-contrib-watch/issues/172
http://davidwalsh.name/upgrade-nodejs
transform - rotate kullanımda font-family fark sorunu
Bir buton yapıp bu butonu sayfanın sol yanına dikey oturtmaya çalıştığımızda font-family tanımınızda farklı yazı tipleri tanımladı iseniz, farklı görüntülerle uğraşmak zorunda kalabilirsiniz.
Mac Os için ayrı Windows için ayrı yazı tipi ailesi kullanıyorsanız.
body{ font-family:Lucida Grande, Arial, sans-serif; }
Gibi bir tanımız var ise.
a { display:block; float:left; background: #437DB9; padding: 10px 20px; color: #faf0fa; text-decoration:none; transform:rotate(270deg); left: -115px; top:150px; position:absolute; }
Gibi bir kodlamada Macos da farklı windows'ta farklı görüntüler oluşuyor.
Çözüm benim için sadece bu buton için aynı yazı tipinin kullanmak oldu.
http://cdpn.io/ctyAg
İnternet Explorer 11 Compatibility View List
Bir çoğunuzun bildiği gibi sahibinden.com'da çalışıyorum. Microsoft İnternet Explorer web mecrasında çalışanlar için hep sorun oldu. Yeni çıkan tarayıcısından bile bu sıkıntılar var.
Microsoft ie11 tarayıcısından bazı çok gezilen siteleri ie9 gibi yorumluyor. Bunu bir listede tutuyor. Bu listeden çıkmak için bir mail atmanız gerekiyor.
İE 11 listesi
https://iecvlist.microsoft.com/IE11/1375395130872/iecompatviewlist.xml
Eğer siteniz bu liste ise ie11 sitenizi ie11 motoru ile yorumlamıyor. Listede belirtilen sürümlerde yorumluyor. ie9 veya ie10 motoru ile. Bu da ie11 kullanan kullanıcıların sitenizi gezerken bazı yeniliklerden mahrum kalması demek.
Eğer bir kullanıcı iseniz ve bu listeyi yok saymak için
http://msdn.microsoft.com/en-us/library/ie/gg622935(v=vs.85).aspx
Burada anlatılan işi yapmak gerekiyor.
Kaynaklar
http://msdn.microsoft.com/en-us/library/gg699485(v=vs.85).aspx
http://blogs.msdn.com/b/ieinternals/archive/2013/09/21/internet-explorer-11-user-agent-string-ua-string-sniffing-compatibility-with-gecko-webkit.aspx
http://thenextweb.com/microsoft/2013/10/19/microsoft-blames-google-makes-adjustments-ie11-windows-8-1-renders-search-engine-correctly/#!tXYmq
Firefox'da iframe içeriği yüksekliği daha ufak
Bir işimizde iframe yüksekliğini içeriğe göre ayarlamamız gerekiyordu. Kodumuzu yazdık. Sonuçta Chrome'da sorunsuz çalışan kod Firefox'da scroll çıkarıyor.
contentWindow.document.body.scrollHeight
İle aldığımız içerik yüksekliği Chrome'da farklı Firefox'da farklı geliyor.
İnternette biraz araştırma yapınca tarayıcıların yükseklik alma işinde farklı yöntemleri olduğunu öğrendim.
contentDocument.documentElement.scrollHeight
kodu ile yüksekliği alınca sorunum düzeldi. Kaynaktaki arkadaşın dediği gibi Chrome ve İnternet Explorer yukarıdaki kodu desteklerken Firefox ve Opera aşağıdaki kodu kullanıyor imiş. Ben test ettim. Son yazdığım kod tüm tarayıcılarda çalıştı.
Kaynak
http://w3schools.invisionzone.com/index.php?showtopic=43108
İnternet Explorer CSS Düzeltmesi(hack) Yazmak İçin Şartlı Yorumları Kullanmak(Html5 Boilerplate gibi)
CSS ile kod yazarken en büyük sıkıntılarımızdan birisi farklı tarayıcılarda farklı görünen sitemizi düzeltmek için tarayıcı farklılıklarını düzeltmek. Bu konuda genelde İnternet Explorer için çözümler üretilmektedir. İnternet Explorer 6 ve 7 için css de ürettiğimiz yıldız(*) ve (_)alt çizgi çözümleri kolaydı. Ancak ie8 ve ie9 için css ile önerilen düzeltmeler hem karmaşık hemde tam cevap vermiyor.
Html5 Boilerplate(hızlı başlangıç için hazır şablonlar sunan bir yapı olarak kısaca açıklayayım) bu sorunun çözümü için İnternet Explorer Şartlı Yorumlarını kullanıyor. Bir çok kişide bu koddan ilham alarak bu çözümü kullanıyor.
Kod çok karışık değil gayet basit. İnternet Explorer sürümlerini ayırt etmek için kullanılan şartlı yorumları kullanarak oluşturulan çözüm.
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]--> <!--[if IE 7]> <html class="lt-ie9 lt-ie8"> <![endif]--> <!--[if IE 8]> <html class="lt-ie9"> <![endif]--> <!--[if gt IE 8]><!--> <html class=""> <!--<![endif]-->
Bizim gibi İE7 kullanmıyorsanız.
<!--[if IE 8]><html class="ie8"><![endif]--> <!--[if IE 9]><html class="ie9"><![endif]--> <!--[if gt IE 9]><!--><html><!--<![endif]-->
İki satırlık kod ile ie8 ve ie9 sınıflarını html etiketine ekliyoruz. Daha sonra CSS kodumuzda ie8 ve ie9 için kod farklı kod yazmamız gerektiğinde
.emekleriCaldinYine { margin:10px; } .ie8 .emekleriCaldinYine { margin:20px; }
Bu kadar basit.
İnternet Explorer 10 ve 11 şarlı yorumları desteklemiyor. Nisbeten ie10 ve ie11 daha mantıklı yorumluyor siteleri.
Kaynaklar
http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/
https://github.com/h5bp/html5-boilerplate/blob/e5e057e53815ed55f4ecfaef3057bf2940c7c0b2/demo/elements.html
http://misteroneill.com/journal/improved-internet-explorer-targeting-through-body-classes/
http://richardneililagan.com/2012/01/learning-html5-boilerplate-part-1/
http://scottnix.com/html5-header-with-thematic/
http://htmlcssjavascript.com/html/how-did-the-ie-conditional-classes-get-on-the-html-element-in-html5-boilerplate/
autocomplete="off" ile form verilerinin zulalanmasını engellemek
Bir istek sonucu; arama alanı içinde yazılan değerin, kullanıcının arama sonuç sayfasına yönlendirildikten sonra geri tuşuna bastığında arama input'u içindeki metnin kaybolması yönünde bir iş geldi önüme.
Uzun aramalar(@muratcorlu ile birlikte) sonucu bu durumun autocomlete="off" ile yapılabildiğini öğrendik.
Ben normalde autocomlete="off" değerinin girdi alanlarında daha önce girdiğimiz verileri zulada(cache) tutalmaması için kullanılan bir özellik olduğunu düşünüyordum. Bu bazen avanatj iken bazende istenilmeyen bir durum olduğu için on ve off diye iki değeri var.
<input type="text" name="ara" autocomplete="off">
Böyle bir iş ile birlikte aslında form etiketi içine yazıldığında tüm form elemanlarının zulada kaydedilmemesini sağlıyor.
Küçük bir bilgi daha bu işi javascript ile yaptığınızda işe yaramıyor. İlla ki html'le elle girmeniz gerekiyor. Muhtemelen
Bilgi işinize bir ara yarar belki. ie 10. sürüme kadar desteklemiyor.
https://developer.mozilla.org/en-US/docs/Mozilla/How_to_Turn_Off_Form_Autocompletion
Duyarlı(Responsive) Web Sayfaları Yapmak (TASLAKTIR)
Erişebilir sayfalar yapmaktan kastım aslında farklı araçlardan web sitelerimize erişimi sağlamak amacıyla kodlarımıza çeki düzen vermek.
Başlangıçta media query ile işi hallederiz gibi görünen erişebilir web sayfaları yapma işi; işin detayına inince o kadar da kola olmuyor.
Meta Eklemesi
Birçok mobil cihaz web siteleri göstermek için genişliği sığdırmaya çalışır. Meta etiketinin viewport tanımını kullanarak bu durumu sıfırlayabiliriz.
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0;">
Yukarıdaki kod ile biz mobil cihazlara genişlik olarak aletin genişliğini kullanmasını, initial-scale değerini sıfırlayıp maximum-scale değerini de sıfırladık. maximum-scale bazı yerlerde yazılmamış, bende bundan dolayı yatay dikey kullanımda büyümelere neden oldu maximum-scale yazınca düzeldi.
Son olarakta kullanıcının yakınlaştırmasını engellemek için user-scalable değerini sıfırlıyoruz.
Medya Sorgu Desteği
Duyarlı web sayfaları kodlarken medya sorgularını çok sık kullanacağız. CSS 3 medya sorguları yazısında bahsettiğimiz özelliğin tek sorunu İnternet Explorer 8 ve öncesi sürümlerde desteklemiyor olması.
ie8 ve öncesi sürümler için javascript yardımını almak zorundayız. media-queries.js veya respond.js çözümlerinden birini kullanarak çözüm sağlayabiliriz.
<!--[if lt IE 9]> <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> <![endif]-->
veya
<script type=”text/javascript” src=”/link/to/your/respond.min.js”></script>
Medya Sorgu Şablonu
Farklı araçlar için farklı medya sorguları yapıyoruz. Genel bir şablon çıkarmak gerekirse. “Hardboiled CSS3 Media Queries.” örnek olarak kullanabiliriz.
`/* Smartphones (portrait and landscape) ----------- / @media only screen and (min-device-width : 320px) and (max-device-width : 480px) { / Styles */ }
/* Smartphones (landscape) ----------- / @media only screen and (min-width : 321px) { / Styles */ }
/* Smartphones (portrait) ----------- / @media only screen and (max-width : 320px) { / Styles */ }
/* iPads (portrait and landscape) ----------- / @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) { / Styles */ }
/* iPads (landscape) ----------- / @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) { / Styles */ }
/* iPads (portrait) ----------- / @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait) { / Styles */ }
/* Desktops and laptops ----------- / @media only screen and (min-width : 1224px) { / Styles */ }
/* Large screens ----------- / @media only screen and (min-width : 1824px) { / Styles */ }
/* iPhone 4 ----------- / @media only screen and (-webkit-min-device-pixel-ratio : 1.5), only screen and (min-device-pixel-ratio : 1.5) { / Styles */ }`
Genel şablonu kullanışlı. Burada istediğimiz medya bloğunu çıkarbiliriz veya kendi ihtiyaçlarımız için eklemede yapabiliriz.
Sabitten Esneğe Geçiş Hesabı
Duyarlı web sayfalarını geçiş yaparken esnek yapılı sayfa planları hazırlamak en mantıklı yol gibi görünüyor. Sabit genişliğimizi esnek yapıya çevirmek için basit bir hesaplama yöntemi var.
hedef ÷ kapsayıcı = sonuç
Örneğin 984px genişlikte bir ana kapsayıcı elemanımız var ve iki kolondan oluşuyor. İçerik alanı genişliği 728px olsun. İçerik alanının esnek genişliğini bulalım.
728 ÷ 984 = 0.7398374
Değerini elde ediyoruz. Burada yüzde değerini iki basamak sağa kaydırmamız gerkiyor.
#icerikalani{ width:73.98374%; float:left }
sonucuna ulaşacağız. Tüm genişliklerimizi bu şekilde çevirerek sonuca ulaşabiliriz.
Duyarlı Resimler
Önem Derecelerini Belirleme ve Gizleme
Kaynaklar
http://www.alistapart.com/articles/responsive-web-design/ (konuya giriş)
http://www.suaygiri.com/responsive-web-design-neden/comment-page-1/ (konuya giriş)
http://webdesignerwall.com/tag/responsive-design (Tüm responsive makaleleri)
http://www.smashingmagazine.com/responsive-web-design-guidelines-tutorials/
http://www.netmagazine.com/features/ethan-marcottes-20-favourite-responsive-sites (örnek siteler)
http://www.netmagazine.com/features/50-fantastic-tools-responsive-web-design (araçlar)
http://mediaqueri.es/ (örnek siteler)
http://www.abookapart.com/products/responsive-web-design (kitap bölümü)
http://www.vanseodesign.com/web-design/why-responsive-design/
http://www.responsivegridsystem.com/ (grid sistemi)
http://smashinghub.com/responsive-web-design-an-ultimate-guide.htm
http://informationarchitects.net/blog/responsive-typography-the-basics/ (tipografik açıdan)
http://dbushell.com/2012/06/17/passenger-focus-responsive-web-design-case-study/
http://designshack.net/articles/css/responsive-design-why-youre-doing-it-wrong/ (neleri yanlış yapıyoruz)
http://designshack.net/articles/css/5-really-useful-responsive-web-design-patterns/ (responsive şablonları)
http://thesassway.com/intermediate/responsive-web-design-part-1 (sass)
http://html5.gen.tr/responsive-web-design-duyarli-tasarim/
http://mobifreaks.com/user-interface/responsive-and-seo-friendly-data-tables/ (tablo)
http://css-tricks.com/responsive-data-tables/ (tablo)
http://atlason.com/ (tablo)
http://canuzunoglu.com/responsive-web-sitesi-gelistirme/
http://css-tricks.com/snippets/css/media-queries-for-standard-devices/ (şablon)
http://www.templatemonster.com/infographics/responsive-web-design-interactive-guide.php (infografi)
http://www.hongkiat.com/blog/responsive-web-nav/ (menü)
http://www.developerdrive.com/2012/01/developing-a-responsive-website-part-2-navigation-and-content/ (menü)
http://www.webdesignerdepot.com/2012/07/adaptive-images-solving-the-responsive-image-problem/ (resimler için çözüm)
http://stuffandnonsense.co.uk/blog/about/hardboiled_css3_media_queries
http://www.elated.com/articles/responsive-web-design-5-handy-tips/ (ipuçları)
http://coding.smashingmagazine.com/2012/02/13/progressive-and-responsive-navigation/ (duyarlı web ve menüler)
http://nicolasgallagher.com/responsive-images-using-css3/ (duyarlı resimler)
http://azadcreative.com/2012/07/responsive-mobile-first-navigation-menu/ (duyarlı web ve menüler)
http://www.vanseodesign.com/web-design/media-query-breakpoints
http://jasonweaver.name/lab/flexiblenavigation/ (menü scripti)
http://nmsdvid.com/snippets/
http://www.netmagazine.com/features/top-responsive-web-design-problems-and-how-avoid-them (sorunlar ve çözümleri)
http://teamtreehouse.com/blog/beginners-guide-to-responsive-web-design (başlangıç)
http://www.tegdesign.com/tegansnyder-JQuery-Mobile-Slide-Menu/ (menü)
http://jsfiddle.net/WMGXr/1/
http://www.netmagazine.com/features/road-responsive-images (resim)
http://blog.teamtreehouse.com/responsive-web-design-in-the-browser-part-2-the-tools
http://blogs.adobe.com/webplatform/2012/09/19/responsive-images-for-html5/ (resim)
http://webdesign.tutsplus.com/tutorials/site-elements/big-menus-small-screens-responsive-multi-level-navigation/ (menü)
http://sixrevisions.com/design-showcase-inspiration/responsive-webdesign-examples/ (örnekler)
http://www.frequency-decoder.com/demo/slabText/ (metinler)
http://foundation.zurb.com/responsive-tables.php (tablo)
http://www.onextrapixel.com/2012/09/20/responsive-web-development-as-a-standard-step-by-step/ (adım adım)
http://viljamis.com/blog/2012/adaptive-vs-responsive-whats-the-difference.php
http://www.maxdesign.com.au/articles/three-tips/ (ipuçları)
http://www.zurb.com/playground/responsive-tables (tablo)
CSS Ön-derleryicileri ile Dinamik CSS Yazmak (TASLAKTIR)
CSS ile kod yazarken büyük projelerde ne kadar dikkatli olsak da sonunda binlerce satırlık kodlar çıkabiliyor. Düzenli olmamız ve Firebug yardımı olsa da bu kodlar içinde dolaşmak ve yönetmek bazı sorunlar neden oluyor. CSS ön-derleyicileride burada devreye giriyor.
CSS ön-derleyicileri değişken tanımı, css fonksiyonları, fazla kod işaretçilerinden kurtarma kalıtsallık ve 4 işlem gibi özellikleri ile bizlere yardımcı oluyor. Kısacası CSS’e dinamik bir yazım kazandırıyor.
Ben burada size bilenen 3 ön derleyicinin karşılaştırmasını yapacağım, karar vermek zor, ama şöyle bir durum var ki hangisine karar verirsek verelim çok büyük kaybımız olmayacaktır.
Başlangıç
Başlama bakımından less sadece bir js dosyası ile başlayabildiğimiz için daha mantıklı less tak-çalıştır mantığı ile çalışırken sass ve stylus için biraz ortam hazırlamak gerekiyor.
Tabi bu ortam hazırlama işini bir sefer yapıyoruz.
Daha az kod yazmak, Esneklik
Stylus ile daha az kod yazıyoruz, ancak daha az kod yazarken kod içinde kaybolmuyoruz?
Sass ve Less bu konuda normal css işaretlerini kullanırken stylus bu konuda bayağı bir esneklik sağlıyor. Sass’ında Stylus benzeri kullanım opsiyonu var.
body
padding 10px 5px
İç İçe Seçiciler (Nesting)
Etkinlik için ard arda uzun seçiciler yazmak yerine iç içe tanımlar ile bu daha kolay sağlanır. Bu bize temiz bir Kalıtsallık sağlar ve kısa kodlama.
Ancak sass bunu desteklerken stylus’un desteklememeside bir eksi olabilir.
Değişkenler(Variable)
Değişkenler bir kere tanımlanan bir değeri bir çok defa kullanmamızı sağlayan yapılardır. Bir yerde değiştirdiğimizde tüm projede değiştirmenize olanak sağlar.
Değişken kullanımı css prececor ile yapılan güzel bir özellik ki CSS4 ile birlikte normal css’e de geldi.
Kalıtsallık
Bir özelliğin veya benzer bir sınıfın diğer bir özelliğe kalıtsal olarak geçmesini sağlar.
Özellik için değişken kullanımı stylus daha avantajlı görüldü.
CSS Foksiyonları(mixing)
Css fonksiyonları bir sınıfa tanımlanmış tüm özellik leri başka bir yerde kullanmanıza yarar. Değişkenlere benzer fakat tüm sınıfı içerir. Ayrıca fonksiyon gibi parametre de alabilir.
Stylus’un az kod yazma prensibi bu tip karmaşık yapılarda öne çıkıyor.
Renk Tanımları
renk geçişi ve renk tanımlarında
4 İşlem
Her birinde dört işlemi CSS içinde yapabiliyoruz.
Editör Özellikleri
http://www.viget.com/inspire/some-lesser-known-features-of-less/
http://coding.smashingmagazine.com/2011/09/09/an-introduction-to-less-and-comparison-to-sass/
http://www.sitepoint.com/a-comprehensive-introduction-to-less/
http://www.vanseodesign.com/css/css-preprocessors/ (****)
http://www.hongkiat.com/blog/less-tips-tools/
http://designshack.net/articles/css/sass-vs-stylus-who-wins-the-minimal-syntax-battle/ (sass ve stylus karşılaştırması)
http://net.tutsplus.com/tutorials/html-css-techniques/sass-vs-less-vs-stylus-a-preprocessor-shootout/ (sass, less ve stylus karşılaştırması)
http://learnboost.github.com/stylus/
http://css-tricks.com/poll-results-popularity-of-css-preprocessors/ anket
http://css-tricks.com/sass-vs-less/ sass ve less karşılaştırması
http://thechangelog.com/stylus-expressive-robust-feature-rich-css-language/ (stylus)
http://www.sitepoint.com/a-comprehensive-introduction-to-less/ (less e başlamak)
http://www.sitepoint.com/a-comprehensive-introduction-to-less-mixins/ (lesss mixins)
http://verekia.com/less-css/dont-read-less-css-tutorial-highly-addictive (less)
http://webmagazin.co/sass-kullanalim-ve-kullandiralim/ (sass)
http://webmagazin.co/less-csse-heyecan-katin-genel-bakis/ (less)
http://www.wellfireinteractive.com/blog/introduction-to-stylus/ (stylus)
http://nylira.com/stylus-the-revolutionary-successor-to-css/ (stylus örnek kaşılaştırma)
http://visionmedia.github.io/nib/ (stylus)
http://robdodson.me/blog/2012/12/28/debug-less-with-chrome-developer-tools/ (less chrome)
STYLUS Kullanmak
Kurulum
Node.js kurmak
http://joyent.com/blog/installing-node-and-npm/
NPM kurmak
npm kurarken hata verdi
http://stackoverflow.com/questions/7507720/error-installing-npm-for-node-js
çözdü
Sonrasında node.js paket yöneticisi npm yardımı ile stylus’u kuruyoruz.
sudo npm install -g stylus
Her yerden erişmek için -g kullanıyoruz.
**Sublime Text 2 için stylus **
https://github.com/billymoon/Stylus/
indirme
NIB
http://willnathan.com/valise/2013/3/22/installing-nib-for-stylus-within-express
Stylus ile çalışmak
komut satırından
stylus -w klasor_adi
çalıştırarak yaptığımız değişiklikleri anında css çevrilmesini ve tarayıcıda görmemizi sağlıyor. Benim ilk önderleyici kullanımından vaz geçiren özellik bu idi.
Dosya yapısı
Önderleyiciler ile çalışırken dosya yapısını baştan kurmak mantıklı bootsrap benzer bir yapıyı örnek alarak bir yapı oluşturdum.
./index.html |-- index.styl |-- reset.styl |-- buttons.styl |-- global.styl
Böyle farklı dosyalardan mixing yapabiliyoruz.
Değişekenler
Diğer derleyicilerden farklı olarak herhangi bir işaret kullanmadan direk tanım yapılır
stadartSpace = 10px
Stylus un diğerlerinden farklı güzellik leri özellik yakalama özelliğidir
logo
position: absolute top: 50% left: 50% width: w = 150px height: h = 80px margin-left: -(w / 2) margin-top: -(h / 2)
Ayrıca değişken tanımlamadan da yapılır.
logo
position: absolute top: 50% left: 50% width: 150px height: 80px margin-left: -(@width / 2) margin-top: -(@height / 2)
Ayrıca koşullu değişken tanımı da vardır.
position() position: arguments z-index: 1 unless @z-index
logo
z-index: 20 position: absolute
logo2
position: absolute
Tanımı ile z-Index tanımı olmayanlara 1 otomatik olarak tanımlanır.
Özellik bakma özelliği değer bulana kadar yukarı çıkar.
body color: red ul li color: blue a background-color: @color
Link rengi mavi olacaktır.
Yorum
Stylus’da yorumlar javascript kullanımı gibi
// ie7 fix et body margin 0 // ie7 fix /* * Çoklu satırlı yorum */
CSS Fonksiyonları(mixing)
Javascript’ten alıştığımız fonksiyonlara yakın bir kullanımı olan mixing’in kullanımı çok basit.
border-radius(n) -webkit-border-radius n -moz-border-radius n border-radius n
form input[type=button] border-radius(5px)
Sınıf Kalıtsallık
red = #E33E1E yellow = #E2E21E
.message padding: 10px font: 14px Helvetica border: 1px solid #eee
.warning @extends .message border-color: yellow background: yellow + 70%
.error @extends .message border-color: red background: red + 70% .fatal @extends .error font-weight: bold color: red
CSS’e dönmek
Bazı nednelerdenden dolayı stylus ile sorun yaşadığınız kod bloklarında css’e geri dön demek mümkün.
@css{ footer:after{ background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjQ3JSIgc3RvcC1jb2xvcj0iI2ZhZmFmYSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmNmY2ZjYiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); }
}
svg kullanımı için çözüm bulamadım çözüm css dönmek.
Stylus ile sprite kullanmak
https://github.com/andris9/stylus-sprite
Firebug da stylus satır numaralarını görmek
Firestylus
Otomatik tamamlama
İlk başta biraz alışmak gerekiyor ama sonra kendi yazdıkların tekrarlayınca hızlanıyorsun.
Gizli karakterler göstermek
Stylus ile kod yazarken boşluk, tab ve enter karakterlerini görmek koddaki sıkıntıları görmek için avantaj sağlıyor. Sublime Text’in böyle bir özelliği yok ama Trailling Settting diye bir eklenti ihtiyaçları karşılıyor gibi.
preferences->settings-default 'ta "draw_white_space":"all" yaparak gösterebiliyoruz.
CSS Kodlarımızı Stylus’a çevirmek
Çok basit yöntem var.
stylus -C dosya_adi.css cikan_dosya.styl
ve css dosyamız styl çevrildi.
http://css2stylus.com/ çevrimi içi araç stylus dan daha iyi çeviriyor.
https://npmjs.org/~tjholowaychuk (stylus geliştiricilerinden) https://npmjs.org/~kizu (stylus geliştiricilerinden) ie için çözüm önerisi
Sorunlar
sublime text 2 stylus otomatik tamamlamayı çalıştıramadım
Firestylus çalıştıramadım, veya stylus -l şeklinde css içine basıyor.
Girintileme nedeni ile çıktı olan css de seçici zinciri uzuyor
özellik seçicileri kullanımında sıkıntı var
otomatik kısaltma bazı sorunlara neden oluyor. örn #ffffff
https://github.com/LearnBoost/stylus/issues/581 burada çözümü var, ama -1 aldı benden
https://github.com/shomeya/bootstrap-stylus/blob/v1.4.0-stylus/lib/mixins.styl (stylus örnekleri)
http://daker.me/2013/07/why-stylus-fit-better-my-needs.html