Zarysuj efekt na tekście

329

Czy w CSS są jakieś sposoby nadawania konturów tekstowi w różnych kolorach? Chcę wyróżnić niektóre fragmenty tekstu, aby uczynić go bardziej intuicyjnym - na przykład nazwy, linki itp. Zmiana kolorów linków itp. Jest obecnie powszechna, więc chcę coś nowego.

Prochowiec
źródło
17
@ Dan Better oznacza inaczej. Twoja rada jest ogólnie dobra, ale może też stłumić twórcze eksperymentowanie. Co więcej, zwykle nie jest to „powszechne = dobre”… raczej „wspólne = ledwo dobre”.
Konrad Rudolph
7
@Dan Grossman: świat ewoluuje z nowych pomysłów, nie wszystko nowe jest godne pogardy.
yoda
7
@yoda Twoja składnia jest niezwykła. / EDIT nieważne, myliłem cię z kimś innym… małym zielonym kolesiem.
Konrad Rudolph
Czy możesz bardziej szczegółowo opisać to, czego potrzebujesz. Nie jestem do końca pewien, co masz na myśli, mówiąc, że chcesz „nadać kontur tekstowi w różnych kolorach”
Yi Jiang
1
możliwy duplikat czcionki CSS?
Adam Jensen

Odpowiedzi:

452

W text-strokeCSS3 jest eksperymentalna właściwość webkit. Próbowałem ją uruchomić od jakiegoś czasu, ale jak dotąd nie udało mi się.

Zamiast tego wykorzystałem już obsługiwaną text-shadowwłaściwość ( sądzę, że jest obsługiwana w Chrome, Firefox, Opera i IE 9).

Użyj czterech cieni do symulacji obrysowanego tekstu:

.strokeme {
  color: white;
  text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
}
<div class="strokeme">
  This text should have a stroke in some browsers
</div>

Zrobiłem dla ciebie tutaj wersję demo

I ukryty przykład jest dostępny tutaj


Jak wspomniał Jason C w komentarzach, text-shadowwłaściwość CSS jest teraz obsługiwana przez wszystkie główne przeglądarki, z wyjątkiem Opery Mini. Tam, gdzie to rozwiązanie będzie działać na rzecz kompatybilności wstecznej (nie jest to tak naprawdę problem dotyczący przeglądarek z automatyczną aktualizacją), uważam, że text-strokenależy użyć CSS.

Kyle
źródło
12
Niestety IE nie obsługuje text-shadowdo IE10. Co dziwne, IE9 obsługuje, box-shadowale nie obsługuje text-shadow.
Web_Designer,
14
Oto podsumowanie obsługi przeglądarki dlatext-shadow . Wygląda na to, że obecnie (3 lata po opublikowaniu tej odpowiedzi) jest obsługiwana przez wszystkie główne przeglądarki, z wyjątkiem Opery Mini, która pokazuje „częściowe wsparcie” (ignoruje blur-radius).
Jason C
3
Dodaje to text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
cieńszego
29
Niesamowita nazwa klasy
obywatel Conn
4
Jason C wskazał na text-shadowwsparcie, a nie na wsparcie text-stroke. Który jest obecnie obsługiwany tylko przez webkit.
Gregoire D.
100

Edycja: text-stroke jest teraz dość dojrzały i zaimplementowany w większości przeglądarek . To jest łatwiejsze, ostrzejsze i bardziej precyzyjne. Jeśli odbiorcy przeglądarki mogą to obsługiwać, powinieneś teraz użyć text-strokenajpierw zamiast text-shadow.


Możesz i powinieneś to zrobić za pomocą text-shadow efektem bez żadnych przesunięć:

.outline {
    color: #fff;
    text-shadow: #000 0px 0px 1px;
    -webkit-font-smoothing: antialiased;
}

Dlaczego? Kiedy zrównoważysz wiele efektów cienia, zaczniesz zauważać nierówne, poszarpane rogi: Przesunięcia efektu cienia powodują zauważalne poszarpane rogi.


Posiadanie efektów cienia tekstu w jednej pozycji eliminuje przesunięcia, co oznacza, że ​​jeśli uważasz, że jest to zbyt cienki i wolałby ciemniejszy kontur, nie ma problemu - może kilkakrotnie powtórzyć ten sam efekt (zachowując tę ​​samą pozycję i rozmycie). Tak jak:

text-shadow: #000 0px 0px 1px,   #000 0px 0px 1px,   #000 0px 0px 1px,
             #000 0px 0px 1px,   #000 0px 0px 1px,   #000 0px 0px 1px;

Oto próbka tylko jednego efektu (u góry) i ten sam efekt powtórzony 14 razy (u dołu):


Przykładowy tekst renderowany za pomocą text-shadow

Uwaga: ponieważ linie stają się tak cienkie, bardzo dobrym pomysłem jest wyłączenie renderowania subpikseli za pomocą
-webkit-font-smoothing: antialiased.

rodowy
źródło
Ciekawa odpowiedź, dzięki. Nie do końca rozumiem, co masz na myśli, mówiąc „powtarzanie” efektu.
edzillion
Dzięki za tę font-smoothingopcję, znacznie poprawiła wydajność w chrome!
Meki,
1
Zwracam uwagę na komentarz dodany do odpowiedzi, że obrys tekstu jest teraz obsługiwany w większości przeglądarek, ale caniuse jest nadal (sierpień 2016 r.) Pokazując, że jest nieobsługiwany we wszystkich wersjach IE i Edge, i wymaga -webkit-obrysu tekstu w układzie Flaga .css.prefixes.webkit włączona w przeglądarce Firefox. Methinks, który nie jest wystarczająco rozpowszechniony, obsługuje ogólne witryny publiczne.
Nick Rice,
1
Myślę, że powtórzenie 14 razy cień tekstu może mieć problem z wydajnością. Zwłaszcza podczas przewijania na telefonie komórkowym.
kaosmos
2
AFAIK text-stroketo nie to samo, co kontur przez text-shadow. text-strokenie ma opcji, aby kontur pojawił się poza tekstem, co oznacza, że ​​kontur wlewa się do tekstu, przez co często wygląda naprawdę okropnie. Innymi słowy, text-strokenie zastępuje text-shadowkonturów
gman
90

Łatwy! SVG na ratunek.

To jest uproszczona metoda:

svg{
  font: bold 70px Century Gothic, Arial;
  width: 100%;
  height: 120px;
}

text{
  fill: none;
  stroke: black;
  stroke-width:0.5px;
  // stroke-dasharray: 2,2;
  stroke-linejoin: round;
  animation: 2s pulsate infinite;
}

@keyframes pulsate {
  50%{ stroke-width:4px; }
}
<svg viewBox="0 0 450 50">
  <text y="40">Scalable Title</text>
</svg>

Oto bardziej złożone demo .

vsync
źródło
6
To świetne rozwiązanie i nie ma problemów z wydajnością związanych z cieniem tekstu. Różnica w wydajności między tym podejściem a układaniem wielu cieni tekstowych jest ogromna dla mojej konkretnej aplikacji (IE 10 na ekranach o dużym ekranie).
djskinner
3
To dało mi znacznie lepszy efekt niż cienie tekstu, ponieważ potrzebowałem grubej linii. Dziękuję Ci!
Andrea,
2
To czysty złoty koleś !! Bardzo profesjonalne i wykwalifikowane podejście, doskonała odpowiedź na pytanie! To rozwiązanie wyprzedza W3 Council, Google czy cokolwiek innego, gratulacje!
Heitor
To rozwiązanie byłoby również dla mnie idealne, gdybym nie dodał obrysu do
pola tekstowego
36

Możesz spróbować układać w stos wiele zacienionych cieni, dopóki cienie nie będą wyglądały jak obrys:

.shadowOutline {
  text-shadow: 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black, 0 0 4px black;
}

Oto skrzypce: http://jsfiddle.net/GGUYY/

Wspominam o tym na wypadek, gdyby ktoś był zainteresowany, chociaż nie nazwałbym tego rozwiązaniem, ponieważ zawodzi na różne sposoby:

  • nie działa w starym IE
  • renderuje się zupełnie inaczej w każdej przeglądarce
  • zastosowanie tak wielu cieni jest bardzo trudne do przetworzenia: S
bracie
źródło
1
To naprawdę prosty i genialny pomysł!
1
Dzięki, problemem jest jednak wydajność, używaj z rozwagą :)
bracie,
1
To jest fantastyczne. Dodatkowe warstwy cieniowania naprawdę dodają mu głębi i działa w IE11, FF36 i Chrome 41.
RockiesMagicNumber
17

Szukałem rozwiązania obrysu tekstowego w różnych przeglądarkach, które działałoby po nałożeniu na obrazy tła. myślę, że mam na to rozwiązanie, które nie wymaga dodatkowego narzutu, js i działa w IE7-9 (nie testowałem 6) i nie powoduje problemów z aliasingiem.

Jest to kombinacja użycia cienia tekstowego CSS3, który ma dobre wsparcie oprócz IE ( http://caniuse.com/#search=text-shadow ), a następnie kombinacji filtrów dla IE. Obsługa obrysu tekstu w CSS3 jest obecnie słaba.

Filtry IE

Filtr blasku ( http://www.impressivewebs.com/css3-text-shadow-ie/ ) wygląda okropnie, więc go nie użyłem.

Odpowiedź Davida Hewitta polegała na dodaniu filtrów cienia w kombinacji kierunków. ClearType jest następnie niestety usuwany, więc otrzymujemy źle aliasowany tekst.

Następnie połączyłem niektóre elementy sugerowane w useragentman z filtrami dropshadow.

Składając to razem

Ten przykład to czarny tekst z białym obrysem. Korzystam z warunkowych klas HTML w celu dotarcia do IE ( http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ ).

#myelement {
    color: #000000;
    text-shadow:
    -1px -1px 0 #ffffff,  
    1px -1px 0 #ffffff,
    -1px 1px 0 #ffffff,
    1px 1px 0 #ffffff;
}

html.ie7 #myelement,
html.ie8 #myelement,
html.ie9 #myelement {
    background-color: white;
    filter: progid:DXImageTransform.Microsoft.Chroma(color='white') progid:DXImageTransform.Microsoft.Alpha(opacity=100) progid:DXImageTransform.Microsoft.dropshadow(color=#ffffff,offX=1,offY=1) progid:DXImageTransform.Microsoft.dropshadow(color=#ffffff,offX=-1,offY=1) progid:DXImageTransform.Microsoft.dropshadow(color=#ffffff,offX=1,offY=-1) progid:DXImageTransform.Microsoft.dropshadow(color=#ffffff,offX=-1,offY=-1);
    zoom: 1;
}
crdunst
źródło
Działa to również w starszych IE:filter: glow(color=white,strength=1);
mch
16

Po prostu dodając tę ​​odpowiedź. „Głaskanie” tekstu to nie to samo, co „konspekty”

Konturowanie wygląda świetnie. Głaskanie wygląda okropnie.

Rozwiązanie SVG wymienione w innym miejscu ma ten sam problem. Czy chcesz zarys , musisz dwukrotnie umieścić tekst. Raz pogłaskał i jeszcze raz nie pogłaskał.

Gładzenie NIE JEST konspektem

body {
  font-family: sans-serif;
  margin: 20px;
}

.stroked {
  color: white;
  -webkit-text-stroke: 1px black;
}

.thickStroked {
  color: white;
  -webkit-text-stroke: 10px black;
}

.outlined {
  color: white;
  text-shadow:
    -1px -1px 0 #000,
     0   -1px 0 #000,
     1px -1px 0 #000,
     1px  0   0 #000,
     1px  1px 0 #000,
     0    1px 0 #000,
    -1px  1px 0 #000,
    -1px  0   0 #000;
}

.thickOutlined {
  color: white;
text-shadow: 0.0px 10.0px 0.02px #000, 9.8px 2.1px 0.02px #000, 4.2px -9.1px 0.02px #000, -8.0px -6.0px 0.02px #000, -7.6px 6.5px 0.02px #000, 4.8px 8.8px 0.02px #000, 9.6px -2.8px 0.02px #000, -0.7px -10.0px 0.02px #000, -9.9px -1.5px 0.02px #000, -3.5px 9.4px 0.02px #000, 8.4px 5.4px 0.02px #000, 7.1px -7.0px 0.02px #000, -5.4px -8.4px 0.02px #000, -9.4px 3.5px 0.02px #000, 1.4px 9.9px 0.02px #000, 10.0px 0.8px 0.02px #000, 2.9px -9.6px 0.02px #000, -8.7px -4.8px 0.02px #000, -6.6px 7.5px 0.02px #000, 5.9px 8.0px 0.02px #000, 9.1px -4.1px 0.02px #000, -2.1px -9.8px 0.02px #000, -10.0px -0.1px 0.02px #000, -2.2px 9.8px 0.02px #000, 9.1px 4.2px 0.02px #000, 6.1px -8.0px 0.02px #000, -6.5px -7.6px 0.02px #000, -8.8px 4.7px 0.02px #000, 2.7px 9.6px 0.02px #000, 10.0px -0.6px 0.02px #000, 1.5px -9.9px 0.02px #000, -9.3px -3.6px 0.02px #000, -5.5px 8.4px 0.02px #000, 7.0px 7.2px 0.02px #000, 8.5px -5.3px 0.02px #000, -3.4px -9.4px 0.02px #000, -9.9px 1.3px 0.02px #000, -0.8px 10.0px 0.02px #000, 9.6px 2.9px 0.02px #000, 4.9px -8.7px 0.02px #000, -7.5px -6.7px 0.02px #000, -8.1px 5.9px 0.02px #000, 4.0px 9.2px 0.02px #000, 9.8px -2.0px 0.02px #000, 0.2px -10.0px 0.02px #000, -9.7px -2.3px 0.02px #000, -4.3px 9.0px 0.02px #000, 7.9px 6.1px 0.02px #000
}

svg {
  font-size: 40px;
  font-weight: bold;
  width: 450px;
  height: 70px;
  fill: white;
}

.svgStroke {
  fill: white;
  stroke: black;
  stroke-width: 20px;
  stroke-linejoin: round;
}
<h1 class="stroked">Properly stroked!</h1>
<h1 class="outlined">Properly outlined!</h1>

<h1 class="thickStroked">Thickly stroked!</h1>
<h1 class="thickOutlined">Thickly outlined!</h1>

<svg viewBox="0 0 450 70">
  <text class="svgStroke" x="10" y="45">SVG Thickly Stroked!</text>
</svg>
<svg viewBox="0 0 450 70">
  <text class="svgStroke" x="10" y="45">SVG Thickly Outlined!</text>
  <text class="svgText" x="10" y="45">SVG Thickly Outlined!</text>
</svg>

PS: Chciałbym wiedzieć, jak ustawić SVG, aby miał odpowiedni rozmiar dowolnego dowolnego tekstu. Mam wrażenie, że dość skomplikowane jest wygenerowanie pliku svg, sprawdzenie go za pomocą javascript, aby uzyskać zakres, a następnie zastosowanie wyników. Jeśli istnieje łatwiejszy sposób niż js, chciałbym wiedzieć.

gman
źródło
1
Doskonałe, to jest poprawna metoda, obrysowywanie, a nie głaskanie. Działa pięknie i schludnie i przyjemnie dla oczu.
MitchellK,
7

Mam lepsze wyniki z 6 różnymi cieniami:

.strokeThis{
    text-shadow:
    -1px -1px 0 #ff0,
    0px -1px 0 #ff0,
    1px -1px 0 #ff0,
    -1px 1px 0 #ff0,
    0px 1px 0 #ff0,
    1px 1px 0 #ff0;
}
surajck
źródło
Chciałem większy cień i musiałem dodać kilka dodatkowych linii .... 3px 0px 0 # 343a7e, -3px 0px 0 # 343a7e
Jayden Lawson
7

h1 {
   color: black;
   -webkit-text-fill-color: white; /* Will override color (regardless of order) */
   -webkit-text-stroke-width: 1px;
   -webkit-text-stroke-color: black;
}
<h1>Properly stroked!</h1>

Aashish
źródło
6

Ta mieszanka dla SASS da płynne wyniki, przy użyciu 8-osiowej:

@mixin stroke($size: 1px, $color: #000) {
  text-shadow:
    -#{$size} -#{$size} 0 $color,
     0        -#{$size} 0 $color,
     #{$size} -#{$size} 0 $color,
     #{$size}  0        0 $color,
     #{$size}  #{$size} 0 $color,
     0         #{$size} 0 $color,
    -#{$size}  #{$size} 0 $color,
    -#{$size}  0        0 $color;
}

I normalny CSS:

text-shadow:
  -1px -1px 0 #000,
   0   -1px 0 #000,
   1px -1px 0 #000,
   1px  0   0 #000,
   1px  1px 0 #000,
   0    1px 0 #000,
  -1px  1px 0 #000,
  -1px  0   0 #000;
Ryall
źródło
4

Praca z grubszymi pociągnięciami staje się nieco niechlujna, jeśli masz przyjemność sassa wypróbować tę mieszankę, nie idealną i w zależności od masy pociągnięcia generuje sporo css.

 @mixin stroke($width, $colour: #000000) {
      $shadow: 0 0 0 $colour; // doesn't do anything but I couldn't work out how to create a blank string and maintain commas
      @for $i from 0 through $width {
          $shadow: $shadow,
          -$i + px -$width + px 0 $colour,
          $i + px -$width + px 0 $colour,
          -$i + px $width + px 0 $colour,
          $i + px $width + px 0 $colour,
          -$width + px -$i + px 0 $colour,
          $width + px -$i + px 0 $colour,
          -$width + px $i + px 0 $colour,
          $width + px $i + px 0 $colour,
      }
      text-shadow: $shadow;
}
evo_rob
źródło
1
Ten mixin nie działał dla mnie, ale ten działał
akirk
0

Wiele cieni tekstu.
Coś takiego:

var steps = 10,
    i,
    R = 0.6,
    x,
    y,
    theStyle = '1vw 1vw 3vw #005dab';
for (i = -steps; i <= steps; i += 1) {
    x = (i / steps) / 2;
    y = Math.sqrt(Math.pow(R, 2) - Math.pow(x, 2));
    theStyle = theStyle + ',' + x.toString() + 'vw ' + y.toString() + 'vw 0 #005dab';
    theStyle = theStyle + ',' + x.toString() + 'vw -' + y.toString() + 'vw 0 #005dab';
    theStyle = theStyle + ',' + y.toString() + 'vw ' + x.toString() + 'vw 0 #005dab';
    theStyle = theStyle + ',-' + y.toString() + 'vw ' + x.toString() + 'vw 0 #005dab';
}
document.getElementsByTagName("H1")[0].setAttribute("style", "text-shadow:" + theStyle);

Demo: http://jsfiddle.net/punosound/gv6zs58m/

punosound
źródło
0

Text Shadow Generator

Jest tu wiele świetnych odpowiedzi. Wygląda na to, że cień tekstu jest prawdopodobnie najbardziej niezawodnym sposobem na zrobienie tego. Nie będę szczegółowo omawiał, jak to zrobić za pomocą cienia tekstu, ponieważ inni już to zrobili, ale podstawową ideą jest tworzenie wielu cieni tekstu wokół elementu tekstowego. Im większy kontur tekstu, tym więcej cieni potrzebujesz.

Wszystkie przesłane odpowiedzi (od tego postu) dostarczają statycznych rozwiązań dla cienia tekstu. Przyjąłem inne podejście i napisałem ten JSFiddle, który przyjmuje wartości konturu, rozmycia i szerokości jako dane wejściowe i generuje odpowiednią właściwość text-shadow dla twojego elementu. Wystarczy wypełnić puste pola, sprawdzić podgląd i kliknąć, aby skopiować plik css i wkleić go do arkusza stylów.


Niepotrzebny dodatek

Najwyraźniej odpowiedzi zawierające link do JSFiddle nie mogą zostać opublikowane, chyba że zawierają również kod. Możesz całkowicie zignorować ten dodatek, jeśli chcesz. To jest JavaScript z mojego skrzypca, który generuje właściwość text-shadow. Pamiętaj, że nie musisz implementować tego kodu we własnych pracach:

function computeStyle() {
    var width = document.querySelector('#outline-width').value;
  width = (width === '') ? 0 : Number.parseFloat(width);
  var blur = document.querySelector('#outline-blur').value;
  blur = (blur === '') ? 0 : Number.parseFloat(blur);
  var color = document.querySelector('#outline-color').value;
  if (width < 1 || color === '') {
    document.querySelector('.css-property').innerText = '';
    return;
  }
    var style = 'text-shadow: ';
  var indent = false;
    for (var i = -1 * width; i <= width; ++i) {
    for (var j = -1 * width; j <= width; ++j) {
        if (! (i === 0 && j === 0 && blur === 0)) {
        var indentation = (indent) ? '\u00a0\u00a0\u00a0\u00a0' : '';
            style += indentation + i + "px " + j + "px " + blur + "px " + color + ',\n';
        indent = true;
      }
    }
  }
  style = style.substring(0, style.length - 2) + '\n;';
  document.querySelector('.css-property').innerText = style;

  var exampleBackground = document.querySelector('#example-bg');
  var exampleText = document.querySelector('#example-text');
  exampleBackground.style.backgroundColor = getOppositeColor(color);
  exampleText.style.color = getOppositeColor(color);
  var textShadow = style.replace(/text-shadow: /, '').replace(/\n/g, '').replace(/.$/, '').replace(/\u00a0\u00a0\u00a0\u00a0/g, '');
  exampleText.style.textShadow = textShadow;
}
b_laoshi
źródło
-2

Miałem również ten problem i text-shadownie było takiej opcji, ponieważ rogi wyglądałyby źle (chyba że miałbym wiele cieni) i nie chciałem żadnego rozmycia, dlatego moją jedyną opcją było wykonanie następujących czynności: 2 div, a dla div tła, umieść -webkit-text-strokena nim, co następnie pozwala na uzyskanie tak dużego konturu, jak chcesz.

div {
  font-size: 200px;
  position: absolute;
  white-space: nowrap;
}

.front {
 color: blue;
}

.outline {
  -webkit-text-stroke: 30px red;
  user-select: none;
}
<div class="outline">
 outline text
</div>

<div class="front">
 outline text
</div>  

Korzystanie z tego, że udało się osiągnąć wyjście linii, ponieważ stroke-widthmetoda ta nie była opcja, jeśli chcesz, aby Twój tekst pozostać czytelne z bardzo dużym obrysie (bo z stroke-widthzarysem rozpocznie wewnątrz napis, który sprawia, że nie czytelne, gdy szerokość staje się większy niż litery.

Uwaga: powodem, dla którego potrzebowałem tak grubego konturu, było emulowanie etykiet ulicznych na „mapach Google” i chciałem grubego białego aureoli wokół tekstu. To rozwiązanie działało dla mnie idealnie.

Oto skrzypce pokazujące to rozwiązanie

wprowadź opis zdjęcia tutaj

Jared
źródło
-15

Oto plik CSS, mam nadzieję, że dostaniesz to, czego chcesz

/* ----- Logo ----- */

#logo a {
    background-image:url('../images/wflogo.png'); 
    min-height:0;
    height:40px;
    }
* html #logo a {/* IE6 png Support */
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../images/wflogo.png", sizingMethod="crop");
}

/* ----- Backgrounds ----- */
html{
    background-image:none;  background-color:#336699;
}
#logo{
    background-image:none;  background-color:#6699cc;
}
#container, html.embed{
    background-color:#FFFFFF;
}
.safari .wufoo input.file{
    background:none;
    border:none;
}

.wufoo li.focused{
    background-color:#FFF7C0;
}
.wufoo .instruct{
    background-color:#F5F5F5;
}

/* ----- Borders ----- */
#container{
    border:0 solid #cccccc;
}
.wufoo .info, .wufoo .paging-context{
    border-bottom:1px dotted #CCCCCC;
}
.wufoo .section h3, .wufoo .captcha, #payment .paging-context{
    border-top:1px dotted #CCCCCC;
}
.wufoo input.text, .wufoo textarea.textarea{

}
.wufoo .instruct{
    border:1px solid #E6E6E6;
}
.fixed .info{
    border-bottom:none;
}
.wufoo li.section.scrollText{
    border-color:#dedede;
}

/* ----- Typography ----- */
.wufoo .info h2{
    font-size:160%;
    font-family:inherit;
    font-style:normal;
    font-weight:normal;
    color:#000000;
}
.wufoo .info div{
    font-size:95%;
    font-family:inherit;
    font-style:normal;
    font-weight:normal;
    color:#444444;
}
.wufoo .section h3{
    font-size:110%;
    font-family:inherit;
    font-style:normal;
    font-weight:normal;
    color:#000000;
}
.wufoo .section div{
    font-size:85%;
    font-family:inherit;
    font-style:normal;
    font-weight:normal;
    color:#444444;
}

.wufoo label.desc, .wufoo legend.desc{
    font-size:95%;
    font-family:inherit;
    font-style:normal;
    font-weight:bold;
    color:#444444;
}

.wufoo label.choice{
    font-size:100%;
    font-family:inherit;
    font-style:normal;
    font-weight:normal;
    color:#444444;
}
.wufoo input.text, .wufoo textarea.textarea, .wufoo input.file, .wufoo select.select{
    font-style:normal;
    font-weight:normal;
    color:#333333;
    font-size:100%;
}
{* Custom Fonts Break Dropdown Selection in IE *}
.wufoo input.text, .wufoo textarea.textarea, .wufoo input.file{ 
    font-family:inherit;
}


.wufoo li div, .wufoo li span, .wufoo li div label, .wufoo li span label{
    font-family:inherit;
    color:#444444;
}
.safari .wufoo input.file{ /* Webkit */
    font-size:100%;
    font-family:inherit;
    color:#444444;
}
.wufoo .instruct small{
    font-size:80%;
    font-family:inherit;
    font-style:normal;
    font-weight:normal;
    color:#444444;
}

.altInstruct small, li.leftHalf small, li.rightHalf small,
li.leftThird small, li.middleThird small, li.rightThird small,
.iphone small{
    color:#444444 !important;
}

/* ----- Button Styles ----- */

.wufoo input.btTxt{

}

/* ----- Highlight Styles ----- */

.wufoo li.focused label.desc, .wufoo li.focused legend.desc,
.wufoo li.focused div, .wufoo li.focused span, .wufoo li.focused div label, .wufoo li.focused span label,
.safari .wufoo li.focused input.file{ 
    color:#000000;
}

/* ----- Confirmation ----- */

.confirm h2{
    font-family:inherit;
    color:#444444;
}
a.powertiny b, a.powertiny em{
    color:#1a1a1a !important;
}
.embed a.powertiny b, .embed a.powertiny em{
    color:#1a1a1a !important;
}

/* ----- Pagination ----- */

.pgStyle1 var, .pgStyle2 var, .pgStyle2 em, .page1 .pgStyle2 var, .pgStyle1 b, .wufoo .buttons .marker{
    font-family:inherit;
    color:#444444;
}
.pgStyle1 var, .pgStyle2 td{
    border:1px solid #cccccc;
}
.pgStyle1 .done var{
    background:#cccccc;
}

.pgStyle1 .selected var, .pgStyle2 var, .pgStyle2 var em{
    background:#FFF7C0;
    color:#000000;
}
.pgStyle1 .selected var{
    border:1px solid #e6dead;
}


/* Likert Backgrounds */

.likert table{
    background-color:#FFFFFF;
}
.likert thead td, .likert thead th{
    background-color:#e6e6e6;
}
.likert tbody tr.alt td, .likert tbody tr.alt th{
    background-color:#f5f5f5;
}

/* Likert Borders */

.likert table, .likert th, .likert td{
    border-color:#dedede;
}
.likert td{
    border-left:1px solid #cccccc;
}

/* Likert Typography */

.likert caption, .likert thead td, .likert tbody th label{
    color:#444444;
    font-family:inherit;
}
.likert tbody td label{
    color:#575757;
    font-family:inherit;
}
.likert caption, .likert tbody th label{
    font-size:95%;
}

/* Likert Hover */

.likert tbody tr:hover td, .likert tbody tr:hover th, .likert tbody tr:hover label{
    background-color:#FFF7C0;
    color:#000000;
}
.likert tbody tr:hover td{
    border-left:1px solid #ccc69a;
}

/* ----- Running Total ----- */

.wufoo #lola{
    background:#e6e6e6;
}
.wufoo #lola tbody td{
    border-bottom:1px solid #cccccc;
}
.wufoo #lola{
    font-family:inherit;
    color:#444444;
}
.wufoo #lola tfoot th{
    color:#696969;
}

/* ----- Report Styles ----- */

.wufoo .wfo_graph h3{
    font-size:95%;
    font-family:inherit;
    color:#444444;
}
.wfo_txt, .wfo_graph h4{
    color:#444444;
}
.wufoo .footer h4{
    color:#000000;
}
.wufoo .footer span{
    color:#444444;
}

/* ----- Number Widget ----- */

.wfo_number{
    background-color:#f5f5f5;
    border-color:#dedede;
}
.wfo_number strong, .wfo_number em{
    color:#000000;
}

/* ----- Chart Widget Border and Background Colors ----- */

#widget, #widget body{
    background:#FFFFFF;
}
.fcNav a.show{
    background-color:#FFFFFF;
    border-color:#cccccc;
}
.fc table{
    border-left:1px solid #dedede;  
}
.fc thead th, .fc .more th{
    background-color:#dedede !important;
    border-right:1px solid #cccccc !important;
}
.fc tbody td, .fc tbody th, .fc tfoot th, .fc tfoot td{
    background-color:#FFFFFF;
    border-right:1px solid #cccccc;
    border-bottom:1px solid #dedede;
}
.fc tbody tr.alt td, .fc tbody tr.alt th, .fc tbody td.alt{
    background-color:#f5f5f5;
}

/* ----- Chart Widget Typography Colors ----- */

.fc caption, .fcNav, .fcNav a{
    color:#444444;
}
.fc tfoot, 
.fc thead th,
.fc tbody th div, 
.fc tbody td.count, .fc .cards tbody td a, .fc td.percent var,
.fc .timestamp span{
    color:#000000;
}
.fc .indent .count{
    color:#4b4b4b;
}
.fc .cards tbody td a span{
    color:#7d7d7d;
}

/* ----- Chart Widget Hover Colors ----- */

.fc tbody tr:hover td, .fc tbody tr:hover th,
.fc tfoot tr:hover td, .fc tfoot tr:hover th{
    background-color:#FFF7C0;
}
.fc tbody tr:hover th div, .fc tbody tr:hover td, .fc tbody tr:hover var,
.fc tfoot tr:hover th div, .fc tfoot tr:hover td, .fc tfoot tr:hover var{
    color:#000000;
}

/* ----- Payment Summary ----- */

.invoice thead th, 
.invoice tbody th, .invoice tbody td,
.invoice tfoot th,
.invoice .total,
.invoice tfoot .last th, .invoice tfoot .last td,
.invoice tfoot th, .invoice tfoot td{
    border-color:#dedede;
}
.invoice thead th, .wufoo .checkNotice{
    background:#f5f5f5;
}
.invoice th, .invoice td{
    color:#000000;
}
#ppSection, #ccSection{
    border-bottom:1px dotted #CCCCCC;
}
#shipSection, #invoiceSection{
    border-top:1px dotted #CCCCCC;
}

/* Drop Shadows */

/* - - - Local Fonts - - - */

/* - - - Responsive - - - */

@media only screen and (max-width: 480px) {
    html{
        background-color:#FFFFFF;
    }
    a.powertiny b, a.powertin em{
        color:#1a1a1a !important;
    }
}

/* - - - Custom Theme - - - */
użytkownik3131300
źródło
9
Proszę opracować swoje rozwiązanie. Nawet jeśli to działa, nie mamy pojęcia, jak go używać.
Patrick Hofman
3
Mam nadzieję, że właściwe rozwiązania nie będą wymagały 200 linii css.
dardub,
2
Ta odpowiedź nie ma dosłownie żadnego sensu.
superluminarny