3/5/2007
Dinamik bir web sitesi oluşturma makale serisinin bu ilk bölümünde, tasarımı master page’e oturtma ve CSS kuralları oluşturmayı inceleyeceğiz. Bu sürecin, önceki makalelerden farkı bu işlemleri değişik yollar izleyerek yapacak olmamız. Daha çok Expression Web araçlarını kullanarak oluşturacağımız bu site örneğinin, web tasarımına yeni başlayanlar ve CSS’e tam hakim olmayanlar için yararlı olacağını düşünüyorum. Bu makalede de siteyi table kullanmadan oluşturacağız.
Oluşturacağımız site basit bir FRP(Fantasy Role Playing) kitap sitesi. Bu sitede kitapların tanıtımları, listesi, yazarlar, mesajlar gibi bölümler olacak ve bunların hepsi dinamik olarak oluşturulacak.
İlk önce site için lokalde bir klasör yarattım. “Doc” da site için dokümanlar, “Logovs” de sitenin kaynak dosyaları, “images”de ise sitenin imajları bulunacak.
Hazırlayacağımız siteyi şu şekilde tasarladım. Header, footer ve sol navigasyon alanı Master Page’de oluşturulacak. Sağ kısım ise değişen içerik alanı olacak.
Siteyi EW’ye (Expression Web) tanıtmak ile başlıyalım.
File>New>Web Site ile New penceresini açıyoruz.
Web Site tabında, General, Empty Web Site’yi seçiyoruz.
Browse ile sitenin duracağı klasörü seçiyoruz ve Open’a basıyoruz.
Daha sonra sitemizin ismini klasörlerin devamına elle yazıyoruz.Bu örnekte “FRP Kitap Sitesi”ni kendimiz yazdık. OK’e basıp işlemi tamamladık.
EW lokaldeki klasörün içinde ismini bizim belirlediğimiz bir klasör yarattı. Tüm çalışmalar, bu klasörün içinde gerçekleştirilecek.
Fark ettiyseniz “images” klasörü “FRP Kitap Sitesi” klasörünün dışında kaldı. Oysa biz o imajları sitede kullanacağız. Bu sebeple o klasörü site klasörünün içine almamız gerekiyor.
File>Import>File
Açılan Import penceresinde, “Add Folder” a basarak images klasörümüzü bulup ekliyoruz ve OK diyerek işlemi bitiriyoruz.
Şimdi Master Page’i oluşturalım. Daha önceki makalelerimde Master Page’in ne olduğunu açıklamaya çalışmıştım. Kısaca değinmek gerekirse, master page bir şablondur. Sitenizin değişmeyen alanlarını master page’de oluşturur, tüm sayfaları bundan türetirsiniz. Daha önceki makalelerimde Dynamic Web Template ile Master Page arasındaki farkları anlatmıştım ama burada bir şey daha eklemek isterim. Master Page’nizde bir değişiklik yaptığınızda, master page’den yaratılmış sayfalar hiç bir şey sormadan otomatik değişir. Bunu yanında Dynamic Web Template’de değişiklik yaparsanız Dynamic Web Template ile yaratılmış sayfaları update etmek isteyip istemediğinizi soran bir ekran gelir.
Master Page için File>New>Page
Açılan New penceresinde Page tabında General’dan Master Page’i seçiyoruz. Programming Language aslında tasarımcıyı pek ilgilendiren bir seçenek değil. Bu daha çok sitenin kodlamasını, programcı arkadaşlarınızın hangi dille yapacağına ya da programcı iseniz hangi dili kullanıyor olduğunuza bağlı. Biz C# seçip OK ile işlemi tamamlıyoruz.
ContentPlaceHolder’lı Master Page’imiz açılıyor.
ContentPlaceHolder’ı seçip siliyoruz. Tasarımı sonlandırana kadar buna ihtiyacımız olmayacak. En sonunda biz kendimiz ContentPlaceHolder ekleyeceğiz. Bu işlemi tagların göründüğü barda, tagın yanındaki oka tıklayıp açılan menüden yapabileceğiniz gibi (Remove Tag), direk Delete tuşuyla da yapabilirsiniz. Tagları barındıran bar iç içe girmiş tagları seçmenizde de size çok yardımcı olacaktır.
Artık Master Page’imizi kaydedebiliriz. İsim verip kaydetmek istediğimizde bir uyarı alıyoruz. Bu uyarı ContentPlaceHolder’ı silmemizden kaynaklanıyor. Biz sonra Content alanı ekyeceğiz. Yes’e basıp uyarıyı geçiyoruz.
Bu makalede diğerlerinin aksine external CSS sayfası açmayacağız. Tüm bu işleri bizim için Expression Web yaptıracağız. Şimdi tasarımımızı master page’e oturtmaya başlayabiliriz.
File>Properties ile veya sayfanın boş bir yerine sağ klik “Page Properties” ile Page Properties penceresini açıyouz. General tabında title ile Keywords’leri yazıyoruz
Language tabında sitemizi Türkçe olarak ayarlıyoruz.
Şimdi BODY, CSS’ini oluşturacağız. Bu makalede bunu yaparken değişik ve daha kolay bir yol izleyeceğiz. Manage Styles kutucuğundaki New Style… linkine tıklıyoruz. (Manage Styles eğer çalışma ekranınızda değilse menüden Task Pane ile açabilirsiniz.)
Karşımıza CSS kurallarını kolayca yazabileceğiniz, New Style penceresi geliyor.
Selector alanına istediğimiz ismi verebiliriz. Ama hazır CSS kuralları için bir listede mevcut. Bu listeden “body”yi seçiyoruz. (Bu liste ayrıca hazır CSS kurallarını bir arada görmeniz açısından da güzel bir fırsat). “body”‘yi seçtikten sonra font sitillerimizi oluşturuyoruz.
Her şeyi belirlemeniz New Style penceresi ile oldukça kolay. Şimdi “background” u oluşturalım. background-color rengi için “More Colors…”ı seçiyorum.
Gelen pencerede Value kutusuna “3F3F3F” renk kodunu yazıp Enter’a basınca alttaki alttaki şekle geliyor. OK deyip çıkıyorum.
Değerleri seçmek yerine elle girebileceğinizi de unutmayın. Sırada “background-image” ve onun repeate’i var. Bunları da giriyorum. (Arka plan imajını girerken tam yol gelip gelmediğine dikkat edin. Eğer bu olursa kutunun içine tıklayıp silerek düzeltmenizi yapabilir, linkinizi göreceli hale getirebilirsiniz.)
Peki bu ana kadar arka planda neler oldu. Expression Web neler yaptı. Sol altta yer alan görünüm butonlarıyla bunu kontrol edebilirsiniz.
Şu ana kadar yaptıklarımızın sonucunda EW’nin ürettiği kod aşağıdaki gibidir. Burada kırmızı olan koda dikkat edin. Bu daha önce external CSS dosyalarına yazdığımız, CSS’den başka bir şey değil. Ama sayfanın HEAD tagının içinde yer alıyor. Peki yüzlerce satır CSS yazacaksak, zaten kod içinde olan sayfaların üstüne CSS yazmak biraz kötü bir şey değil mi? Bunu hiç dert etmeyin. Biz devam edelim. EW zamanı geldiğinde bu düzenlemeyi sizin için yapacak.
<%@ Master Language=”C#” %>
<html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head runat=”server”>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″ />
<meta http-equiv=”Content-Language” content=”tr” />
<title>FRP Kitap Merkezi</title>
<asp:ContentPlaceHolder id=”head” runat=”server”>
</asp:ContentPlaceHolder>
<style type=”text/css”>
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #FFFFFF;
background-color: #3f3f3f;
background-image: url(‘images/backImg.jpg’);
background-repeat: repeat-x;
}
</style>
<meta name=”keywords” content=”FRP, kitap, yazar” />
</head><body>
<form id=”form1″ runat=”server”>
</form>
</body>
</html>
Biz tasarımı uygulamaya devam edelim.
Design görünümündeyken, FORM tagının içine tıklayıp Toolbox>Tags altındaki <div> objesine çift tıklıyoruz. Bu bizim header DIV’imiz olacak.
Manage Styles kutusundaki New Style… a tekrar tıklayıp New Style penceresini açıyoruz. Selector’un ismini bu sefer biz veriyoruz. İsmin önüne neden “#” eklediğimizi veya ne zaman “#” ne zaman “.” ekleyeceğimizi önceki makalelerimde anlatmıştım. DIV için Position’da “Width” ve “height” yazıyoruz. Ardından position’da margin right ve left’i auto yapıyoruz. Bu DİV’imizi her zaman sayfaya ortalayacak. Biz sitilleri yazdıkça alttaki description alanında yazılanların gösterildiğine dikkat edin.
CSS kuralımız hazır.
Yapmamız gereken DIV’i seçip, Apply Styles kutusunda “#header” kuralına tıklamak. Peki DIV i seçmenin en kolay yolları nelerdir? HTML’e hakimseniz, Split görünümünde DIV’i seçebilirsiniz. Ya da DIV’inde içine Design görünümünde tıklayarak, Tagların göründüğü barda DIV’e tıklayarak seçebilirsiniz. CSS’i DIVe bağlıyoruz. Sonuç.
Şimdi DIV’in içine header imajını giriyoruz. Lütfen imajlarınıza “alternate text” vermeyi unutmayın.
<img alt=”FRP Kitap Merkezi” src=”images/header.jpg” width=”960″ height=”228″ />
</div>
Şimdi imaja ana sayfaya dönmek için link vereceğiz. Üstüne tıklıyoruz. Ya menu’den Insert>Hyperlink’e ya da bar’dan Hyperlink kısa yoluna tıklayarak, hyperlink penceresini açıyoruz. Address bölümüne linkimizi elle yazıyoruz çünkü henüz böyle bir sayfa yok.
Şimdi içeriğin bulunacağı alanı oluşturacağız. Header DIV’nin hemen altına bir başka DIV tagı açıyoruz. Bu DIV seçiliyken Manage Styles’dan New Style basıyoruz. ismi “#container” olarak belirliyoruz. Widht,i 960px, right ve left marginleri auto yapıyoruz. Burada dikkat edeceğimiz şudur. Eğer New Style’a bir tag’ı (burada DIV) seçerek basarsanız ve “Apply new style to document selection” kutucuğunu işaretleyerek OK basıp işleminizi bitirirseniz, seçtiğiniz DIV ile CSS kuralınızı bağlanmış olarak işinizi bitirirsiniz.
Aslında #container’a arka plan resmide ekleyecektik ama ilk seferde bunu unuttuk. Şimdi container kuralını düzenleyelim. İlk önce Manage Styles ve Apply Styles kutularında kuralların üzerinde mouse imlecini bekletince, o kural ile ilgili tüm sitilleri görebileceğimizi söylemeliyim. Güzel bir özellik.
Düzenlemek isteğimiz CSS kuralına sağ klik yapıp Modify Style tıklayınca açılan pencereden CSS’imizi düzenleyebiliyoruz.
container kuralına background imajı ekliyoruz.
Şimdi footer’ı oluşturacağız. İlk önce container DIV’in altına bir DIV daha giriyoruz. Bu DIV seçiliyken New Style’a basıyoruz.Marginlerimizi, backgroundumuzu, uzunlukları belirliyoruz. Apply new style to document selection seçiliyken OK deyip çıkıyoruz.
Şimdi container’in içinde bulunacak alanları oluşturalım. İlk önce navigasyon. Container DIV’nin içinde bir DIV yaratıyorum. Bu navigasyonu içinde tutacak DIV olacak. DIV seçiliyken New Style ile sitilleri belirliyorum.
border: 1px solid #3F3F3F;
float: left;
background-color: #B9B8AE;
width: 228px;
margin-left:5px;
}
More Colors penceresinde Select ile renk çalabilirsiniz.
Tekrar container DIV’nin içine bir DIV daha giriyorum bu da bizim içerik alanımızı oluşturacak. New Style ile CSS kuralını hazırlıyoruz.
margin-left: 10px;
float: right;
width: 690px;
margin-right: 10px;
}
Şimdi container içine son bir DIV ekliyoruz. Bu DIV container ve navBox DIV’lerinin altında yer almalı. Açacağımız bu son DIV ile Firefox uyumluluğunu sağlayacağız. Bu DIV için alttaki kuralı New Style ile oluşturuyoruz.
clear: both;
height: 1px;
font-size: 1px;
line-height: 1px;
margin-bottom: -1px;
}
Şimdi sitenin linklerini oluşturalım. New Style’a basıyoruz ve Selector menüsünden a:link’i seçerek linkimizi hazırlıyoruz.
Şimdi visited ve hover’ıda hazırlayacağız ama bunu yaparken farklı bir yol izleyeceğiz. Manage Styles’da “a:link”e sağ klik yapıp açılan menüden “New Style Copy”ye tıklıyoruz. New Style penceresi açılıyor. Yeni oluşturacağımız sitilin Selector’den ismini ve özelliklerini değiştirdiğimizde yepyeni sitilimiz hazır oluyor. Bir birine benzeyen CSS kuralları yazma aşamasında bu özellik işinizi çok kolaylaştıracaktır.
Link kurallarımızı oluşturduğumuza göre şimdi navigasyona geçebiliriz. İlk önce DOC klasöründe word’de yazdığım navigasyonu kopyalıyorum.
navBox DIV’nin içine yapıştırma işlemi için Edit>Paste Text’i seçiyorum.
Açılan Paste Text penceresinde “Normal paragraphs without line breaks” i seçip OK’e basıyorum.
Menünün <p> taglarıyla geldiğini Split görünümünden görebilirsiniz.
<p>Ana Sayfa</p>
<p>Kitap Listesi</p>
<p>Yazarlar</p>
<p>Mesajlar</p>
<p>FRP Nedir?</p>
</div>
Design görünümündeyken sol kliğe basılı tutarak menüyü seçiyoruz ve menüden Formt>Bullets and Numbering’e tıklıyoruz.
Açılan Bullets and Numbering penceresinde Plain Bullets tabına tıklayıp, sol üstteki görünümü seçiyoruz.
Bu işlemin sonucunda menünüzün alttaki şekilde taglandığını göreceksiniz.
<ul>
<li>Ana Sayfa</li>
<li>Kitap Listesi</li>
<li>Yazarlar</li>
<li>Mesajlar</li>
<li>FRP Nedir?</li>
</ul>
</div>
Bu işlemlerin sonucunda menünün aldığı görünüş istediğimiz bir görüntü değil. Elbette bunu değiştireceğiz ama önce menü elemanlarına linklerini verelim.
Tek tek menü elamanlarını seçip “Insert Hyperlink” butonuyla gelen ekrana ileride oluşturacağımız sayfa isimlerini veriyoruz. Sayfaları oluştururken Türkçe karakter kullanamayacağınızı unutmayın.
<ul>
<li><a href=”default.aspx”>Ana Sayfa</a></li>
<li><a href=”bookLists.aspx”>Kitap Listesi</a></li>
<li><a href=”writers.aspx”>Yazarlar</a></li>
<li><a href=”messages.aspx”>Mesajlar</a></li>
<li><a href=”frp.aspx”>FRP Nedir?</a></li>
</ul>
</div>
Şimdi <ul> ve <li> taglarını kullanarak menümüzü düzenleyeceğiz. İlk önce UL için CSS kuralı oluşturuyoruz.
Şimdi LI için CSS kuralı oluşturacağız. New Style’a basıp gelen pencerede LI için sitilleri belirliyoruz.
Bunu yaptığınızda göreceksiniz ki linkler istediğimiz yeşil rengi alamadı . Çünkü bu linkler genel <a> tagından etkileniyor. Bu sebeple navBox’a özel <a> CSS’i hazırlayacağız. LI CSS’inden sağ klik “New Style Copy” ile bir tane daha CSS çıkarıp, bunun ismini “#navBox a” olarak değiştirip margin sitillerini sileceğiz. Böylece navBox’a özel bir <a> kuralı belirlemş olduk.
font-family: Verdana;
font-size: 14px;
color: #003300;
text-decoration: none;
font-weight: bold;
list-style-type: none;
}
Navigasyon bittiğine göre, footer’ın altına alternatif navigasyonumuzu yaratarak devem edebiliriz. Footer DIV’nin altına bir DIV daha açıyoruz ve bunun için CSS kuralını hazırlıyoruz.
Aslında şu anda master page’e tasarımı oturtma işini bitirdik. Ama her şeyi tamamlamadan önce yapmamız gereken bir iki iş daha var. Öncellikle ileride işimize yarayacağını düşündüğümüz iki CSS kuralı daha oluşturacağız. Bunlar site içinde kullanacağımız imajları kontrol edecek kurallar. Sola yaslanmış imajlar için New Style’a basıyoruz ve kurallımızı yaratıyoruz.
Sağa yaslı imajlar için ise imageLeft kuralından çoğaltıyorum.
Değişiklikleri yapıyorum.
float: left;
margin-right: 10px;
margin-bottom: 10px;
}
.imageRight {
float: right;
margin-bottom: 10px;
margin-left: 10px;
}
Evet artık CSS’lerimizi tamamladığımıza göre bunları external(harici) CSS dosyalarına taşıyabiliriz. Altta geçerli sayfada yaratılmış CSS kurallarının listesi görünüyor.
Sitillerinizin sıralamasını Manage Style kutucuğu içinde sürükleyip bırakarak ayarlayabilirsiniz.
Şimdi site klasörümüzde CSS isminde bir klasör açalım. Eğer klasörü windows’da açarsanız. Bu klasörün projenizin Folder List’inde görünmediğini fark edersiniz. Yapmanız gereken tek şey Folder List içine tıklayarak refresh(F5) yapmak.
Şimdi üç adet CSS dosyası yaratıyoruz.
Ve bunları CSS klasörüne kaydediyoruz.
main.master sayfanıza dönüp Manage Style kutusundaki “Attach Style Sheet” i kullanarak format.css ve layout.css dosyalarını sayfanıza ekleyin.
Şimdi formata ve tasarıma ait olan CSS kurallarını bu harici CSS dosyalarına dağıtacağız. Bunun inanılmaz kolay bir yolu var yapmanız gereken tek şey, CSS kuralına tıklayıp (örnek .imageLeft) bunun sürükleyip harici CSS dosyasının isminin üstünde bırakmak (örnek format.css) Bununla hazırlamış olduğumuz CSS kuralları CSS dosyalarına yazılmış oluyorlar.
Şimdi ileri ve güzel bir teknik kullanacağız. CSS’lerimizi format ve layout olarak ayırdık ama sayfamızda bir CSS linki olsun diğer sayfalar bu tek linkten referans alsın istiyoruz. Bunun için master pagedeyken harici CSS dosyamızın ismine sağ klik yapıyoruz ve “Remove Link’e” basıyoruz.
CSS linkleri gidince sitemizin geldiği durum.
Şimdi main.css’i açıyoruz ve bu css’deyken Attach Style Sheet ile diğer CSS’leri (format.css, layout.css) main.css’e ekliyoruz.
@import url(‘layout.css’);
Artık yapmamız gereken tek şey master page’e main.css linkini eklemek. Master page’de oluşan tüm kod alttaki gibidir.
<%@ Master Language=”C#” %>
<html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml”><head runat=”server”>
<meta http-equiv=”Content-Type” content=”text/html; charset=windows-1254″ />
<meta http-equiv=”Content-Language” content=”tr” />
<title>FRP Kitap Merkezi</title>
<asp:ContentPlaceHolder id=”head” runat=”server”>
</asp:ContentPlaceHolder>
<meta name=”keywords” content=”FRP, kitap, yazar” />
<link rel=”stylesheet” type=”text/css” href=”CSS/main.css” />
</head><body>
<form id=”form1″ runat=”server”>
<div id=”header”>
<img alt=”FRP Kitap Merkezi” src=”images/header.jpg” width=”960″ height=”228″ /></div>
<div id=”container”>
<div id=”navBox”>
<ul>
<li><a href=”default.aspx”>Ana Sayfa</a></li>
<li><a href=”bookLists.aspx”>Kitap Listesi</a></li>
<li><a href=”writers.aspx”>Yazarlar</a></li>
<li><a href=”messages.aspx”>Mesajlar</a></li>
<li><a href=”frp.aspx”>FRP Nedir?</a></li>
</ul>
</div>
<div id=”content”>
</div>
<div></div>
</div>
<div id=”footer”>
</div>
<div id=”altNav”>
<a href=”default.aspx”>Ana Sayfa</a> ::
<a href=”bookLists.aspx”>Kitap Listesi</a> ::
<a href=”writers.aspx”>Yazarlar</a> ::
<a href=”messages.aspx”>Mesajlar</a> ::
<a href=”frp.aspx”>FRP Nedir?</a> ::
</div>
</form>
</body>
</html>
Master Page’i tamamlamak için gereken son şey conten alanı. content DIV’ine sağ klik yapıyoruz ve açılan menüde “Manage Microsoft ASP.NET Content Regions”a tıklıyoruz.
Açılan pencerede content alanımız için Region name’e bir isim yazıyoruz. Bunu add butonu ile ekleyip Close ile pencereyi kapıyoruz.
ContentPlaceHolder’da eklendiğine göre master page hazır.
<div id=”content”>
</div>
</asp:ContentPlaceHolder>
Şimdi master page’den statik olan sayfamızı “FRP Nedir?” sayfasını oluşturalım. File>Create from Master Page
Gelen pencerede Browse’a basıp master page’imizi bulup OK ile çıkıyoruz.
Evet master page’den ilk sayfamızı türettik. Şimdi bu sayfayı menüdeki link ismi ile aynı olacak şekilde isimlendirip kaydedelim. (frp.aspx)
frp.aspx sayfasında main alanının yanındaki ok’a tıklayarak Create Custom Content’e tıklayarak içerik alanımızı kullanıma hazır hale getiriyoruz.
frp.aspx’in tüm kodu alttaki gibidir. Title alanını Split görünümünde ben elle değiştirdim.
<asp:Content id=”Content1″ runat=”server” contentplaceholderid=”main”>
<div id=”content”>
</div>
</asp:Content>
FRP nedir? yazısını kopyalayıp content DIV’nin içine yapıştırıyorum. Artık sayfamızı kontrol edebiliriz. File>Preview in Browser>Preview in Multiple Browsers ile bilgisayarınıza yüklü olan tüm tarayıcılarda sitenizi kontrol edebilirsiniz.
Sitemiz Internet Explorer’da da Firefox’da da hatasız çalışıyor.
Bu makalemde tablo kullanmada DIV ve CSS ile site tasarımını anlattım. Bu makalenin diğer makaleden farkı bu siteyi oluştururken maksimum düzeyde Expression Web araçlarını kullanmamızdır. Bundan sonraki makalelerde bu makalenin devamı niteliğinde, şu anda tasarımını oturttuğumuz siteyi adım adım dinamik hale getireceğiz.
Teşekkürler
İyi çalışmalar
[…] sizin hazırlayacağınız bunun yerine geçecektir. (MasterPage hakkında bilginiz yoksa sizi şu makalemi okumaya davet edeyim.) MasterPage’i giydirmeyecek, sadece tasarımı hazırlayacak olsanız bile şunlara dikkat […]
Merhabalar Hocam,
Expression web ile dinamik site anlatımlarınızın videosu/interaktif eğitimi var mı. Yazıları,resimleri takip ederek uygulama yapmak çok zor. Eğitim setiniz varsa satın alıp kendi dinamik/yönetim panelli sitemi yapmak istiyorum.
Kolay gelsin
Üzgünüm:( Maalesef bildiğim ya da hazırlamış olduğum bir eğitim seti videosu yok.
İyi çalışmalar.