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

duvida.

A caixa de texto para por a opção desejada no campo "Outro" não esta sumindo com o código

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

E consequentemente não aparece com o clique

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

PODEM ME AJUDAR?

7 respostas

SEGUE HTML :

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>João da Silva - Contato</title>
    <link rel="icon" href="imagens/favicon.png">
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/site.css">
    <link rel="stylesheet" href="css/bio.css">
    <link rel="stylesheet" href="css/contato.css">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans+Condensed:700">
</head>
<body>
    <main>
        <h1 class="titulo-principal">Contato</h1>
        <div class="container">
            <form>
                <fieldset>
                    <legend>Dados pessoais</legend>
                    <label for="nome">Nome:</label>
                    <input id="nome" type="nome" name="nome-contato" placeholder="seu nome aqui" autofocus pattern="[A-Za-z ']{4,}" title="O nome precisa ter pelo menos 4 caracteres." > 
                    <label for="e-mail">E-mail:</label>
                    <input id="e-mail" type="email" name="email-contato" required placeholder="Digite seu e-mail">
                </fieldset>

             <fieldset>   
                 <legend>Assunto</legend>
                <label>
                    <input type="radio" name="assunto" value="consult">
                    Consultoria
                </label>

                <label>
                    <input type="radio" name="assunto" value="blog">
                    Blog
                </label>

                <label>
                    <input type="radio" name="assunto" value="outro">
                    Outro
                </label>
                 <input type="text" name="outro-assunto">
            </fieldset>

                <label for="msg">Mensagem:</label>
                <textarea id="msg" name="mensagem" cols="30" rows="6" placeholder="Digite aqui sua mensagem" required></textarea>

                <button type="submit">Enviar <strong>para mim</strong></button>
            </form>
        </div>
    </main>
    <img src="imagens/eu.jpg" alt="Minha foto" class="minha-foto">
    <aside class="navegacao-site">
        <h1>João da Silva</h1>
        <nav>
            <ul>
                <li><a href="index.html">Home</a></li>
                <li><a href="portfolio.html">Portfolio</a></li>
                <li><a href="bio.html">Sobre mim</a></li>
                <li><a href="blog.html">Blog</a></li>
                <li><a href="contato.html">Contato</a></li>
            </ul>
        </nav>
        <ul class="icones-redes-sociais">
            <li>
                <a href="https://github.com/joaodasilva" class="github" data-legenda="Veja meus projetos opensource">
                    Github
                </a>
            </li>
            <li>
                <a href="https://twitter.com/joaodasilva" class="twitter" data-legenda="Siga-me no twitter">
                    Twitter
                </a>
            </li>
            <li>
                <a href="https://br.linkedin.com/pub/joão-da-silva/32/4/508" class="linkedin" data-legenda="Veja meu currículo">
                    LinkedIn
                </a>
            </li>
        </ul>
    </aside>
    <footer class="rodape-pagina">
        &copy; João da Silva 2014
    </footer>
</body>
</html>

SEGUE CSS:

body {
    font-family: "Crimson Text", "Times New Roman", serif;
    background-color: #F2FFFC;
    font-size: 120%;
    line-height: 1.5;
}

h1,
h2,
.subtitulo-principal {
    font-family: "Open Sans Condensed", "Arial", sans-serif;
}

h1 {
    text-transform: uppercase;
    font-size: 3em;
    text-shadow: 5px 5px #000;
}

.titulo-principal {
    text-align: center;
    background-color: #851944;
    color: #FFF;
    padding: 2rem;
    border-bottom: .5rem solid #000;
}

.subtitulo-texto {
    font-size: 1.5em;
    clear: both;
}

main a {
    color: #851944;
}

main p {
    text-align: justify;
    margin: 1em 0;
}

.navegacao-site {
    text-align: center;
    background-color: #3C1D3D;
    color: #F2FFFC;
    padding: 1em;
}

.navegacao-site a {
    color: inherit;
    font-family: "Open Sans Condensed", "Arial", sans-serif;
    text-transform: lowercase;
}

.navegacao-site h1 {
    font-size: 1.5em;
    margin-bottom: 1em;
}

.rodape-pagina {
    text-shadow: 2px 2px #000;
    color: #F2FFFC;
    padding: 1em;
    clear: both;
    position: fixed;
    bottom: 0;
    left: 0;
    box-sizing: border-box;
    background-image: radial-gradient( ellipse at left bottom, rgba(60, 29, 61, 0.8), rgba(60, 29, 61, 0.8) 65%, black 65%, black 70%, transparent 70%, transparent );
    width: 100%;
    background-size: 25% 100%;
    background-repeat: no-repeat;
}

.container {
    width: 80ch;
    margin-left: auto;
    margin-right: auto;
    padding: 1.5em 0;
}

strong {
    font-weight: bold;
}

em {
    font-style: italic;
}

.icones-redes-sociais li {
    display: inline-block;
}

.icones-redes-sociais a {
    width: 40px;
    height: 40px;
    display: block;
    text-indent: -99999px;
    position: relative;
}

.icones-redes-sociais a:hover::after,
.icones-redes-sociais a:focus::after {
    content: attr(data-legenda);
    position: absolute;
    top: 100%;
    right: 0;
    text-indent: 0;
    width: 300%;
    background: black;
    font-size: .75em;
}
.icones-redes-sociais a:hover::before,
.icones-redes-sociais a:focus::before {
    content: '';
    width: 1em;
    height: 1em;
    background-color: black;
    position: absolute;
    bottom: 0;
    left: 0;
    transform: translateY(.5em) rotate(45deg);
}
.github {
    background-image: url(../imagens/github.png);
}

.twitter {
    background-image: url(../imagens/twitter.png);
}

.linkedin {
    background-image: url(../imagens/linkedin.png);
}

main {
    width: 80%;
    float: left;
    padding-bottom: 4em;
}

.minha-foto,
.navegacao-site {
    border-left: .5em solid black;
    border-bottom: .5em solid black;
    box-sizing: border-box;
}

.navegacao-site {
    width: 20%;
    float: right;
    position: relative;
    top: 300px;
}

.minha-foto {
    position: absolute;
    top: 0;
    right: 0;
    height: 300px;
}

main a:hover,
main a:focus,
footer a:hover,
footer a:focus {
    color:red;
}

.navegacao-site a:hover,
.navegacao-site a:focus {
    text-shadow: 0 0 5px red;
}

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

label[for] {
    display: block;
}

input[type="text"],
input[type="nome"],
input[type="email"],
textarea {
    font-family: inherit;
    font-size: 100%;
    padding: .25em .5em;
    width: 100%;
    box-sizing: border-box;
    border: 1px solid #CCC;
}

button{
    border: 0;
    .5em 1em;
    font-family: "Open Sans Condensed", sans-serif;
    background-color: #3C1D3D;
    color: white;
    font-size: 1.2em;
    margin-left: auto;
    margin-top: 1em;
    display: block;
}
input:invalid {
    box-shadow: 0 0 3px red;
} 
input:focus,
textarea:focus {
    background-color: #FFD;
}

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

fieldset > fieldset {
    display: inline;
}

label[for="outro"] {
    display: inline;
}

input[name="outro-assunto"] {
    width: auto;
}

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

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

Oi Lurian tudo bem?

Isso acontecia porque o input do texto do outros não estava como irmão na hierarquia do HTML. E o value do input do radio Outros estava em mínuscula "outros"

Para funcionar coloque assim os dois dentro da label.


<label>
    <input type="radio" name="assunto" value="Outro">                  Outro
    <input type="text" name="outro-assunto"
</label>

Espero ter ajudado!!!!

Obrigada André, resolvi parcialmente... Mas outro problema: quando clico no campo "outros" ele abre a janela para digitar antes da palavra "outros" e depois da bolinha que seleciona a opção, ou seja, a caixa fica no meio (entre a bolinha que seleciono e a palavra "outros") :/ É assim mesmo? me pareceu estranho :S

E se não for abusar muito, poderia me ajudar com outra dúvida? :)

Esse código:

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

é para aparecer uma leve borda vermelha quando algo escrito em um dos campos for invalido, porém depois que recarreguei a página o campo do e-mail fica SEMPRE com essa borda (eu digitando algo ou não, ele permanece com a borda vermelha) Qual seria o possível problema?

solução!

Colocando assim

<label>
    <input type="radio" name="assunto" value="Outro">  
    Outro                  
    <input type="text" name="outro-assunto"</label>
</label>

o outro fica entre o radio e o input outro-assunto que é o lugar ideal dele.

A borda vermelha do campo do e-mail fica vermelha porque é um campo required ou seja ele é obrigatório. Enquanto não preencherem com um e-mail ele irá ficar com a borda vermelha. É o comportamento normal dele.

Obrigada!!!