Como estilizar a entrada e enviar o botão com CSS?

146

Estou aprendendo CSS. Como estilizar a entrada e enviar o botão com CSS?

Estou tentando criar algo assim, mas não tenho ideia de como fazer

<form action="#" method="post">
    Name <input type="text" placeholder="First name"/>
    <input type="text" placeholder="Last name"/>
    Email <input type="text"/>
    Message <input type="textarea"/>
    <input type="submit" value="Send"/>
</form>

insira a descrição da imagem aqui

user2307683
fonte
8
Você pode estilizá-lo como qualquer outro elemento
Explosion Pills
6
É importante observar que você não pode estilizá-lo como faria com qualquer outro elemento. <input>tags não suportam coisas como ::after.
21817 JamEngulfer
2
Corrigir. Por isso acho que é preferível usar <button type="submit"><span>Send</span></button>. Você pode então usar ::aftera spanetiqueta -t.
precisa saber é

Respostas:

215

http://jsfiddle.net/vfUvZ/

Aqui está um ponto de partida

CSS:

input[type=text] {
    padding:5px; 
    border:2px solid #ccc; 
    -webkit-border-radius: 5px;
    border-radius: 5px;
}

input[type=text]:focus {
    border-color:#333;
}

input[type=submit] {
    padding:5px 15px; 
    background:#ccc; 
    border:0 none;
    cursor:pointer;
    -webkit-border-radius: 5px;
    border-radius: 5px; 
}
Nick R
fonte
67

Simplesmente estilize seu botão Enviar, como qualquer outro elemento html. você pode direcionar diferentes tipos de elementos de entrada usando seletor de atributos CSS

Como exemplo, você poderia escrever

input[type=text] {
   /*your styles here.....*/
}
input[type=submit] {
   /*your styles here.....*/
}
textarea{
   /*your styles here.....*/
}

Combinar com outros seletores

input[type=text]:hover {
   /*your styles here.....*/
}
input[type=submit] > p {
   /*your styles here.....*/
}
....

Aqui está um exemplo de trabalho

Funcionou ontem.
fonte
25

HTML

<input type="submit" name="submit" value="Send" id="submit" />

CSS

#submit {
 color: #fff;
 font-size: 0;
 width: 135px;
 height: 60px;
 border: none;
 margin: 0;
 padding: 0;
 background: #0c0 url(image) 0 0 no-repeat; 
}
Jayram
fonte
17

Eu sugeriria em vez de usar

<input type='submit'>

usar

<button type='submit'>

O Button foi introduzido especificamente tendo em mente o estilo CSS. Agora você pode adicionar a imagem de fundo gradiente a ela ou estilizá-la usando gradientes CSS3.

Leia mais sobre a estrutura de formulários HTML5 aqui

http://www.w3.org/TR/2011/WD-html5-20110525/forms.html

Felicidades! .Pav

Pav
fonte
1
Este foi muito útil, como Safari para iOS aplica corretamente o meu estilo de botões, mas não para <input type = "submit"> :)
CrushedPixel
Mas então você não pode especificar o valor como o texto no botão, em vez como o texto entre o botão marcas <button> texto </ button>
Uzebeckatrente
4

Por questões de confiabilidade, sugiro dar nomes de classe ou ids aos elementos a serem estilizados (idealmente a classpara as entradas de texto, já que provavelmente haverá várias) e um idpara o botão enviar (embora a classfuncione também):

<form action="#" method="post">
    <label for="text1">Text 1</label>
    <input type="text" class="textInput" id="text1" />
    <label for="text2">Text 2</label>
    <input type="text" class="textInput" id="text2" />
    <input id="submitBtn" type="submit" />
</form>

Com o CSS:

.textInput {
    /* styles the text input elements with this class */
}

#submitBtn {
    /* styles the submit button */
}

Para navegadores mais atualizados, é possível selecionar por atributos (usando o mesmo HTML):

.input {
    /* styles all input elements */
}

.input[type="text"] {
     /* styles all inputs with type 'text' */
}

.input[type="submit"] {
     /* styles all inputs with type 'submit' */
}

Você também pode usar combinadores de irmãos (já que as entradas de texto para estilo parecem sempre seguir um labelelemento, e o envio segue uma área de texto (mas isso é bastante frágil)):

label + input,
label + textarea {
    /* styles input, and textarea, elements that follow a label */
}

input + input,
textarea + input {
    /* would style the submit-button in the above HTML */
}
David diz para restabelecer Monica
fonte
4

A interface do usuário do elemento de formulário é um pouco controlada pelo navegador e pelo sistema operacional, portanto, não é trivial estilizá-los com muita confiabilidade, de maneira que pareçam iguais em todas as combinações comuns de navegador / SO.

Em vez disso, se você quiser algo específico, recomendo usar uma biblioteca que forneça elementos de formulário com estilo. uniform.js é uma dessas bibliotecas.

eis
fonte
@BalinKingOfMoria parece que sim. Eu atualizei o link.
EIS
1

Ao estilizar um tipo de entrada enviado, use o código a seguir.

   input[type=submit] {
    background-color: pink; //Example stlying
    }
JacobG182
fonte
1

Na verdade, isso também funciona muito bem.

input[type=submit]{
                 width: 15px;
                 position: absolute;
                 right: 20px;
                 bottom: 20px;
                 background: #09c;
                 color: #fff;
                 font-family: tahoma,geneva,algerian;
                 height: 30px;
                 -webkit-border-radius: 15px;
                 -moz-border-radius: 15px;
                 border-radius: 15px;
                 border: 1px solid #999;
             }
Mpairwe Humphrey
fonte
Isto é completamente horrível
Ratbert
1

Fiz dessa maneira com base nas respostas dadas aqui, espero que ajude

.likeLink {
    background: none !important;
    color: #3387c4;
    border: none;
    padding: 0 !important;
    font: inherit;
    cursor: pointer;
}
    .likeLink:hover {
        background: none !important;
        color: #25618c;
        border: none;
        padding: 0 !important;
        font: inherit;
        cursor: pointer;
        text-decoration: underline;
    }
Danilo Venegas
fonte
0

HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>CSS3 Button</title>
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<div id="container">
<a href="#" class="btn">Push</a>
</div>
</body>
</html>

Estilo CSS

a.btn {
display: block; width: 250px; height: 60px; padding: 40px 0 0 0; margin: 0 auto;

background: #398525; /* old browsers */
background: -moz-linear-gradient(top, #8DD297 0%, #398525 100%); /* firefox */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#8DD297), color-stop(100%,#398525)); /* webkit */

box-shadow: inset 0px 0px 6px #fff;
-webkit-box-shadow: inset 0px 0px 6px #fff;
border: 1px solid #5ea617;
border-radius: 10px;
}
karthi
fonte
2
Como usar isso como uma entrada de envio?
user2307683
0

Muito simples:

<html>
<head>
<head>
<style type="text/css">
.buttonstyle 
{ 
background: black; 
background-position: 0px -401px; 
border: solid 1px #000000; 
color: #ffffff;
height: 21px;
margin-top: -1px;
padding-bottom: 2px;
}
.buttonstyle:hover {background: white;background-position: 0px -501px;color: #000000; }
</style>
</head>
<body>
<form>
<input class="buttonstyle" type="submit" name="submit" Value="Add Items"/>
</form>
</body>
</html>

Isso está funcionando, eu testei.

Saikat Chakraborty
fonte