Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

erro no aparecimento dos icones

Icones não aparecem.

https://postimg.org/image/re3s0mbr9/

<!DOCTYPE html>
<html lang="pt">
    <head>
    </head>
    <body>
        <main>
            <h1 class="titulo-principal">Contato</h1>
            <div  class="container">
                <form>
                    <fieldset>
                        <legend>Seus Dados</legend>
                        <label class="com-icone" for="nome-contato">Nome <input type="text" name="nome-contato" required autofocus pattern="[A-Za-z0-9 ']{4,}" title="O nome precisa ter 4 letras"></label>
                        <label class="com-icone" for="email-contato">E-mail <input type="email" name="email-contato" required placeholder="Digite seu e-mail"></label>
                    </fieldset>
                    <fieldset>
                        <legend>Assunto</legend>
                        <label><input type="radio" name="assunto" value="Consultoria">Consultoria</label>
                        <label><input type="radio" name ="assunto"value="Blog">Blog</label>
                        <fieldset>
                            <input type="radio" name="assunto" value="Outro" id="outro">
                            <label for="outro">Outro</label>
                            <input type="text" name="outro-assunto">
                        </fieldset>
                        <label for="mensagem">Mensagem <textarea name="msg" id="mensagem" cols="60" rows="10" placeholder="Digite aqui sua mensagem"></textarea></label>
                        <button type="submit">Enviar mensagem</button>
                    </fieldset>
                </form>
            </div>    
        </main>
        <img src="img/eu.jpg" alt="Minha Foto" class="minha-foto">
        <aside class="navegacao-site">
        </aside>
        <footer class="rodape-pagina">
            &copy; Joao da Silva 2014
        </footer>
    </body>
</html>

CSS:

legend, label[for="mensagem"] {
    font-weight: bold;
    margin-top: 1em;    
}

label[for] {
    display: block;
}

input[type="text"],
input[type="email"],
textarea {
    /* Força o navegador a usar a mesma fonte da página */
    font-family: inherit;
    /* Inclusive o tamanho dela */
    font-size: 100%;
    padding: .25em 5.em;
    width: 100%;
    box-sizing: border-box;
    border: 1px solid #CCC;
}

/* alguns ajustes para o campo "Outro": deixar ele na mesma linha */
fieldset > fieldset {
    display: inline;
}

/* deixar o rótulo dele inline de novo */
label[for="outro"] {
    display: inline;
}

/* deixar só esse campo sem ocupar a tela toda */
input[name="outro-assunto"] {
    width: auto;
}

input:focus,
textarea:focus {
    background-color: #FFD;
}

input:invalid {
    box-shadow: 0 0 3px;
}

button {
    /* Precisamos tirar a borda que o navegador coloca por padrão */
    border: 0;
    padding: .5em 1em;
    font-family: "Open Sans Condensed", sans-serif;
    background-color: #3C1D3D;
    color: white;
    font-size: 1.2em;
    /* Faz com que o botão apareça na direita */
    margin-left: auto;
    margin-top: 1em;  
    display: block;
}

button:hover,
button:focus {
    background-color: #8C1D3D;
}

input[value="Outro"] ~ input {
    display: none;
}

input[value="Outro"]:checked ~ input {
    display: inline;
}

.com-icone::after {
    content: "";
    width: 2em;
    height: 2em;
    background-color: #8C1D3D;
    background-size: 50% 50%; /* para a imagem ter 1em x 1em */
    background-position: center;
    background-repeat: no-repeat;
    position: absolute;
    top: 100%;
    left: 0;
}

.com-icone {
    position: relative;
}

.com-icone + input {
    position: relative;
    top: 2em;
    width: calc(100% - 2em);
}

.com-icone[for="nome"]::after {
    background-image: url(../img/usuario.png);
}

.com-icone[for="email"]::after {
    background-image: url(../img/email.png);
}
8 respostas
solução!

Geovane,

você precisa colocar no nome certo no for=, na Tag Html você colocou como for="nome-contato" e no seletor do css está como for="nome"

segue abaixo a correção do css:

.com-icone[for="nome-contato"]::after {
    background-image: url(../img/usuario.png);
}

.com-icone[for="email-contato"]::after {
    background-image: url(../img/email.png);
}

Hum, obrigado. Mas como faço para posicioná-los corretamente?

Manda o print atualizado.

ta exatamente igual ao outro, só que agora aparece as imagens.

Geovane,

você consegue posicionar com top, left, right e bottom., no seletor.com-icone[for="nome-contato"]::aftere .com-icone[for="email-contato"]::after , lembrando que você já colocouposition: absolute; no seletor .com-icone::after {

A posição exata depende do que você quer.

eu apenas segui as instruções da aula.

@Geovane,

vou sugerir que de uma olhadinha na aula 11 do curso de HTML5 e CSS3 I, lá está bem explicado o funcionamento do position e dos top, bottom, left e right, acho mais importante entender e aprofundar em cada ensinamento dessas aulas do que apenas seguir o passo a passo.

Segue o link abaixo : https://cursos.alura.com.br/course/introducao-html-css/task/5456

Bom estudo!

Valeu! Vou fazer isso. Mas acabei de descobrir que front end não é tão legal quanto parece.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software