2013-02-26 13 views
8

Jestem świadomy, że pseudo-klasa :empty wybierze wszystkie elementy bez dzieci, ale chcę tylko zaznaczyć elementy z tekstem węzły jak dzieci.CSS Selector: prawie pusty?

Mam dolne obramowanie na moich hiperlinkach, które różnią się kolorem od tekstu, ale jest to problem, ponieważ hiperłącza również są podkreślane.

Próbowałem a *:not(*){ border-bottom-width: 0; } starając się naprawić to, ale to nie działa. Czy istnieje sposób wybierania tagów a tylko z węzłami tekstowymi dla dzieci?

Odpowiedz

0

Skończyłem właśnie przy użyciu jQuery. Nie wierzę, że jest to możliwe dzięki właśnie CSS teraz.

jQuery('document').ready(function(){ 
    jQuery("a").each(function(){ 
     if(this.children.length !== 0) 
      this.style.borderBottomWidth='0'; 
    }); 
}); 
1

Jeśli rozumiem Twojego problemu poprawnie, starają się zachować swoje obrazy z hiperłączami podkreślono. Jeśli tak, dlaczego nie zrobić coś takiego: a img { text-decoration:none }?

Edit: jeśli jego linki w tagach img nie chcesz podkreślony, stosuje się klasę tych linków z text-decoration:none

1

NEW odpowiedź:

Jeśli chcesz granicy w ramach obraz, ale nie tekst to zrobić:

a img { border-bottom: 1px solid #000; } 
a:emtpy { border: none; }

Jeśli chcesz odwrotny (granica pod tekstem, ale nie obrazu) to zrobić:

a:empty { border-bottom: 1px solid #000; } 
a img { border: none; }

OLD ODPOWIEDŹ:

Jeśli jest to tylko problem z obrazami, które są zapakowane w tagach, spróbuj:

a img { border-bottom: none; }
+0

podkreślenie jest włączone ** link **, a nie obraz –

1

Zamiast szalonej selektora, dlaczego nie ukryć granicę z ujemną marżą:

a img { 
    margin-bottom: -6px; 
} 

Demo

+0

Niektóre z połączonych obrazów mają przezroczyste tło. –

+0

Czy możesz ustawić białe tło dla 'img', czy może wyglądałoby to źle? – bookcasey

+0

Mogłem, ale różne obrazy wymagałyby różnych kolorów tła, a niektóre mogą nawet być częściami gradientów. Chciałbym tego uniknąć, jeśli to możliwe, ale może to być właśnie to, co robię, jeśli nie ma innych rozsądnych odpowiedzi. –

0

To nie może być dokonany ze względu na sposób border nieruchomość jest stosowana i świadczonych poza najwyższym, pudełka twojej kotwicy - w praktyce jedynym sposobem osiągnięcia takiego efektu przy granicy byłoby negowanie własności. Czasami można wizualnie zaakceptować użycie dolnego obramowania w kolorze tła, który nakładałby się na kolor twojej kotwicy - niewiarygodna praktyka, na którą można się marszczyć. Być może efekt może być symulowany za pomocą filtrów, ale nie liczę na to, że jest wystarczająco dobrze obsługiwana w różnych przeglądarkach.

Co proponuję wraca do nieruchomości text-decoration * zachowując inny, niezależny podkreślenia colour` - wymienia ogólne podejście, ale nie bez obciążania dodatkowy element:

<style> 
.fancy-underline { color:blue; text-decoration:underline; } 
.fancy-underline a { color:black; text-decoration:none; } 
</style> 
<span class="fancy-underline"><a href="#">I am a fancy link 
    <img src="//placekitten.com/30/30/" /> with an image in the middle of it 
</a></span> 

http://jsfiddle.net/ovfiddle/TwmmF/3/