Efeito de estrutura de tópicos no texto

329

Existe alguma maneira no CSS de dar contornos ao texto com cores diferentes? Quero destacar algumas partes do meu texto para torná-lo mais intuitivo - como nomes, links, etc. Alterar as cores do link etc. é comum hoje em dia, por isso quero algo novo.

Mac
fonte
17
@ Dan Melhor implica diferente. Seu conselho geralmente é bom, mas também pode sufocar as experiências criativas. Além disso, geralmente não é "comum = bom" ... ao contrário, é "comum = apenas bom o suficiente".
Konrad Rudolph
7
@ Dan Grossman: o mundo evolui de novas idéias, nem tudo de novo é desprezível.
yoda
7
@yoda Sua sintaxe é incomum. / EDIT não importa, confundi-lo com outra pessoa ... pequeno cara verde.
Konrad Rudolph
Você pode descrever o que precisa com mais detalhes. Eu não sei exatamente o que você quer dizer quando diz que pretende 'dar contornos de texto com cores diferentes'
Yi Jiang
1
possível duplicata da borda da fonte CSS?
Adam Jensen

Respostas:

453

Existe uma propriedade experimental de webkit chamada text-strokeCSS3, estou tentando fazer com que isso funcione há algum tempo, mas até agora não obtive êxito.

O que fiz foi usar a text-shadowpropriedade já suportada (acredito que no Chrome, Firefox, Opera e IE 9).

Use quatro sombras para simular um texto traçado:

.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>

Eu fiz uma demo para você aqui

E um exemplo pairado está disponível aqui


Como Jason C mencionou nos comentários, a text-shadowpropriedade CSS agora é suportada por todos os principais navegadores, com exceção do Opera Mini. Onde esta solução funcionará para compatibilidade com versões anteriores (não é realmente um problema em navegadores que atualizam automaticamente), acredito que o text-strokeCSS deve ser usado.

Kyle
fonte
12
Infelizmente, o IE não suporta text-shadowaté o IE10. Curiosamente, o IE9 suporta, box-shadowmas não text-shadow.
Web_Designer 27/11
14
Aqui está um resumo do suporte ao navegador paratext-shadow . Parece que atualmente (três anos após a publicação desta resposta) ela é suportada por todos os principais navegadores, com exceção do Opera Mini, que mostra "suporte parcial" (ignora blur-radius).
Jason C
3
Isso adiciona um efeito mais fino:text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
BeauCielBleu 5/09
29
Nome da classe impressionante
citizen conn
4
Jason C apontou text-shadowapoio, não text-stroke. Que é suportado apenas pelo webkit no momento.
Gregoire D.
100

Editar: text-stroke agora está bastante maduro e implementado na maioria dos navegadores . É mais fácil, mais nítido e mais preciso. Se o público do seu navegador puder suportá-lo, agora você deve usar text-strokeprimeiro, e não text-shadow.


Você pode e deve fazer isso apenas com o text-shadowefeito, sem compensações:

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

Por quê? Ao compensar vários efeitos de sombra, você começará a notar cantos desajeitados e irregulares: As compensações do efeito de sombra resultam em cantos irregulares perceptíveis.


ter efeitos de sombra de texto em apenas uma posição elimina as compensações, o que significa que se você sentir que é muito fino e preferir um contorno mais escuro, não há problema - você pode repetir o mesmo efeito (mantendo a mesma posição e desfoque), várias vezes. Igual a:

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;

Aqui está uma amostra de apenas um efeito (em cima) e o mesmo efeito repetido 14 vezes (em baixo):


Exemplo de texto renderizado com sombra de texto

Observe também: como as linhas ficam muito finas, é uma boa idéia desativar a renderização sub-pixel usando
-webkit-font-smoothing: antialiased.

ancestral
fonte
Resposta interessante, obrigado. Eu realmente não entendo o que você quer dizer com 'repetir' o efeito.
edzillion
Obrigado pela font-smoothingopção, melhorou bastante a saída no chrome!
Meki
1
Observo o comentário adicionado à resposta de que o traçado de texto agora é suportado na maioria dos navegadores, mas o caniuse ainda é (agosto de 2016) mostrando-o como não suportado em todas as versões do IE e Edge, e precisando de -webkit-text-stroke com o layout O sinalizador .css.prefixes.webkit ativado no Firefox. Acho que o suporte não é amplo o suficiente para sites públicos em geral.
Nick Rice,
1
Penso que repetir 14 vezes uma sombra de texto pode ter algum problema de desempenho. Especialmente ao rolar no celular.
kaosmos
2
AFAIK text-strokenão é o mesmo que o esboço via text-shadow. text-strokenão tem opção para fazer com que o contorno apareça fora do texto, o que significa que o contorno sangra no texto, fazendo com que pareça realmente horrível. Em outras palavras text-strokenão é um substituto para text-shadowa contornos
gman
90

Fácil! SVG para o resgate.

Este é um método simplificado:

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>

Aqui está uma demonstração mais complexa .

vsync
fonte
6
Esta é uma ótima solução e não possui nenhum dos problemas de desempenho associados à sombra de texto. A diferença de desempenho entre essa abordagem e o empilhamento de várias sombras de texto é enorme para meu aplicativo em particular (IE 10 em telas grandes).
djskinner
3
Isso me deu um efeito muito melhor do que sombras de texto, porque eu precisava de uma linha grossa. Obrigado!
Andrea
2
Isso é puro ouro cara !! Abordagem muito profissional e habilidosa, perfeita respondeu à pergunta! Esta solução está à frente do Conselho W3 ou Google ou o que quer, parabéns!
Heitor
Esta solução teria sido perfeito para mim também se não tem adicionar o curso a um textarea :(
Brandito
36

Você pode tentar empilhar várias sombras manchadas até que as sombras pareçam um traço, assim:

.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;
}

Aqui está um violino: http://jsfiddle.net/GGUYY/

Mencionei isso apenas no caso de alguém estar interessado, embora eu não a chamasse de solução porque falha de várias maneiras:

  • não funciona no IE antigo
  • é renderizado de maneira bastante diferente em todos os navegadores
  • aplicar tantas sombras é muito pesado para processar: S
brohr
fonte
1
Esta é realmente uma idéia simples e brilhante!
1
Graças, o problema com isto é desempenho, porém, uso com cuidado :)
brohr
1
Isto é fantástico. As camadas extras de sombreamento realmente adicionar alguma profundidade a ele, e ele funciona no IE11, FF36, e Chrome 41.
RockiesMagicNumber
17

Eu estava procurando uma solução de traçado de texto entre navegadores que funcionasse quando sobreposta em imagens de fundo. acho que tenho uma solução para isso que não envolve marcação extra, js e funciona no IE7-9 (não testei 6) e não causa problemas de alias.

Essa é uma combinação do uso da sombra de texto CSS3, que possui um bom suporte, exceto o IE ( http://caniuse.com/#search=text-shadow ), e o uso de uma combinação de filtros para o IE. O suporte a traços de texto CSS3 é ruim no momento.

Filtros IE

O filtro de brilho ( http://www.impressivewebs.com/css3-text-shadow-ie/ ) parece terrível, então eu não o usei.

A resposta de David Hewitt envolveu a adição de filtros dropshadow em uma combinação de direções. Infelizmente, o ClearType é removido e, portanto, acabamos com um texto com alias.

Em seguida, combinei alguns dos elementos sugeridos no useragentman com os filtros dropshadow.

Juntar as peças

Este exemplo seria texto em preto com um traço branco. Estou usando classes html condicionais a propósito de segmentar o 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
fonte
Isso também funciona no IE antigo:filter: glow(color=white,strength=1);
mch 14/11
16

Apenas adicionando esta resposta. "Acariciar" o texto não é o mesmo que "Descrever"

Esboçar parece ótimo. Acariciar parece horrível.

A solução SVG listada em outro lugar tem o mesmo problema. Você quer um esboço, precisa colocar o texto duas vezes. Uma vez acariciou e novamente não acariciou.

Acariciar NÃO É Delinear

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: Adoraria saber como tornar o SVG o tamanho correto de qualquer texto arbitrário. Eu sinto que é bastante complicado envolver a geração do svg, consultá-lo com javascript para obter as extensões e aplicar os resultados. Se houver uma maneira não-js mais fácil, eu adoraria saber.

gman
fonte
1
Excelente, este é o método correto, descrevendo, não acariciando. Funciona lindamente e é limpo e fácil para os olhos.
MitchellK
7

Obtive melhores resultados com 6 sombras diferentes:

.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
fonte
Eu queria uma sombra maior, e teve que adicionar um par de linhas extras .... 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
fonte
6

Essa mixagem para o SASS fornecerá resultados suaves, usando 8 eixos:

@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;
}

E CSS normal:

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
fonte
4

Trabalhar com traços mais espessos fica um pouco confuso, se você tem o prazer de experimentar essa mistura, não é perfeito e, dependendo do peso do traço, gera uma boa quantidade de 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
fonte
1
Este mixin não funcionou para mim, mas este funcionou: gist.github.com/nathggns/2984123
akirk
0

Múltiplas sombras de texto ..
Algo assim:

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);

Demonstração: http://jsfiddle.net/punosound/gv6zs58m/

punosound
fonte
0

Gerador de sombra de texto

Há muitas ótimas respostas aqui. Parece que a sombra do texto é provavelmente a maneira mais confiável de fazer isso. Não entrarei em detalhes sobre como fazer isso com sombra de texto, já que outras pessoas já fizeram isso, mas a idéia básica é que você crie várias sombras de texto em torno do elemento de texto. Quanto maior o contorno do texto, mais sombras serão necessárias.

Todas as respostas enviadas (a partir desta postagem) fornecem soluções estáticas para a sombra do texto. Adotei uma abordagem diferente e escrevi esse JSFiddle que aceita valores de cor, desfoque e largura do contorno como entradas e gera a propriedade de sombra de texto apropriada para o seu elemento. Basta preencher os espaços em branco, verificar a visualização e clicar para copiar o css e colá-lo em sua folha de estilo.


Apêndice desnecessário

Aparentemente, respostas que incluem um link para um JSFiddle não podem ser postadas, a menos que também contenham código. Você pode ignorar completamente este apêndice, se desejar. Este é o JavaScript do meu violino que gera a propriedade de sombra de texto. Observe que você não precisa implementar esse código em seus próprios trabalhos:

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
fonte
-2

Eu também tinha esse problema, e text-shadownão era uma opção porque os cantos ficariam ruins (a menos que eu tivesse muitas sombras) e não quisesse desfoque, portanto, minha única outra opção era fazer o seguinte: 2 divs e, para a div de fundo, coloque uma -webkit-text-strokesobre ela, que permite o contorno maior que você desejar.

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>  

Usando isso, consegui obter uma linha de saída , porque o stroke-widthmétodo não era uma opção se você deseja que seu texto permaneça legível com um contorno muito grande (porque stroke-widtho contorno começará dentro das letras, o que não torna legível quando a largura fica maior que as letras.

Nota: a razão pela qual eu precisava de um esboço gordo era emular os rótulos das ruas no "google maps" e queria uma auréola branca e gorda em torno do texto. Esta solução funcionou perfeitamente para mim.

Aqui está um violino mostrando esta solução

insira a descrição da imagem aqui

Jared
fonte
-15

Aqui está o arquivo CSS, espero que você obtenha o que deseja

/* ----- 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 - - - */
user3131300
fonte
9
Por favor, elabore sua solução. Mesmo que funcione, não temos idéia de como usá-lo.
Patrick Hofman 30/01
3
Espero que as soluções corretas não precisem receber 200 linhas de css.
dardub
2
Esta resposta não faz literalmente nenhum sentido.
superluminario 10/05