View Full Version : [css] dubbio su grammatica
ciao,
ho due domande che dovrebbero essere per voi semplicissime :)
1) per riferire un tag contenuto all'interno di una classe ,
non ho capito quando bisogna usare tag.class{} o .class tag {}
perchè ho riscontrato che vengono usati i due sopra citati metodi ,per esempio :
<body class="pippo"> </body>
body.pippo
<div class=pluto>
<a> </a>
</div>
.pluto a{
}
ma perchè nell'ultimo esempio non si fa
a.pluto{} ???
2) differenza tra margin-left e left ?
c'è qualcosa nella grammatica del css che mi devo essere perso per strata :stordita: :mc: :muro:
wingman87
19-04-2013, 19:44
ciao,
ho due domande che dovrebbero essere per voi semplicissime :)
1) per riferire un tag contenuto all'interno di una classe ,
non ho capito quando bisogna usare tag.class{} o .class tag {}
perchè ho riscontrato che vengono usati i due sopra citati metodi ,per esempio :
<body class="pippo"> </body>
body.pippo
<div class=pluto>
<a> </a>
</div>
.pluto a{
}
ma perchè nell'ultimo esempio non si fa
a.pluto{} ???
Perché nel primo caso è body ad avere la classe pippo, nel secondo caso a è un discendente di un tag avente la classe pluto.
In sostanza lo spazio significa che ciò che è a destra è discendente di ciò che è sinistra.
Vedi qui per una documentazione completa sui selettori:
http://www.w3schools.com/cssref/css_selectors.asp
2) differenza tra margin-left e left ?
Con margin-left specifichi il margine sinistro del box. Vedi qui per il box model:
http://www.w3schools.com/css/css_boxmodel.asp
left invece ha significato solo quando position non è static.
Se position è absolute, left è la posizione del lato sinistro del box rispetto al primo contenitore "antenato" con position absolute o relative (in mancanza di tale contenitore left è relativo all'intero documento).
Se position è relative, left è la posizione del lato sinistro del box rispetto a dove si sarebbe posizionato se la sua posizione fosse stata static.
Se position è fixed, left è la posizione del lato sinistro del box rispetto alla finestra del browser.
Vedi qui per un riferimento di tutte le proprietà css:
http://www.w3schools.com/cssref/default.asp
Perché nel primo caso è body ad avere la classe pippo, nel secondo caso a è un discendente di un tag avente la classe pluto.
In sostanza lo spazio significa che ciò che è a destra è discendente di ciò che è sinistra.
Vedi qui per una documentazione completa sui selettori:
http://www.w3schools.com/cssref/css_selectors.asp
Con margin-left specifichi il margine sinistro del box. Vedi qui per il box model:
http://www.w3schools.com/css/css_boxmodel.asp
left invece ha significato solo quando position non è static.
Se position è absolute, left è la posizione del lato sinistro del box rispetto al primo contenitore "antenato" con position absolute o relative (in mancanza di tale contenitore left è relativo all'intero documento).
Se position è relative, left è la posizione del lato sinistro del box rispetto a dove si sarebbe posizionato se la sua posizione fosse stata static.
Se position è fixed, left è la posizione del lato sinistro del box rispetto alla finestra del browser.
Vedi qui per un riferimento di tutte le proprietà css:
http://www.w3schools.com/cssref/default.asp
grazie per la risposta :)
ma quando la posizione è absolute e vengono usati entrambe le proprietà :
left e margin-left ? magari impostando left 50% e margin-left: -100px (trucchetto usato per centrare un elementro di larghezza 200px)
mi sembrano uguali le definizioni di margin e left :confused: :stordita: cioè uno esprime il margine sinistro dal suo elemento contenitore, e l'altro la distanza a sinistra dal suo elemento contenitore.. In pratica non è la stessa cosa ?
grazie per la risposta :)
ma quando la posizione è absolute e vengono usati entrambe le proprietà :
left e margin-left ?
mi sembrano uguali le definizioni di margin e left :confused: :stordita:
Se le metti tutte e due si vengono usate entrambe ma solo "left" lavora col position.
Se usi left e margin-left le due proprietà si sommano.
Es.
.contenitore {
position: relative;
}
.box {
position: sbsolute:
left: 100px;
margin-left: 100px;
}
Con questo codice il blocco box all'interno di un blocco contenutore si sposterà dal suo margine sinistro di 200px.
Se le metti tutte e due si vengono usate entrambe ma solo "left" lavora col position.
Se usi left e margin-left le due proprietà si sommano.
Es.
.contenitore {
position: relative;
}
.box {
position: sbsolute:
left: 100px;
margin-left: 100px;
}
Con questo codice il blocco box all'interno di un blocco contenutore si sposterà dal suo margine sinistro di 200px.
che intendi dire con :
solo left lavora con il position ? margin- non si riferisce comunque alla stessa cosa ?
che intendi dire con :
solo left lavora con il position ? margin- non si riferisce comunque alla stessa cosa ?
Che left: top: bottom: right: funzioanano solo se l'elemento padre e lo stesso elemento hanno dei position: (condizione necessaria è che ci siano due box con position: nonstatic (che è il default) che non è poco...)
Margin-left invece funziona sempre, con qualsiasi box, anche solo con se stesso.
In pratica (molto alla buona) left e margin-left hanno si lo stesso effetto, ovvero spostano il box corrente da sinistra di un certo valore, ma la teoria è completamente diversa e l'implementazione pure.
Che left: top: bottom: right: funzioanano solo se l'elemento padre e lo stesso elemento hanno dei position: (condizione necessaria è che ci siano due box con position: nonstatic (che è il default) che non è poco...)
Margin-left invece funziona sempre, con qualsiasi box, anche solo con se stesso.
In pratica (molto alla buona) left e margin-left hanno si lo stesso effetto, ovvero spostano il box corrente da sinistra di un certo valore, ma la teoria è completamente diversa e l'implementazione pure.
devo documentarmi un altro pochino , mi interessava capire a fondo le differenze :)
si ora ho capito left,bottom,top,right funzionano con il position,
mentre i margini rappresentano il margine tra un elemento e l'elemento a lui adiacente .
QUindi se ho due div uno sotto l'altro el secondo metto margin-top : 50px si riferisce alla distanza dal div sopra , e se vi metto sempre al secondo div un top: 5000px questa è la distanza tra il div e il margine superiore dell'elemento che lo contiene . GIusto ? :)
In quel caso sarebbe posizionato alla somma delle distanze o solo alla più grande che contiene anche la più piccola ?
cioè 5050 o 5000 ? :D
si ora ho capito left,bottom,top,right funzionano con il position,
mentre i margini rappresentano il margine tra un elemento e l'elemento a lui adiacente .
QUindi se ho due div uno sotto l'altro el secondo metto margin-top : 50px si riferisce alla distanza dal div sopra , e se vi metto sempre al secondo div un top: 5000px questa è la distanza tra il div e il margine superiore dell'elemento che lo contiene . GIusto ? :)
In quel caso sarebbe posizionato alla somma delle distanze o solo alla più grande che contiene anche la più piccola ?
cioè 5050 o 5000 ? :D
Partendo dal pressuposto che i div devono essero uno dentro l'altro per far funzionare il position della seconda parte abbiamo:
primo caso: il secondo div si posizionerà a 50px dal contenuto del div padre. (Puoi anche fare due div separati per questo caso) il secondo si posizionerà a 50px da quello precedente.
secondo caso: il secondo div si posizionerà a 5050. 5000 dato da posizionamento e 50 dal margin-top.
Ciaoo
Partendo dal pressuposto che i div devono essero uno dentro l'altro per far funzionare il position della seconda parte abbiamo:
primo caso: il secondo div si posizionerà a 50px dal contenuto del div padre. (Puoi anche fare due div separati per questo caso) il secondo si posizionerà a 50px da quello precedente.
secondo caso: il secondo div si posizionerà a 5050. 5000 dato da posizionamento e 50 dal margin-top.
Ciaoo
quindi margin-top non si rende conto che la distanza dal div superiore è già superiore ai 50px che richiedo con il margin-top ? :)
vi volevo fare un ultima domanda :
i div sono elementi di blocco eppure se creo un div con sfondo rosso e una scritta di una riga al suo interno avviene la seguente cosa :
position : static ; il colore rosso si estende per tutta la dimensione della pagina
position : relative ; il colore rosso si estende per tutta la dimensione della pagina
position : absolute; il colore rosso si estende solo per la dimensione della scritta
se lo imposto float fa la stessa cosa che se lo posiziono absolute.
Ora la domanda è , perchè se lo imposto assoluto o float si comporta quasi come un elemento inline e lo sfondo non si estende in larghezza per tutta la larghezza del contenitore ?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.