Visualizzazione dei risultati da 1 a 3 su 3

Discussione: css e visibility

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152

    css e visibility

    Salve a tutti avrei un problema con i fogli di stile ed il layout liquido!
    Ho preso il codice di uno degli esempi di layout da pro.html.it:

    il codice è:

    <style type="text/css">
    html,body{margin:0;padding:0}
    body{font: 76% Verdena,sans-serif}
    p{margin:0 10px 10px}
    a{display:block;color: #981793;padding:10px}
    div#header h1{height:80px;line-height:80px;margin:0;padding-left:10px;background: #EEE;color: #79B30B}
    div#content p{line-height:1.4}
    div#navigation{background:#B9CAFF}
    div#extra{background:#FF8539}
    div#footer{background: #333;color: #FFF}
    div#footer p{margin:0;padding:5px 10px}

    div#wrapper{float:right;width:100%;margi
    n-right:-200px}
    div#content{margin-right:200px;margin-top:5px}
    div#content1{margin-right:200px;margin-top:5px}
    div#navigation{float:left;width:200px}
    div#extra{float:left;clear:left;width:20
    0px}
    div#footer{clear:both;width:100%}
    </style>


    </head>
    <body>
    <div id="container">
    <div id="header"><h1>Header</h1></div>
    <div id="wrapper">
    <div id="content" style="text-align:justify;">


    1) Content here. column long long column very long fill fill fill long text text column text silly very make long very fill silly make make long make text fill vefiller silly very mak column make silly long column long make very </p>
    </div>
    </div>
    <div id="navigation">


    2) Navigation here.long long fill filler very fill column column silly filler very filler fill fill filler text fill very silly fill text filler silly silly filler fill very make fill column text column very very column fill fill very silly column silly silly fill fill long filler </p>
    </div>
    <div id="extra">


    3) More stuff here. very text make long column make filler fill make column column silly filler text silly column fill silly fill column text filler make text silly filler make filler very silly make text very very text make long filler very make column make silly column fill silly column long make silly filler column filler silly long long column fill silly column very </p>
    </div>
    <div id="footer">

    Here it goes the footer</p></div>
    </div>

    </body>
    </html>


    Vorrei capire se è possibile inserire un altro div tipo content inizialmente non visibile, che cliccando su un apposito link sul menu di sinistra sia reso visibile e vada a sostitursi al content iniziale! Ho provato utilizzando una funzione javascript per il controllo dello style.visibility di un oggetto ma il problema è che aggiungendo un altro div ,ad esempio uguale a content e con lo stesso posizionamento ma inizialmente nascosto , comunque viene posizionato più giù rispetto al primo div.

    Ringrazio chiunque voglia darmi una mano
    andry80

  2. #2
    Sono di fretta e non ho guardato attentamente il codice, ma da quello che hai detto di voler ottenere, la soluzione dovrebbe essere semplice.

    1. Nella regola di stile del box content, aggiungi position: relative.

    2. Nel codice XHTML della pagina scrivi il div che vuoi che sostituisca (o meglio si sovrapponga al content) dentro il div content. Es.:

    codice:
    <div id="content">
    .....contenuti content.......
    <div id="content-nascosto" style="display: none;">
    ......contenuti content-nascosto.....
    </div>
    </div>
    E' importante che la dichiarazione display: none la scrivi come uno stile in linea (nell'attributo style del box content-nascosto) perché è l'unico modo per cambiarla "al volo" con JavaScript (sei costretto a usare JavaScript se vuoi pilotare l'apparizione del div nascosto da un menu).

    3. Nella regola di stile per il box content-nascosto imposti:

    codice:
    width: 100%;
    height: 100%;
    postion: absolute;
    top: 0;
    left: 0;
    Ricorda che devi avere le dimensioni del box content definite per poter impostare width e height del box content-nascosto a 100%. Così facendo, il box content-nascosto "copre" esattamente il box content quando appare. Di default, un elemento position: absolute ha sempre uno z-index superiore a quello di un elemento statico, quindi il tuo div content-nascosto sarà automaticamente più "alto" rispetto al div content, che è quello che ti interessa (indipendentemente da dove è scritto fisicamente il div content-nascosto nel codice).

    4. Per finire, al link del menu che deve far comparire (e se vuoi, anche scomparire) il div quando cliccato, assegni una funzione JavaScript in questo modo:

    La funzione JavaScript (che dovrai inserire nella sezione head della pagina o in un file js a parte) è fatta così:

    codice:
    function showhidebox(boxid) {
    if (document.getElementById(boxid).style.display=="") {
    document.getElementById(boxid).style.display = "none";
    }
    else {
    document.getElementById(boxid).style.display = "";
    }
    }
    Cliccando sul link quando il box content-nascosto non è visibile, la funzione lo rende visibile, mentre se il box è già visibile, lo nasconde.

    Visibility si limita a nascondere visivamente un elemento, ma tale elemento è comunque presente nella pagina e quindi continua a influenzarne il layout. Display invece, non serve a nascondere un elemento ma ne modifica il comportamento. Impostando display: none non si nasconde solo un elemento, ma lo si "elimina" fisicamente dal codice interpretato dal browser (è come se non esistesse). Nel nostro caso era indifferente usare visibility o display, perché il box nascosto è comunque posizionato in modo assoluto e quindi è estratto dal normale flusso del documento, non influenzandone il layout. Tuttavia ho preferito usare la proprietà display al posto di visibility...preferenze personali.

    Spero di esserti stato utile

  3. #3
    Ehm, scusa ma ho fatto qualche errore di codice per la fretta...ho scritto "postion: absolute" invece di "position: absolute" e "<a href="java script:" invece di "<a href="javascript:"...spero non ce ne siano altri!

    Al limite fammi sapere se hai problemi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.