2009-05-13 12 views
45

Ho una casella di ricerca con suggerimento automatico che fa apparire un div in basso con più suggerimenti per le stringhe di ricerca (come google). È possibile avere un'ombra esterna sulla casella di suggerimento automatico con CSS o avrò bisogno di uno script di qualche tipo? Ho provato un'immagine di sfondo ma il numero di suggerimenti può variare da 1 a 10 o 15.Ombra esterna su un contenitore div?

Preferirei qualcosa che funzioni in IE6 + e FF2 + se possibile. Grazie!

risposta

12

CSS3 ha una proprietà box-shadow. Al momento sono richiesti i prefissi dei fornitori per la massima compatibilità del browser.

div.box-shadow { 
    -webkit-box-shadow: 2px 2px 4px 1px #fff; 
    box-shadow: 2px 2px 4px 1px #fff; 
} 

C'è un generatore disponibile a css3please.

+0

Basta notare che per il posizionamento assoluto a destra, la casella di suggerimento automatico deve essere posizionata in modo assoluto o relativo. –

+0

Cosa succede se non riesco ad avere un'altezza fissa nella casella di suggerimento automatico? Il numero di suggerimenti varia da 1 a 15. –

2

Il modo più compatibile per farlo è probabilmente quello di creare un secondo div sotto la casella di auto-suggerimento delle stesse dimensioni della scatola stessa, spostata di alcuni pixel verso il basso e verso destra. Puoi usare JS per crearlo e posizionarlo, il che non dovrebbe essere terribilmente difficile se stai usando un framework abbastanza moderno.

+0

Sì, e puoi creare una bella scatola principale di qualsiasi forma che ti piace con l'immagine di sfondo giusta, e creare una completamente nera della stessa forma per l'ombreggiatura e regolare l'opacità per ottenere l'effetto desiderato. –

2

si potrebbe desiderare di provare questo. Sembra essere piuttosto facile e funziona su IE6 e Moz atleast.

<div id ="show" style="background-color:Silver;width:100px;height:100px;visibility:visible;border-bottom:outset 1px black;border-right:outset 1px black;" ></div> 

La sintassi generale è: border-[postion]: [border-style] [border-width] [border-color] | ereditare

L'elenco dei disponibili [in stile confine] s sono:

  • tratteggiata
  • punteggiato
  • doppia
  • scanalatura
  • nascosto
  • inserto
  • nessuno
  • outse t
  • cresta
  • solido
  • ereditare
+0

Aggiunge semplicemente un bordo e non rilascia un'ombra. – Si8

70

Questo funziona per me su tutti i miei browser:

.shadow { 
-moz-box-shadow: 0 0 30px 5px #999; 
-webkit-box-shadow: 0 0 30px 5px #999; 
} 

poi basta dare qualsiasi div classe ombra, senza jQuery richiesto.

+3

http://www.css3.info/preview/box-shadow/ - Ho trovato questo sito per avere ottimi esempi di effetti ombra diversi – Darcy

+0

non hai bisogno di box-shadow da solo per IE9? –

+0

l'ho provato sta funzionando bene. – Krishna

2
.shadow { 
    -moz-box-shadow: 3px 3px 5px 6px #ccc; 
    -webkit-box-shadow: 3px 3px 5px 6px #ccc; 
    box-shadow:   3px 3px 5px 6px #ccc; 
} 
Problemi correlati