UWAGA! Promocja dla firm - MICROSOFT OFFICE 365  na 12 miesiecy ZA DARMO! Tylko na CentrumXP.pl!
Wielka promocja Office 365 na CentrumXP.pl!
Do góry Skomentuj

08. Tematy i skórki

08. Tematy i skórki

Autor: Piotr Gaszewski Opublikowano: 20 stycznia 2006 Odsłon: 55 794

Korzystając z sieci z pewnością spotkaliście się z sytuacją, kiedy po zarejestrowaniu się na witrynie internetowej mogliście dostosowywać jej wygląd do swoich upodobań. Często też, użytkownicy mają możliwość stosowania specjalnych "skórek" w obrębie jednej witryny. W przypadku, gdyby nie odpowiadał nam standardowy wygląd strony internetowej, możemy zmienić go za pomocą udostępnionych przez twórców aplikacji tematów. Zmieniając udostępnioną "skórkę" możemy zmienić schemat graficzny witryny, kolor przycisków, tła, rodzaj stosowanej czcionki i wiele, wiele innych. Najnowsza wersja ASP.NET daje twórcom aplikacji internetowych możliwość implementacji tego mechanizmu w niezwykle prosty sposób.

Przed rozpoczęciem pracy z mechanizmem skórek musimy mieć pewne informacje na temat stylów CSS. W największym skrócie – mechanizm ten umożliwia twórcom aplikacji internetowych przechowywanie informacji na temat wyglądu strony. Przykładowo, chcąc stosować w wielu miejscach na stronie internetowej czcionkę o danym rozmiarze, czy kolorze, nie musimy zawierać tych informacji za każdym razem w kodzie strony. Wystarczy, że stworzymy sobie plik zawierający informacje o wyglądzie określonych elementów witryny (w naszym przypadku będzie to stosowana czcionka). W naszym projekcie Visual Studio wybieramy opcję: WebSite -> Add New Item. Następnie wybieramy plik typu "StyleSheet". Po otwarciu pliku w oknie Visual Studio możemy zmienić jego zawartość w następujący sposób:

.MyFontClass
{
    font-family: Verdana;
    font-size
: medium;

    forecolor
: Blue
}

Powyżej widzimy zdefiniowaną klasę, określającą wygląd wszystkich elementów tej klasy na stronie. Żeby zastosować tą klasę musimy zmodyfikować nasz dokument *.aspx. Po pierwsze, musimy przekazać stronie informacje o pliku, zawierającym zdefiniowane style. Możemy to zrobić, modyfikując nagłówek strony w następujący sposób:

<head runat="server">
    <title>Untitled Page</title>
    <style type = "text/css" >
    @import url("StyleSheet.css");
   
</style>
</head>

Oczywiście, kod ten będzie poprawny, jeżeli nasz plik, zawierający definicję stylów, będzie nosił nazwę StyleSheet.css. Jeżeli nasz plik nazywa się inaczej, nazwę domyślną w kodzie musimy zastąpić nazwą własną. Następnie zmodyfikujmy zawartość strony, w następujący sposób:

<body>
    <form id="form1" runat="server">
   
<div>
        Przykładowy tekst
    </div>
    <div class = "MyFontClass">
        Przykładowy tekst, z wykorzystaniem stylu CSS.
    </div>
    </form>
</body>

Po otwarciu strony, w oknie przeglądarki pojawią się dwa napisy. Drugi z nich, wykorzystywał będzie zdefiniowaną w pliku StyleSheet.css klasę stylu.

Oczywiście, zdefiniowanych stylów nie musimy umieszczać w oddzielnym pliku. Możemy umieścić definicje klas stylów między znacznikami <style></style> w kodzie źródłowym strony, bądź też nawet definiować styl każdorazowo, z momencie jego zastosowania (<font style=...>).  Stworzenie centralnego szablonu umożliwia nam jednak zastosowanie tej samej klasy na wielu formatkach wchodzących w skład aplikacji ASP.NET. Co więcej, zmieniając jakąś z właściwości klasy, musimy to zrobić jedynie w pliku *.css, a nie na każdej stronie wykorzystującą tą klasę.

Wróćmy teraz do tematu, wymienianego w tytule artykułu, czyli tworzenia skórek dla naszych aplikacji. Pierwszą czynnością, którą musimy w tym celu wykonać jest dodanie do projektu folderu: App_Themes. Robimy to, klikając kolejno: "Website" -> "Add  ASP.NET Folder" -> "Theme" w Visual Studio. Pierwszy z naszych tematów, który utworzy się od razem z nowym folderem, nazwijmy: “Theme_01".

Folder Theme_01, może zawierać pliki reprezentujące skórki (rozszerzenie *.skin), pliki *.css, lub pod-foldery, zawierające na przykład pliki graficzne. Aby podłączyć temat do strony w dyrektywie Page, musimy dodać następujący parametr:

<%@ Page Theme="Theme_01" ... >

Spróbujmy utworzyć teraz przykładowy plik, o nazwie: DefaultSkin.skin. Oczywiście musi się on znajdować w folderze: App_Themes\Theme_01. Dla ułatwienia przyjąłem, że nasze skórki, zawierać będą jedynie informacje dotyczące wyglądu obiektów typu Label. Jeżeli jednak uda ci się zrozumieć zasadę działania skórek dla tych kontrolek, wygląd kolejnych obiektów na stronie będziesz mógł zmieniać w analogiczny sposób.

Dodajmy do naszego pliku DefaultSkin.skin następującą linię:

<asp:label runat="server" font-bold="true" forecolor="blue" font-size="medium"  />

Teraz na każdej stronie, na której podaliśmy w dyrektywie Page nazwę naszego tematu, wygląd kontrolek klasy Label, będzie zgodny z tym, zdefiniowanym w pliku skórki. W podobny sposób definiować możemy wygląd wszystkich elementów znajdujących się na formatce.

W ramach jednego tematu możemy stosować klika rodzajów wyglądu poszczególnych typów obiektów. Przykładowo, chcąc zdefiniować dwa różne sposoby wyświetlania kontrolli Label, do naszego pliku Default.skin, musimy dodać kolejną linię:

<asp:label SkinId = “RedObject" runat="server" font-bold="true" forecolor="red" font-size="medium"  />

W dodanej linii możemy dostrzec nowy parametr o nazwie SkinId. Służy on, do rozróżnienia kliku różnych definicji wyglądu określonych obiektów, w obrębie jednego tematu. W tym przypadku wszystkie kontrolki Label na naszej formatce, będą miały w dalszym ciągu wygląd zgodny z pierwszą, dodaną przez nas linią w pliku DefaultSkin.skin. Nie zdefiniowaliśmy tam konkretnej wartości SkinId – aplikacja traktuje więc taką definicję wyglądu jako domyślną. Chcąc zmienić kolor znajdujących się na formatce łańcuchów znakowych na czerwony, w kodzie strony musimy jawnie zadeklarować, z jakiego Id skórki dana kontrolka ma korzystać.

<asp:Label ID="Label2" runat="server" Text="Czerwony Tekst" SkinID="RedObject" ></asp:Label>

Zazwyczaj w skład pojedynczego tematu wchodzi kilka plików, definiujących skórki. Stosuje się przede wszystkim podziały, ze względu na typy kontrolek (tzn. poszczególne pliki zawierają wiele definicji wyglądu poszczególnych kontrolek), lub ze względu na wygląd (w tym przypadku każdy plik zawiera jedną definicję wyglądu każdej kontrolki).

Przykładowa zawartość folderu, zawierającego pliki *.skin
Podział ze względu na kontrolki: Podział ze względu na wygląd:
Label.skin Domyślne_kolory.skin
Calendar.skin Barwa_niebieska.skin
TestBox.skin Barwa_czerwona.skin
... ...

Jak zapewnie się domyślacie, opisany powyżej mechanizm można zastosować do umożliwienia użytkownikowi aplikacji wpływu na jej wygląd w oknie przeglądarki. Utwórzmy w oknie Visual Studio nową formatkę, do której podepnijmy zdefiniowany przez nas wcześniej temat, o nazwie Theme_01. Robimy to, ustawiając odpowiednią wartość parametru: "Theme" w dyrektywie Page na formatce. Następnie na formatce dodajemy obiekty DropDownList oraz Button. Dodajemy także elementy listy rozwijalnej, ręcznie, lub za pomocą kreatora Visual Studio:

<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Value="Niebieski">Niebieski</asp:ListItem>
<asp:ListItem Value=" Czerwony ">Czerwony</asp:ListItem>
</asp:DropDownList>

W tym momencie musimy jeszcze dodać obsługę zdarzenia naciśnięcia przycisku przez użytkownika. Chcemy, by po tej czynności na stronie pojawiła się kontrolka Label w odpowiednim kolorze. Do wyboru mamy: niebieski (domyślny), oraz czerwony.

protected void Button1_Click(object sender, EventArgs e)
{
            Label lbl = new Label();
            lbl.Text = "Przykładowy Tekst";
            if (this.DropDownList1.SelectedValue == "Czerwony")
            {
                       lbl.SkinID = "RedObject";
                       this.form1.Controls.Add(lbl);
            }
            else
            {
                       this.form1.Controls.Add(lbl);
           
}
}

Zobacz również

Komentarze

nawet to fajna stronka ale prodiłbym o przesłanie mi na emajl muzyk630@wp.pl jakieś stronki do ściagania skórek
kamil, 4 czerwca 2006, 21:02
jakich skórek?
Kuba, 4 czerwca 2006, 21:18
Ludzie tu sa błedy, duzo literówek zamiast “RedObject" powinno być "RedObject" , pierwszy znak.
Krzysiek, 17 sierpnia 2006, 22:41
Bledy sa i beda. Czy Microsoft jest nieomylny? Nikt tego tekstu nie czytal przed opublikowaniem, to chyba oczywiste.. Ale tresc po "odkodowaniu" jest czytelna i przydatna!
danny, 5 września 2006, 12:19
Hej. A jak zrobic zamiane wygladu strony na zyczenie uzytkownika? Mamy np. w liscie do wyboru wyglady zatytulowane: czerwony, zielony, niebieski. Mmay dla nich odopwiedni pliki .css i .skin umieszczone w odpowiednich tematach(np. mamy temat czerwony zawireajacy pliki czerwony.css i czerwony.skin) Prosze o rade, wskazowki.
@@@, 18 października 2007, 16:53
po co wy sie tak bulwersujecie z tymi bledami. to tylko literowki, jak ktos wkleja na chama kod i nie ma pojecia co robi, to niech lepiej idzie plebanie ogladac.
mjcool, 1 marca 2008, 12:26
Poprawne odwołanie do stylów w html:

Danio, 2 stycznia 2009, 14:45
" "

Danio, 2 stycznia 2009, 14:45
Wydaje mi się, że w stylach CSS, aby ustawić kolor czcionki, należy ustawić parametr color="Blue" a nie forecolor (to działa w plikach .skin).

T, 22 stycznia 2009, 13:13
Nie przekonuje mnie ten artykuł. Za mało o skinach a za dużo o css"ach.
Chyba coś przeoczyłem albo tego tu nie ma, ale: jeśli mam 199 labeli to dla każdego ustawiam wybrany skin? Nie da się tego zrobić dla całego pliku i wszystkich zawartych w nim kontrolek?
 

greg, 13 kwietnia 2009, 13:14
Jak ścągnąc skórkę

Paweł, 27 kwietnia 2009, 14:56
niestety chciałem pomóc ale system komentarzy na tej stronie delikatnie mówiąc nie za bardzo działa cały czas coś mi wycina albo dodaje do treści
pozdrawiam autora modułu komentarzy
 

marcin, 19 lipca 2009, 01:15
podejście trzecie.....  przepraszam ale nie mogę edytować poprzednich&lt;br />&lt;br />&lt;br />greg - da sie :) jak masz stronę z 199 labelami i chcesz mieć możliwość zmiany dla wszystkich labelów na tej stronie, dajmy na to kolor (w zależności od skórki) np: na czerwony,lub zielony lub niebieski to robisz tak: W folderze App_Themes tworzysz trzy themsy (podfoldery) czerwony, zielony, niebieski. W każdym z tych podkatalogów będziesz umieszczać pliki podobne skin zawierające opis labelów. Czyli w katalogu App_Themes->Theme_Niebieski stworzysz plik NiebieskiLabel.skin w którym to umieścisz : asp:label runat="server" font-bold="true" forecolor="blue" font-size="medium" W pozostałych podfolderach (Theme_Czerwony,Theme_Zielony) zrobisz tak samo uwzględniając odpowiedni kolor własności forecolor. Na każdej stronie na której ma być stosowana skórka dodajesz we dyrektywie PAGE odpowiedni atrybut czyli : %@ Page Theme="Theme_Niebieski" ...   I to w zasadzie wszystko, teraz wystarczy zmieniać atrybut Theme przed załadowaniem strony żeby wszystkie kontrolki label zmieniały swój kolor.
 

Marcin, 19 lipca 2009, 01:21

Dodaj swój komentarz

Zasady publikacji komentarzyZasady publikacji komentarzy

Redakcja CentrumXP.pl nie odpowiada za treść komentarzy publikowanych na stronach Portalu
i zastrzega sobie prawo do usuwania wypowiedzi, które:

  • zawierają słowa wulgarne, obraźliwe, prowokujące i inne naruszające dobre obyczaje;
  • są jedynie próbami reklamowania stron internetowych (spamowanie poprzez umieszczanie linków);
  • przyczyniają się do złamania prawa bądź warunków licencyjnych oprogramowania (cracki, seriale, torrenty itp.);
  • zawierają dane osobowe, teleadresowe, adresy mailowe lub numery GG;
  • merytorycznie nie wnoszą nic do dyskusji lub nie mają związku z tematem komentowanego newsa, artykułu bądź pliku.

Autor:

Komentarz:

Dodaj komentarz