Czy istnieje selektor CSS dla węzłów tekstowych?


173

To, co chciałbym zrobić (oczywiście nie w IE) to:

p:not(.list):last-child + :text {
  margin-bottom: 10px;
}

Co dałoby węzłowi tekstowemu margines. (Czy to w ogóle możliwe?) Jak uzyskać węzeł tekstowy z CSS?


2
Możesz to przybliżyć używając ::first-line, choć jak sama nazwa wskazuje, dotyczy to tylko pierwszego wiersza tekstu. (Myślę też, że można na nim ustawić tylko niektóre właściwości)
Mark Garcia

Odpowiedzi:


114

Węzły tekstowe nie mogą mieć zastosowanych marginesów ani żadnego innego stylu, więc wszystko, do czego potrzebny jest styl, musi znajdować się w elemencie. Jeśli chcesz, aby część tekstu wewnątrz elementu miała inny styl, zawiń ją na przykład w znak spanlub div.


58
Niemniej jednak desperacko brakuje mi :: before i :: after w węzłach tekstowych.
shabunc

6
I'm nevertheless desperately missing ::before and ::after on text nodes.W rzeczy samej. Mogą nie przyjmować formatowania, ale z pewnością przyjmują content.
Synetech

12
Pytanie, jak kierować na węzeł tekstowy, jest całkowicie rozsądne. Zdaję sobie sprawę, że OP konkretnie powiedział „margines”, ale są to inne style, które można zastosować do węzła tekstowego i które możesz chcieć zastosować do węzła tekstowego, a nie do węzła nadrzędnego. Na przykład, powiedzmy, że chcę mieć obramowanie na dole pod tekstem. Zastosowanie dolnej krawędzi obramowania do węzła tekstowego przyniosłoby pożądane rezultaty, ale zastosowanie jej do określenia nadrzędnego elementu DIV spowodowałoby utworzenie dolnej krawędzi wokół całego elementu div. Niestety, CSS nie pozwala na ukierunkowanie na węzeł tekstowy poprzez dodanie elementów HTML ... przynajmniej na razie.
VKK

1
możesz ustawić dla niego czcionkę, z pewnością działa, ale żaden inny styl nie jest stosowany
Hamid Bahmanabady

Możesz robić tylko takie rzeczy w ramach stackoverflow.com/questions/10645552/ ...
strach

50

Nie możesz kierować na węzły tekstowe za pomocą CSS. Jestem z tobą; Chciałbym, żebyś mógł ... ale nie możesz :(

Jeśli nie <span> zawiniesz węzła tekstowego w sposób, który sugeruje @Jacob , możesz zamiast tego podać otaczający element, paddinga nie margin:

HTML

<p id="theParagraph">The text node!</p>

CSS

p#theParagraph
{
    border: 1px solid red;
    padding-bottom: 10px;
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.