Responsive images e jQuery: cambiare immagine a seconda della risoluzione

Seguendo il trend delle ultime settimane, così come ha fatto Adobe nel nuovo Dreamweaver CS6 con il Responsive Design e le sue griglie fluide ( la cui traduzione in italiano suona, a mio avviso, veramente male ), mi sono immerso una mezz’ora in jQuery per risolvere un problema con un sito di un cliente.

La necessità parte dal fatto che l’immagine di sfondo, con proprietà width=100%, non può essere proposta sia sul mobile che su tablet e desktop alla stessa maniera, della stessa qualità. Bisogna essere cortesi nei confronti degli user su mobile, giusto?

Partendo da una immagine, ne realizzo una versione MidRes e una LowRes, e mi accingo a scrivere lo script che mi scali l’immagine in maniera dinamica.

L’immagine di partenza è la seguente:

Prima di tutto, inserisco qualche linea di CSS per eliminare i margini di default del BODY e per mostrare al 100% l’immagine presente in pagina:

Codice CSS:

body{
	padding:0px;
	margin:0px;
}
img{
	width:100%;
	height:auto;
}

Codice HTML:

</pre>
<img id="thisimg" alt="" data-lowres="image_lowres.jpg" data-midres="image_midres.jpg" data-hd="image_hd.jpg" />
<pre>

Come noterete, ho usato alcuni tag custom, dove ho indicato le tre versioni diverse della medesima immagine. Come noterete, inoltre, non ho inserito alcuna immagine in SRC. Noteremo più avanti questa anomalia.

Ora, prima di tutto, scrivo in console un messaggio ogni qual volta viene ridimensionata la finestra:

$(window).resize(function(){
	var altezza = $(window).height();
	var larghezza = $(window).width();
	console.log('it\'s resizing, now it\'s ' + larghezza +'x'+ altezza);
});

Ora, se tutto funziona a dovere, dovreste notare in Console la dimensione della finestra ogni qual volta ridimensionerete il tutto. Non funziona? Controllate di avere inserito il riferimento alla libreria jQuery.

Ora creiamo la funzione che controlla la dimensione e, eventualmente, cambiamo l’SRC dell’immagine.

function CheckRes(object){
	// misuro la dimensione della finestra
	var window_width = $(window).width();

	// controllo l'attuale SRC
	var original_src = $(object).attr('src');

	var img_low = $(object).attr('data-lowres');
	var img_mid = $(object).attr('data-midres');
	var img_hd = $(object).attr('data-hd');

	if(window_width		var new_src = img_low;		// smartphone
	}else{
		if(window_width			var new_src = img_mid;	// iPad
		}else{
			var new_src = img_hd;		// desktop
		}
	}
	if(original_src!=new_src){
		$(object).attr('src',new_src);
	}

}

Cosa fa il codice?
Carica la larghezza della finestra nella variabile original_src, successivamente identifica le 3 versioni differenti dell’immagine e, a seconda della risoluzione, se l’SRC è differente dal nuovo, ne modifica il puntamento. Tutto molto semplice.

Aggiungiamo quindi, in fase di resizing, la funzione creata.

$(window).resize(function(){
	var altezza = $(window).height();
	var larghezza = $(window).width();
	//console.log('it\'s resizing, now it\'s ' + larghezza +'x'+ altezza);
	CheckRes('#thisimg');   // Nota che CheckRes deve ricevere il selettore corretto, #thisimg
});

Ora, al momento del caricamento, la pagina rimarrà vuota e l’immagine verrà caricata correttamente solo dopo un window resizing.
Non ci resta che aggiungere l’ultima riga di codice:

$(document).ready(function(e) {
    CheckRes('#thisimg');
});

Il gioco è fatto.
Fate le varie prove, noterete che ogni volta verrà caricata l’immagine corretta a seconda della dimensione della finestra. Buon responsive design!

Se volete vedere l’esempio in pratica, cliccate qui.

Realizzare uno screencast con un web service free

Innanzitutto: cos’è uno screencast?
Screencast è una parola coniata da Jon Udell, “evangelista” tecnologico ( come riferito su Wikipedia ) attualmente in Microsoft, che propose ai lettori del suo Blog di proporre un termine per definire una moda che, all’ora, stata prendendo piede: realizzare un video che mostrasse l’attività dell’autore sul proprio desktop.

Oltre a molti software installabili, come Screenium su piattaforma Mac, ci sono anche servizi web che si basano su plug-in in Java oppure su Chrome App.

Ho avuto la possibilità di testare il servizio offerto gratuitamente dal sito http://www.screencast-o-matic.com e il risultato è stato abbastanza positivo.

La qualità generata non è il massimo, così come il frame rate che pare essere un po’ più lento del previsto. Esiste anche una versione PRO, che propone alcune caratteristiche aggiuntive spendendo pochi dollari all’anno.

Eccoti la tabella delle differenti versioni:

Validare un file JSON

jsonlint screenshotMolti di voi avranno a che fare, quotidianamente, con la questione JSON e la sua struttura.
Spesso e volentieri il codice è generato lato server, quindi avrete la necessità, in pochi click, di sapere se il file esportato è valido oppure no.

Per questa problematica ci viene incontro un sito, jsonlint.com, che, molto semplicemente, ci permette di incollare il codice e verificarne la correttezza.

Un esempio di JSON lo potete trovare nel nostro script per la creazione di un News Slider in jQuery, dove forniamo allo script la base dati in un file json, appunto.

jQuery Transit: trasformazioni e transizioni super fluide con CSS3

Oggi parliamo di jQuery Transit, una libreria per jQuery che facilita la creazione di trasformazioni e transizioni CSS3 attraverso l’uso di jQuery.

La versione commentata e completa pesa solamente 17kb, mentre la minified-version occupa 2kb. Come in tutti i plugin di jQuery che si rispettino, l’utilizzo è di una semplicità disarmante e si basa sull’uso del metodo .transition() invece che sul classico .animate().

Il supporto per i browser è limitato a: IE10, Firefox 4+, Safari 5+, Chrome 10+, Opera 11+ e Mobile Safari. Per quanto riguarda i browser che, ahimè, non supportano nessuna animazione o trasformazione CSS3, non saranno attive le trasformazioni.

Tutti questi plugin permettono attività bellissime dal punto di vista grafico, mentre per quanto riguarda la retro compatibilità avremo sempre molti problemi: è il prezzo da pagare soprattutto alla signora Microsoft ed ai suoi browser, che fino alla versione 9 hanno cavato da noi programmatori / designer davvero il peggio, in termini di parolacce ed insulti.

Sito ufficiale di jQuery Transit: http://ricostacruz.com/jquery.transit/

Windows Phone: ora tocca a LinkedIn

Se anche voi siete su LinkedIn e avete uno Windows Phone, allora è il vostro momento.
Finalmente potremo usare la nostra fantastica MetroUI, con tutte le sue tiles, giocando sul nostro business social network preferito.

L’app risponde molto bene, è rapida e veloce, è la sensazione è che sia decisamente migliore da quella che ho sull’ iPhone. Certamente l’interfaccia Metro aiuta molto nell’appeal generale, ma le differenze non sono solamente grafiche.

Oltre a poter gestire come di consueto Connessioni, profili, news e gruppi, sulla app per WindowsPhone potrete anche contare su due tile aggiuntivi: Lavori e Aziende, voci completamente assenti dalle versione iOs e Android.

Eccovi il link per l’app sul Marketplace.

Allargando il discorso invece al Windows Phone OS, l’unico vero gap con Android e iOs è il multitasking: è vero che le risorse dedicate alla app attiva rimangono alte, ma è altresì vero che applicazioni come Skype sono completamente zoppe, non potendo contare sulla possibilità di avvisare l’utente di un messaggio o di una chiamata in arrivo.

Andando sul sito MSDN di Microsoft, troviamo questa dicitura:

To help ensure a fast and responsive user experience and to optimize power consumption on the device, Windows Phone allows only one application to run in the foreground at a time…

Effettivamente, essendo un possessore di un Nokia Lumia 800, la batteria viene già notevolmente vampirizzata, e la carica non è mai durata più di una giornata lavorativa, ma questo non può essere un limite preimposto.

Speriamo che Microsoft abbia voglia di cogliere dalla concorrenza quella che è la caratteristiche più utile in uno smartphone.