2012-05-14 40 views
23

Aktualnie pracuję nad witryną internetową i chcę zmienić kolor zaznaczenia tekstu.Zmienianie koloru zaznaczenia tekstu za pomocą CSS?

Mam trochę pracy. To jest (część) kodu w moim arkuszu stylów:

::selection { 
    background: #FF0099; 
    color: black; 
    text-shadow: none; 
} 

::-moz-selection { 
    background: #FF0099; 
    color: black; 
    text-shadow: none; 
} 

Daje to w większości satysfakcjonujący wynik. Jednak w niektórych przypadkach, podświetlanie wydaje się tracić swoją dany kolor (z # FF099), jak widać na tym zdjęciu:

picture of website

Jak widać na powyższym obrazku, tekst jest całkowicie wyróżnionego za pomocą właściwy kolor (# FF099); jednak obszar między tekstem głównym a tytułem, a także po lewej stronie tekstu głównego, jest podświetlony domyślnym kolorem (niebieskim). Jak mogę uniemożliwić części podświetlania powrót do wartości domyślnych?

edit: większy obraz dostępny w http://i.imgur.com/NmZIf.png

EDIT: jsFiddle próbki: http://jsfiddle.net/VUuFR/

+0

@MrLister Tak, mam coś podobnego do tego, co masz. Zobacz przykład jsFiddle, który napisałem. – Bhaxy

+1

Niebieski wygląda na element HTML. – Starx

+0

@MrLister Nie zgadzam się, moim zdaniem, pokazuje problem. Oto zrzut ekranu z tego, co widzę po podświetleniu wyjścia: http://i.imgur.com/UHOyN.png (wyraźnie widać niebieską przestrzeń między dwoma różowymi obszarami podświetlonego obszaru). – Bhaxy

Odpowiedz

10

Mam wędrował po tym problemem wcześniej i jak się okazuje:

::selection (or whatever selection you might use) 

nie działa na przerwie tag linii (br) ... usuń je i użyj zamiast nich marginesów. =) Oto skrzypce, aby zademonstrować: Example

+0

Schludny. Moja pierwsza reakcja była: naah, to nie może być takie proste. Ale widocznie tak jest! +1. Czy możesz sprawić, aby działał tak samo w Firefoksie? –

+0

dodaj ":: - moz-selection" – Daniel

+0

Nie działa; nie ten sam. –

0

Miałem ten sam problem.

Jeśli naprawdę chcą to istnieje kilka rzeczy, które można zrobić w elementach (nie :: wybór) masz problemy z:

div { 
    position: relative; /*Use it as much as you can*/ 
    height: 100px; /* or max-height instead of margin or br */ 
    line-height: normal; /* keep line-height normal*/ 
    -webkit-transform: translate(0px,0px); /* This hack can work */ 
    -moz-transform: translate(0px,0px); /* hack moz */ 
    transform: translate(0px,0px); /* hack prefixless */ 
} 
+0

Gdzie jest to związane z pytaniem? –

+0

... To była poprawka do problemu wspomnianego w pytaniu, niebieska część rzeczy nie zdarzy się z tej poprawki, przynajmniej 3 lata temu.Dzięki za negatywne głosowanie btw. –

8

Spróbuj to:

<style> 
*::selection { 
    background: #cc0000; 
    color: #ffffff; 
} 
*::-moz-selection { 
    background: #cc0000; 
    color: #ffffff; 
} 
*::-webkit-selection { 
    background: #cc0000; 
    color: #ffffff; 
} 
</style> 

Patrz: More Detail

+2

nie ma potrzeby stosowania znaku '*' przed znakami '::' –

0

Spróbuj zastąpić <br /> z marginesu do <p> elementów.

Oto działający Fiddle Demo

HTML

<p>sample</p> 
<p>sample2</p> 

CSS

p {margin-bottom:50px;} 
::selection { 
    background: #FF0099; 
    color: black; 
    text-shadow: none; 
} 
::-moz-selection { 
    background: #FF0099; 
    color: #EEE; 
    text-shadow: none; 
} 
0

Proponuję poniższy kod, próbowałem jej działa poprawnie.

Oto link z Demo żywo roboczegoChanging the text selection color using CSS

::selection 
    { 
     background: #FF0099; 
     color: black; 
     text-shadow: none; 
    } 
    ::-moz-selection 
    { 
     background: #FF0099; 
     color: #EEE; 
     text-shadow: none; 
    } 
    p 
    { 
     margin-bottom: 50px; 
    } 
4
/*** Works on common browsers ***/ 
::selection { 
    background-color: #352e7e; 
    color: #fff; 
} 

/*** Mozilla based browsers ***/ 
::-moz-selection { 
    background-color: #352e7e; 
    color: #fff; 
} 

/***For Other Browsers ***/ 
::-o-selection { 
    background-color: #352e7e; 
    color: #fff; 
} 

::-ms-selection { 
    background-color: #352e7e; 
    color: #fff; 
} 

/*** For Webkit ***/ 
::-webkit-selection { 
    background-color: #352e7e; 
    color: #fff; 
} 
Powiązane problemy