2012-02-06 11 views
7

Come posso eliminare la proprietà CSS ::-webkit-scrollbar da un singolo elemento HTML?Possiamo rilasciare la proprietà CSS "-webkit-scrollbar" da un singolo nodo?

Nel mio file CSS, ho questo codice:

::-webkit-scrollbar { 
    width: 6px; 
    height: 6px; 
    background-color:transparent; 
} 
::-webkit-scrollbar-track { 
    background-color:transparent; 
    width: 6px; 
} 
::-webkit-scrollbar-track-piece { 
    background-color: blue; 
} 
::-webkit-scrollbar-thumb {  
    background-color: #d4dee8; 
    width: 6px; 
} 

andrà a sostituire ogni barra di scorrimento con barre di scorrimento WebKit. Ma ci sono due posti in cui non ho bisogno della barra di scorrimento del webkit, ho bisogno invece di normali barre di scorrimento.

file HTML:

<td class="viewDialogLabel" height="21" style="width:156px;padding:0px"> 
    <!-- Inner elements ---> 
</td> 

Qui, ho bisogno di cambiare classe viewDialogLabel a barre di scorrimento normali.

Come ottengo questo effetto?

risposta

4

WebKit supporta il pratico valore CSS initial, che riporta le proprietà ai valori che avrebbero avuto se non fossero stati applicati stili alla pagina.

Quindi, è possibile ripristinare i valori ::-webkit-scrollbar che hai impostato in questo modo:

.viewDialogLabel::-webkit-scrollbar { 
    width: initial; 
    height: initial; 
    background-color:initial; 
} 
.viewDialogLabel::-webkit-scrollbar-track { 
    background-color:initial; 
    width: initial; 
} 
.viewDialogLabel::-webkit-scrollbar-track-piece { 
    background-color: initial; 
} 
.viewDialogLabel::-webkit-scrollbar-thumb {  
    background-color: initial; 
    width: initial; 
} 

Vedi http://jsfiddle.net/uVGKr/


WebKit supporta anche the :not() selector, quindi avrei pensato la seguente modifica al vostro il CSS originale impediva l'applicazione delle barre di scorrimento personalizzate a quella cella della tabella:

:not(.viewDialogLabel)::-webkit-scrollbar { 
    width: 6px; 
    height: 6px; 
    background-color:transparent; 
} 
:not(.viewDialogLabel)::-webkit-scrollbar-track { 
    background-color:transparent; 
    width: 6px; 
} 
:not(.viewDialogLabel)::-webkit-scrollbar-track-piece { 
    background-color: blue; 
} 
:not(.viewDialogLabel)::-webkit-scrollbar-thumb { 
    background-color: #d4dee8; 
    width: 6px; 
} 

Tuttavia, non funziona per me in Chrome 16 - gli stili di barra di scorrimento personalizzati non vengono applicati affatto (vedere http://jsfiddle.net/uVGKr/1/). Non sono sicuro se sto facendo qualcosa di sbagliato, se proprio non riesci a combinare questi selettori, o se si tratta di un bug di WebKit.

Come per la tua modifica suggerito di rimuovere le td selettori del CSS, questo sembra funzionare in Chrome 24, almeno: http://jsfiddle.net/uVGKr/2/

+0

Sto anche utilizzando Chrome 16, gli stili di barra di scorrimento personalizzati non sono applicati a tutti –

+1

Ho apportato una correzione nei selettori per vedere [http://jsfiddle.net/uVGKr/2/].Ma il valore iniziale del CSS, non funziona come previsto, perché quando do 'iniziale' a tutti i campi in cui ho bisogno di scavalcare i rotoli del webkit in normali, le barre di scorrimento del webkit sono scomparse. Ma la normale barra di scorrimento non è riuscita a sostituire le barre di scorrimento del webkit. È solo uno sfondo trasparente nell'area della barra di scorrimento, vedi [http://jsfiddle.net/uVGKr/3/]. –

+1

Buon signore, sì, capisco cosa intendi per "iniziale". È strano: ha funzionato bene per le celle di una tabella con "overflow: hidden;", ma per le textareas, non sembra. Poi di nuovo, la soluzione ': not()' sembra funzionare bene solo con il selettore di classe all'interno di ': not()'. –

2

È possibile specificare un selettore più accurata:

.new-scrollbar::-webkit-scrollbar { 
    /* ... */ 
} 

Poi, solo gli elementi con la classe nuova barra di scorrimento avrà le barre di scorrimento personalizzate.

Oppure si può provare a sostituire le proprietà di elementi specifici:

.old-scrollbar::-webkit-scrollbar { 
    background: none; 
} 

.old-scrollbar::-webkit-scrollbar-track { 
    background: none; 
} 

/* ... */ 

provare anche con differenti proprietà/valori.

+0

Non è possibile, perché ci vorrà un sacco di tempo per ristrutturare (sia nel file Js che nel file CSS). –

+0

Il secondo esempio aiuta? – Yogu

0

Invece di rimuovere questi oggetti di questi due elementi è possibile specificare una classe o id separata per questi due elementi e sostituisci gli stili -webkit-scrollbar con quelli nuovi

+0

Puoi mostrarmi una demo per sostituire gli stili -webkit-scrollbar con quelli nuovi. –

+0

Eccolo: # your-id { larghezza: auto; altezza: auto; colore di sfondo: nessuno; } Ora puoi inserire questo id nei tuoi tag con gli stili che vuoi sostituire –

Problemi correlati