Jak stylizować wejście i przycisk przesyłania za pomocą CSS?

146

Uczę się CSS. Jak stylizować wejście i przycisk przesyłania za pomocą CSS?

Próbuję stworzyć coś takiego, ale nie mam pojęcia, jak to zrobić

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

wprowadź opis obrazu tutaj

user2307683
źródło
8
Możesz stylizować go tak, jak każdy inny element
Explosion Pills,
6
Należy pamiętać, że nie można stylizować go tak, jak każdego innego elementu. <input>tagi nie obsługują takich rzeczy jak ::after.
JamEngulfer
3
Poprawny. Dlatego uważam, że lepiej jest użyć <button type="submit"><span>Send</span></button>. Możesz następnie użyć ::afterna span-tagu.
kunambi

Odpowiedzi:

215

http://jsfiddle.net/vfUvZ/

Oto punkt wyjścia

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.
źródło
67

Po prostu stylizuj przycisk Prześlij tak, jak chcesz stylizować każdy inny element HTML. możesz kierować reklamy na różne typy elementów wejściowych za pomocą selektora atrybutów CSS

Jako przykład możesz napisać

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

Połącz z innymi selektorami

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

Oto działający przykład

Wczoraj zadziałało.
źródło
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
źródło
17

Sugerowałbym zamiast używać

<input type='submit'>

posługiwać się

<button type='submit'>

Button został wprowadzony specjalnie z myślą o stylach CSS. Możesz teraz dodać do niego gradientowy obraz tła lub stylizować go za pomocą gradientów CSS3.

Przeczytaj więcej o strukturze formularzy HTML5 tutaj

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

Twoje zdrowie! .Pav

Pav
źródło
1
Było to bardzo pomocne, ponieważ Safari na iOS poprawnie stosuje mój styl do przycisków, ale nie do <input type = "submit"> :)
CrushedPixel
Ale wtedy nie możesz określić wartości jako tekstu na przycisku, a raczej jako tekstu między tagami przycisku <button> TEXT </button>
Uzebeckatrente
4

Aby idzapewnić niezawodność, sugerowałbym nadanie nazw klas lub s elementom do stylizacji (najlepiej a classdla danych wejściowych, ponieważ prawdopodobnie będzie ich kilka) oraz idprzycisku przesyłania (chociaż a również classby działał):

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

Dzięki CSS:

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

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

W przypadku bardziej aktualnych przeglądarek możesz wybierać według atrybutów (używając tego samego kodu HTML):

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

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

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

Możesz także po prostu użyć kombinatorów rodzeństwa (ponieważ tekst wprowadzany do stylu wydaje się zawsze następować po labelelemencie, a przesyłanie podąża za obszarem tekstu (ale jest to raczej kruche)):

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 mówi, że przywróć Monikę
źródło
4

Form element UI jest w pewnym stopniu kontrolowany przez przeglądarkę i system operacyjny, więc nie jest rzeczą trywialną nadanie im stylu w taki sposób, aby wyglądał tak samo we wszystkich typowych kombinacjach przeglądarka / system operacyjny.

Zamiast tego, jeśli chcesz czegoś konkretnego, zalecałbym skorzystanie z biblioteki, która udostępnia elementy formularza do stylizacji. uniform.js jest jedną z takich bibliotek.

eis
źródło
@BalinKingOfMoria wygląda tak. Zaktualizowałem link.
eis
1

Podczas określania stylu przesyłania typu danych wejściowych użyj następującego kodu.

   input[type=submit] {
    background-color: pink; //Example stlying
    }
JacobG182
źródło
1

Właściwie to też działa świetnie.

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
źródło
To jest całkowicie okropne
Ratbert
1

Zrobiłem to w ten sposób na podstawie udzielonych tutaj odpowiedzi, mam nadzieję, że to pomoże

.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
źródło
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>

Styl 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
źródło
2
Jak używać tego jako danych wejściowych przesyłania?
user2307683
0

Bardzo prosty:

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

To działa, które przetestowałem.

Saikat Chakraborty
źródło