23 javascript 5 - unisa

20
JavaScript – 5 CSS e JavaScript

Upload: others

Post on 31-Oct-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 23 Javascript 5 - UNISA

JavaScript – 5

CSS e JavaScript

Page 2: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 2

CSS e JavaScript   Attraverso JavaScript è possibile controllare

proprietà CSS –  Possiamo controllare lo stile di un singolo

elemento HTML o di un tag in generale –  Possiamo aggiungere o modificare regole CSS

•  La sintassi cambia a seconda dei browser

  Il DOM fornisce un’interfaccia per poter controllare lo stile CSS con JavaScript –  Non c’è completa compatibilità tra i browser

Page 3: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 3

Proprietà style  Per modificare lo stile di un singolo

elemento in un documento HTML – prima dobbiamo ottenere un riferimento (e.g,

elem) all’elemento – Poi usiamo la proprietà style dell’elemento

per ottenere un oggetto (e.g., elem.style) di tipo CSS2Properties

•  Le proprietà di questo oggetto corrispondono ad ognuno degli attributi di stile CSS/CSS2/CCS3

•  Settare queste proprietà ha lo stesso effetto che settare il corrispondente stile attraverso l’attributo STYLE dell’elemento

Page 4: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 4

Esempio  Supponiamo di avere un elemento con ID uguale ad img1

 Per modif icare lo st i le ad esso assegnato scriviamo var elem = document.getElementById('img1') elem.style.visibility = "hidden";

elem.style.display="none"; elem.style.color = "yellow";

Page 5: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 5

<style type="text/css"> #scritta {position:absolute; z-index:3; left:0px; top:0px;

font-size:x-large; font-family: Arial, sans-serif; color:red; width:100px;}

</style>

<div id="scritta">CIAO! </div>

deltax = 5; deltay = 5; x += deltax; y += deltay; var elem = document.getElementById('scritta'); elem.style.left = x + "px"; elem.style.top = y + "px”;

Page 6: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 6

Convenzioni sui nomi – 1   I nomi delle proprietà CSS sono

mappati direttamente in nomi delle proprietà dell’oggetto CSS2Properties

  I valori che tali proprietà possono a s s u m e r e s o n o i v a l o r i d e l l e corrispondenti proprietà in CSS visti come stringa –  elem.style.color = "green"; –  elem.style.top = "100px";

Page 7: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 7

Convenzioni sui nomi – 2   Se una proprietà ha un identificatore con due

o tre nomi separatati dal trattino (e.g., font-s i ze , bo rde r - t op -co lo r ) a l l o ra sa rà rappresentato in JavaScript nel consueto stile a “gobba di cammello” (camel-back); quindi: –  font-size diventa fontSize e –  border-top-color diventa borderTopColor

  Gli identificatori con un solo nome non cambiano –  overflow di CSS resta overflow in JavaScript –  Eccezione: float diventa cssFloat

Page 8: 23 Javascript 5 - UNISA

Accedere a proprietà CSS inline   Leggere il valore

–  elem.style.getPropertyValue("background-color");

  Settare il valore –  elem.style.

setProperty("background-color", "green", null); –  Il terzo parametro è la priorità: important o null

  Per rimuovere una proprietà –  elem.style.removeProperty("background-color");

Supportate da tutti i browser (ma da IE9 in poi)

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 8

Page 9: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 9

Fogli di stile esterni/interni   I fogli di stile CSS contenuti nel

documento (interni o esterni) sono accessibili attraverso la collezione document.styleSheet (array di oggetti di tipo CSSStyleSheet)

  Il primo foglio di stile è contenuto in document.styleSheet[0]

 Le regole del foglio di stile sono contenute nella collezione cssRules[] –  IE le conservava in rules[] (non standard)

•  IE9 si è uniformato allo standard

Page 10: 23 Javascript 5 - UNISA

Oggetto CSSStyleRule – 1  L’array cssRules contiene oggetti di tipo

CSSStyleRule  Proprietà

–  cssText •  Legge/scrive la regola CSS (incluso il selettore)

–  parentStyleSheet •  Foglio di stile a cui appartiene la regola

–  selectorText •  Legge/scrive il selettore della regola CSS

–  style

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 10

Page 11: 23 Javascript 5 - UNISA

Oggetto CSSStyleRule – 2  Per accedere più facilmente allo stile

della regola accediamo alla proprietà style –  var foglioCSS= document.styleSheets[0] –  var regola = foglioCSS. cssRules[0]; –  var stile = regola.style;

 Su stile possiamo applicare – getPropertyValue, setProperty,

removeProperty

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 11

Page 12: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 12

Aggiungere/eliminare una regola

 Per aggiungere una regola si usa FoglioDiStile.insertRule(regola, indice) dove regola è la regola CSS da aggiungere al foglio, mentre indice rappresenta la posizione in cui inserirla

 Per cancellare una regola si usa FoglioDiStile.deleteRule(indice)

Page 13: 23 Javascript 5 - UNISA

Esempio var foglioStile = document.styleSheets[0]; var numRegole = foglioStile.cssRules.length; var selettore = "P" var istr = "{background:red; font-size:200%}”;

var regola =selettore + " " + istr; foglioStile.insertRule(regola, numRegole);

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 13

Page 14: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 14

Aggiungere una regola in IE – 3   Internet Explorer <9 usava la funzione

non standard addRule(selettore, regola, indice) dove selettore indica il selettore CSS a cui applicare quello che è specificato in regola, indice rappresenta la posizione in cui inserire la regola

  Per cancellare una regola si usa FoglioDiStile.removeRule(indice)

Page 15: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 15

Esempio di menu - HTML (1) <span class="menu" onclick="attiva('avellino')">

Avellino</span> <span class="menu" onclick="attiva('benevento')">

Benevento</span> <span class="menu" onclick="attiva('caserta')">

Caserta</span> <span class="menu" onclick="attiva('napoli')">

Napoli</span> <span class="menu" onmouseover="attiva('salerno')">

Salerno</span>

Page 16: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 16

Esempio di menu - HTML (2) <div id="avellino"

class="contenutomenu"> <ul> <li> Taur&igrave; <li> Coda di Volpe <li> Greco di Tufo </ul>

</div>

Codice simile per le altre province

Page 17: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 17

Esempio di menu - CSS (1) body { color: #606; font-family: Arial, Helvetica, Geneva, sans-

serif; background-color: #ccc } #avellino { visibility: hidden; }

Anche per le altre province

Page 18: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 18

Esempio di menu - CSS (2) .menu { font-weight: bold; font-size: 14px; font-family: Arial, Helvetica, Geneva, sans-serif; text-align: center; padding: 7px; margin: 3px; width: 100px; border: solid 1px #606; color: #606; background-color: #9c3; display:block; } span.menu:hover { color: #9c3; background-color: #606; cursor: pointer; }

<span class="menu"

Page 19: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 19

Esempio di menu - CSS (3) .contenutomenu { position: absolute; top: 15px; left: 200px; background-color: #99cc33; padding: 5px; width: 300px; border: solid 1px #606 }

<div .. class="contenutomenu">

Page 20: 23 Javascript 5 - UNISA

Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 20

Esempio di menu - javascript var menuAttivo = ""; function attiva(menu) {

var daMostrare = document.getElementById(menu); daMostrare.style.visibility = "visible";

//document.getElementById(menu).style.visibility = "visible”;

if(menuAttivo != menu) { menuAttivo = menu; var daNascondere = document.getElementById(tmp); daNascondere.style.visibility = "hidden"

} }

onclick="attiva('avellino')">