Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu jquery Kanał ATOM (tag: jquery)

Autor wpisu: batman, dodany: 25.05.2010 21:42, tagi: internet, jquery

Dzisiaj (25.05.2010) w Poznaniu miała miejsce pierwsza edycja konferencji SparkUp 2010, gromadząca międzynarodowej klasy ekspertów z dziedziny tworzenia i projektowania aplikacji internetowych. Konferencja była podzielona na dwie ścieżki: UX/Web Design oraz Web Development. Z racji wykonywanego zawodu oraz zainteresowań, wybrałem drugą ścieżkę.

Microsoft Surface

Zanim rozpoczęła się konferencja, miałem okazję zapoznać się z Microsoft Surface. Jest to komputer z dotykowym interfejsem, pozwalający na interakcję z treściami cyfrowymi w intuicyjny dla człowieka sposób. Prezentowany model pracował pod kontrolą systemu operacyjnego Windows Vista i miał “pod maską” 2GHz procesor, 2GB pamięci RAM oraz kartę graficzną z 256MB pamięci. 30 calowy ekran wyświetlał obraz o rozdzielczości 1024 x 768. Mimo dosyć przeciętnych parametrów, Surface doskonale spełnił swoje zadanie. Aplikacje, które testowałem działały bez zarzutu. Wszystko reagowało na dotyk bez widocznego opóźnienia, a ładowanie aplikacji przebiegało stosunkowo szybko. Jeśli chcecie poznać więcej szczegółów na temat tego produktu, polecam odwiedzić oficjalną witrynę Microsoft Surface.

Web Development 2.o

Pierwszym wykładem, w  którym uczestniczyłem był Web Development 2.0, poprowadzony przez Bruce Lawson’a. Pracuje on w firmie Opera jako web evangelist.

Podczas wykładu przedstawiono możliwości jakie daje najnowsza wersja HTML oznaczona numerem 5. Spośród wszystkich zaprezentowanych nowości, największe wrażenie wywarło na mnie nowe podejście do formularzy, które jakimś cudem umknęło mojej uwadze. HTML5 wprowadza nowe elementy formularza, np kalendarz, czy suwak oraz umożliwia walidację elementów formularza bez konieczności korzystania z języka Javascript. Oprócz formularzy, zaprezentowane zostały  w skrócie nowe możliwości CSS3, sposób działania nowgo taga video oraz jak można stworzyć aplikację działającą na wszystkich możliwych urządzeniach bez dodatkowego nakładu pracy.

Co mi się podobało w tym wykładzie, to sposób w jaki HTML5 został zaprezentowany. Nie był on rysowany jako lekarstwo na całe zło, lecz jako uzupełnienie braków w obecnej wersji tego języka, z których – jeśli nie ma takiej potrzeby – nie trzeba korzystać.

jQuery: Write Less, Do More

Kolejny wykład poświęcony był jQuery, poprowadzony przez Remy Sharp’a. Podczas wykładu zaprezentowana została najnowsza wersja biblioteki, oznaczona numerem 1.4.2. jQuery znam dobrze, więc prezentowane informacje nie były dla mnie nowe, niemniej jednak, ciekawy sposób ich przedstawienia (7 śmiertelnych grzechów), otworzył mi oczy na niektóre aspekty tej biblioteki.

RIA i Silverlight 4

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Athlan, dodany: 08.05.2010 10:17, tagi: css, internet, xhtml, jquery, javascript

Nie można kwestionować faktu, że jQuery.animate() jest jednym z najbardziej potężnych narzędzi jQuery. Służy on do animowania atrybutów CSS (czyli zmiany ich wartości w czasie od obecnego stanu A do definiowanego stanu B). Najprostszą implementacją jQuery Animate jest podanie zbioru atrybutów CSS, które mają ulec zmianie oraz czasu, w jakim ta zmiana ma nastąpić. Nie będę się zagłębiał w najprostsze przykłady użycia, są one dostępne w oficjalnej dokumentacji jQuery.

Należy pamiętać, że dzięki jQuery jesteśmy w stanie nie tylko płynnie zmieniać kolory, wielkość czcionki, obramowanie, ale także pozycje elementów, nadając stronie dynamicznego kształtu. Domyślnym sposobem animowania (easing) jest płynne przechodzenie. Istnieje natomiast sposób na zmianę adaptera animowania. Robert Penner – autor pluginu jQuery Easing dostarczył nam niewiarygodnie efektowne i proste w implementacji narzędzie. Na oficjalnej stronie pluginu można znaleźć wiele przykładów animacji, które dostarcza nam dodatek. Efekty widoczne są zwłaszcza przy animowaniu pozycji i wymiarów obiektu, ale następują także w przypadku zmiany koloru – czyli są aplikowane do zmiany stanu każdego z atrybutów CSS.

Dziś postaram się pokazać efekty, jakie można uzyskać za pomocą jQuery Animate rozszerzonego o jQuery Interface oraz Easing.

Pierwszym krokiem jest wygenerowanie własnej biblioteki jQuery Interface. Dzięki generatorowi, jesteśmy w stanie ściągnąć tylko te części Interface, które są nam de facto potrzebne, zmniejszając jednocześnie ilość kodu. Klikamy ‘deselect all components’, a w sekcji Effects wybieramy efekty, których będziemy używać. Mnie w tej chwili interesuje Bounce i Slide. W paczce otrzymamy wersję deweloperską (z wcięciami) oraz minified, gotową do publikacji na serwerze.

Do wykorzystania efektu slideowania a’la iPhone (elastyczne odbicie od krawędzi ściany ekranu) sprowadza się drobny kawałek kodu, w którym istotnym jest parametr easing:

$('#example').animate({ left: 500 }, { duration: 1000, easing: 'easeOutElastic' })

Na pewno komuś się przyda.

Autor wpisu: batman, dodany: 20.04.2010 20:23, tagi: javascript, jquery

Potrzebowałem dzisiaj zastosować plugin jQuery, który jednym słowem można określić karuzela. Funkcjonalność jaką miał realizować to pokazywanie po kolei podobnych elementów, np galerii zdjęć. Niestety wszystkie pluginy jakie udało mi się znaleźć nie spełniały moich oczekiwań. Dlatego też napisałem swój własny. Na chwilę obecną jest on bardzo prosty, jednak w zupełności wystarcza. Sądzę, że co

Autor wpisu: batman, dodany: 24.03.2010 07:30, tagi: javascript, jquery

Na oficjalnym blogu jQuery UI pojawiła się informacja o wydaniu kolejnej wersji biblioteki. Nowości jakie znalazły się w wydaniu to nowe pluginy i efekty  oraz duża ilość poprawek i usprawnień. Programiści skupili się na tym, by UI stało się jeszcze bardziej modułowe i łatwiejsze do rozszerzania. Oto lista zmian jakie znalazły się w nowej wersji: position – pozycjonowanie elementu względem

Autor wpisu: Vokiel, dodany: 07.03.2010 21:30, tagi: css, jquery, javascript

Tak jak zaplanowałem na końcu wpisu The Small Calendar – jQuery + PHP w praktyce, postanowiłem stworzyć systemowy (windowsowy) gadżet z The Small Calendar. W tym wpisie postaram się przybliżyć tajniki tworzenia takowych gadżetów. Gadżety pojawiły się wraz z Vistą – jako element sidebar’a, w Windows 7 są już autonomicznymi programikami, które mogą być porozrzucane wszędzie na pulpicie.

ŹródłaDemo

Pierwsze kroki

Platforma gadżetów Windows jest frameworkiem dla tworzenia i hostowania mini-aplikacji. Tworzenie aplikacji odbywa się niemalże tak samo, jak zwykłych stron internetowych. Do wykorzystania są technologie (x)HTML, CSS, JavaScript, JScript, VBscript. Oczywiście dołączanie gotowych bibliotek jest możliwe, w tym przykładzie pokażę jak łatwo można skorzystać z biblioteki jQuery.

Katalog przechowywania

Gadżety są przechowywane w konkretnym katalogu. Rozpoczynając tworzenie nowego gadżetu katalog najlepiej utworzyć smodzielnie (później, po zakończeniu prac utworzony gadżet będzie się sam instalował). Folder przechowywania gadżetów w Windows 7: %localappdata%\Microsoft\Windows Sidebar\Gadgets\. Czyli dla użytkownika Vokiel będzie to np: C:\Users\Vokiel\AppData\Local\Microsoft\Windows Sidebar\Gadgets\. W tym katalogu należy utworzyć folder dla danego gadżetu, nazwę kończąc na .gadget. W naszym przypadku będzie to TheSmallCalendar.gadget.

The Small Calendar Gadżet - Folder lokalizacji

The Small Calendar Gadżet - Folder lokalizacji

Manifest

Plik gadget.xml opisuje zawartość paczki, czyli gadżetu. Zawiera podstawowe informacje na temat dodatku, które później widoczne są na ekranie gadżetów.

Tworzony przeze mnie kalendarz zawiera następujący opis:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8" ?>
<gadget>
  <name>The Small Calendar</name>
  <namespace>vokiel.widgets</namespace>
  <version>1.0.2</version>
  <author name="Vokiel">
    <info url="http://blog.vokiel.com/the-small-calendar-jquery-php-w-praktyce" />
    <logo src="img/icon.png" />
  </author>
  <copyright>&#169; Vokiel | vokiel.com</copyright>
  <description>To jest mały kalendarz, który pozwala sprawdzić dzień tygodnia dla wybranej daty. Ten kalendarz jest inny niż wszystkie, posiada tylko jeden blok dni!</description>
  <icons>
    <icon height="48" width="48" src="img/TheSmallCalendar_48x48.png" />
  </icons>
  <hosts>
    <host name="sidebar">
      <base type="HTML" apiVersion="1.0.0" src="TheSmallCalendar.html" />
      <permissions>Full</permissions>
      <platform minPlatformVersion="1.0" />
      <defaultImage src="img/TheSmallCalendar_48x48.png" />
    </host>
  </hosts>
</gadget>

Opisywanie szczegółów zawartości tego pliku nie jest konieczne, znaczniki XML są tak dobrane, iż same w sobie są dostatecznym opisem. Najważniejszą rzeczą w tym pliku jest wskazanie pliku głównego gadżetu, w tym przypadku jest to TheSmallCalendar.html, ten plik zostanie otwarty przy starcie aplikacji.

Wynik opisu zawartego w powyższym listingu kodu przedstawia się następująco:

The Small Calendar Gadżet - Ekran gadżetów

The Small Calendar Gadżet - Ekran gadżetów

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: m1chu, dodany: 06.03.2010 19:17, tagi: jquery, framework

Wzorzec projektowania wtyczek jQuery na bazie metod i funkcji

Praca z jQuery prędzej, czy później wymusza na nas kompleksowe tworzenie rozwiązań wykonywanych po stronie użytkownika. Metody filtrujące, animacje, czy efekty na galeriach zdjęć łatwiej będzie osiągnąć i rozwijać posługując się, łączącymi się na wtyczki, mechanizmami metod i funkcji, dostępnymi w frameworku.

Metoda, a funkcja?

Podstawowa różnica pomiędzy nimi polega na tym, że operują na innych obiektach. Każda nowa metoda musi być dołączona do prototypu jQuery.fn, a funkcja po prostu do obiektu jQuery.

PLAIN TEXT JavaScript:
  1. /* metoda */
  2. jQuery.fn.nazwa = function() {
  3.     [...]
  4. };

PLAIN TEXT JavaScript:
  1. /* funkcja */
  2. jQuery.nazwa = function() {
  3.     [...]
  4. };

W praktyce powoduje to, że do metody odwołujemy się operując na jakimś elemencie, identyfikatorze, bądź na klasie znajdującej się na stronie internetowej, a w przypadku funkcji, po prostu ją wywołujemy w celu wykonania jakieś akcji.

PLAIN TEXT JavaScript:
  1. /* wywołanie: metoda */
  2. $(element).nazwa();

PLAIN TEXT JavaScript:
  1. /* wywołanie: funkcja */
  2. var x = $.nazwa();
  3. alert(x);

Obydwie możemy parametryzować. Argumentem może być zwykła zmienna, dowolnego, obsługiwanego przez JavaScript typu lub obiekt przechowujący zbiór pól o konkretnym przeznaczeniu.

PLAIN TEXT JavaScript:
  1. /* metoda z parametrem */
  2. jQuery.fn.nazwa = function(options) {
  3.     [...]
  4. };

PLAIN TEXT JavaScript:
  1. /* funkcja z parametrem */
  2. jQuery.nazwa = function(options) {
  3.     [...]
  4. };

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Vokiel, dodany: 24.02.2010 16:02, tagi: javascript, php, jquery, css

Na Grafish Design’s Blog natknąłem się na The Small Callendar. Czyli mały kalendarz, który umożliwia sprawdzenie wybranej daty pod kątem dnia tygodnia. Przedstawiony tam kalendarz jest wersją do druku (dostępny do pobrania w ponad 30 językach). Kalendarz ten różni się od standardowych tym, że ma tylko jeden blok z dniami miesiąca. Postanowiłem stworzyć taki kalendarzyk on-line przy wykorzystaniu PHP oraz odrobiny jQuery, plus oczywiście CSS.

ŹródłaDemo

Cel

Kalendarz w wersji oryginalnej wygląda następująco:

The Small Callendar

The Small Callendar - Grafish Design's Blog

źródło: Grafish Design’s Blog – The small calendar 2010 (en) .

Planowana przeze mnie wersja będzie miała:

  1. Wygląd przypominający oryginał
  2. Wybór roku innego niż aktualny
  3. Wielojęzyczność
  4. Możliwość podświetlania kolumny dat
  5. Możliwość podświetlania wierszy miesięcy
  6. Możliwość podświetlania dni tygodnia dla wybranych dat
  7. Możliwość przenoszenia bloku dat po kliknięciu na wiersz miesiąca

Generowanie kalendarza: PHP

Do wygenerowania kalendarza posłużymy się prostą klasą, która wygeneruje nam kilka rzeczy. Po pierwsze stworzymy listę miesięcy, dla każdego z nich sprawdzimy liczbę dni, sprawdzimy dzień tygodnia dla pierwszego dnia miesiąca. Następnie stworzymy na tej podstawie tablicę, która będzie zawierała skróty nazw miesięcy (w wybranym języku), dla wybranego roku, do każdego z miesięcy przypiszemy ilość dni oraz odpowiednio posortowane skróty nazw dni tygodnia.

Klasa ta jest bardzo prosta, zatem możemy ją nazwać imitacją klasy, zbiorem funkcji opakowanych w klasę. Lista metod:

  1. public __construct – 2 parametry opcjonalne: rok, tablica z danymi języka | konstruktor
  2. public setLanguage – 1 parametr: tablica z tłumaczeniami | ustawienie języka
  3. public getdatesTable – 0 parametrów | tworzy tablicę dni
  4. public getCalendar – 0 parametrów | pobiera tablicę z kalendarzem
  5. private generateMonths – 0 parametrów | generuje miesiące
  6. private generateDayNames – 0 parametrów | tworzy dni tygodnia w odpowiedniej kolejności

Kod klasy

Część po stronie serwera jest na tyle prosta, że nie wymaga większego opisu. Konstruktor może przyjmować 2 parametry: rok oraz tablicę z tłumaczeniem na inny język. Oba parametry są opcjonalne, domyślnym rokiem jest aktualny, język – polski.

Metoda setLanguage ustawia język. Kolejna, getDatesTable generuje tablicę z dniami miesięcy (1-31), oznaczając odpowiednio ilości dni wg miesięcy. getCalendar wywołuje dwie inne: generateMonths – generuję tablicę miesięcy, wraz z ważnymi danymi, oraz generateDayNames – generującą skrótowe nazwy dni tygodnia.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
/**
 * VokielSmallCallendar class
 * @author Vokiel | http://blog.vokiel.com
 */
class VokielSmallCallendar {
	/**
	 * Selected year
	 * @var int	$year
	 */
	private $year;
	/**
	 * Shortcuts names for months
	 * @var	array $monthsShort
	 */
	private $monthsShort = array();
	/**
	 * Shortcuts names for week days
	 * @var	array	$daysShort 
	 */
	private $daysShort = array(); 
	/**
	 * Generated months table for the callendar
	 * @var array $months
	 */
	private $months = array();
 
	/**
	 * Construct, 
	 * @param	int	$year
	 * @param	array	$lang
	 */
	public function __construct($year=0,$lang=null){
		$this->year = ($year)? (int)$year : date('Y');
 
		if (!is_array($lang) || !is_array($lang['months']) || !is_array($lang['days'])){
			$lang = null;
		}
		$this->setLanguage($lang);
	}//end of __construct
 
	/**
	 * Setting the monts shortcuts names and days shorcuts names.
	 * Polish is default language.
	 * @param	array	$lang	Monts and days array starting from 1 = January and 1 = Monday
	 */
	public function setLanguage($lang=null){
		$this->monthsShort = (is_array($$lang['months']))? $$lang['months'] : array(1=>'Sty',2=>'Lut',3=>'Mar',4=>'Kwi',5=>'Maj',6=>'Cze',7=>'Lip',8=>'Sie',9=>'Wrz',10=>'Paź',11=>'Lis',12=>'Gru');	
		$this->daysShort = (is_array($$lang['days']))? $$lang['days'] : array(1=>'Pon',2=>'Wt',3=>'Śr',4=>'Czw',5=>'Pt',6=>'Sob',7=>'Nie');
	}//end of setLanguage method
 
	/**
	 * Generating the dates table (numbers from 1 to 31)
	 * @return	string	$datesTable	Generated HTML table
	 */
	public function getDatesTable(){
		$datesTable = '<table><tbody><tr>';
		for ($i=1;$i<32;$i++){
			$class = '';
			if ($i>=28){
				if ($i == $this->months[2]['daysCount'] || $i>29){
					$class = 'class="days_'.$i.'"';
				}
			}
			$datesTable .= '<td '.$class.'>'.$i.'</td>';
			if ($i%7==0){
				$datesTable .= '</tr><tr>';
			}
		}
		$datesTable .= '</tr></tbody></table>';
		return $datesTable;
	}//end of getdatesTable method
 
	/**
	 * Getting the calendar
	 * @return	array	$this->months Array with months shortcuts names and sorted week days shortcuts names	 
	 */
	public function getCalendar(){
		$this->generateMonths();
		$this->generateDayNames();
		return $this->months;
	}//end of getCalendar method
 
	/**
	 * Generating months table
	 */
	private function generateMonths(){
		for ($i=1;$i<13;$i++){
			$time = mktime(0,0,0,$i,1,$this->year);
			$this->months[$i]['weekDay'] = date('N',$time);
			$this->months[$i]['montShort'] = $this->monthsShort[$i];
			$this->months[$i]['daysCount'] = date('t',$time);
		}
	}//end of generateMonths method
 
	/**
	 * Generating week day names shortcuts
	 */
	private function generateDayNames(){
		foreach ($this->months as $month => $dayStart){
			$dayStart = $dayStart['weekDay'];
			for ($i=0;$i<7;$i++){
				$day = ($dayStart+$i>7)? (-(7-$dayStart-$i)) : ($dayStart+$i);
				$this->months[$month]['weekdays'][] = $this->daysShort[$day];
				unset($this->months[$month]['weekDay']);
			}
		}
	}//end of generateDayNames method
 
}// end of VokielSmallCallendar class

Obsługa kalendarza: JavaScript

W tej części zajmiemy się oskrytpowaniem kalendarza w JavaScript (korzystając z jQuery) w celu nadania mu funkcjonalności, dynamiki i użytecznosci. Z naszych założeń wynika, że musimy utworzyć kilka funkcji, które będą reagować na przesuwanie kursora myszki ponad polami kalendarza.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.