CSS3 Buttons erstellen

Neue Technologien zu erlernen ist für Webdesigner sehr wichtig. Da wir bei kreativr auch stets mit den neuesten Standards arbeiten, möchten wir euch hier zeigen wie man einen hochwertigen CSS3 Button erstellt – ganz ohne Grafiken. Das Ziel:

CSS3 Button

Mein Button

Das Markup

Wir beginnen zunächst mit einem simplen Markup. Dazu benutzen wir hier einen Anker, dem wir die Klasse class="custom_btn" geben. Unser Ziel ist es aber eine allgemeine Klasse zu definieren, die wir später für alle Buttons wie <submit>, <button> oder <div> benutzen können.

<a class="custom_btn" href="#">Login</a>

Basic-Styles

Nun fügen wir paar grundlegende Styles zur Klasse hinzu, damit unser Link wie ein Button ausschaut. Dazu definieren wir zunächst background-color, border, display und für eine bessere Typo font.

background-color: #ccc;
border: 2px solid #aaa;
color: #111;
font: bold 1em/1.4em Helvetica, Geneva, Arial,  sans-serif;
padding: 6px 10px;
text-align: center;

CSS3 – Radien

Bislang sehen die Buttons aber noch furchtbar aus. Deswegen wollen wir dem Ganzen ein zeitgemäßes Erscheinungsbild mit CSS3 geben. Dazu runden wir die Ecken ab. Das können wir einfach mit -moz-border-radius/-webkit-border-radius/-border-radius machen.
Syntax:

-moz-border-radius: <größe>; /* Für Mozilla-Browser wie Firefox */
-webkit-border-radius: <größe>; /* Für Webkit-Browser wie Chrome oder Safari */
border-radius: <größe>; /* Für Browser wie IE9 oder Opera*/

Wir benutzen als Radius 10px.

-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;

Das sieht dann so aus:

Abgerundete Ecken

Login

CSS3 – Verläufe

Danach fügen wir dem Hintergrund einen linearen Verlauf hinzu. Das machen wir über sogenannten CSS3 Gradients. Hier stehen uns -moz-linear-gradient/-webkit-gradient zur Verfügung, die wir für die Eigenschaft background-image als Wert eintragen.
Syntax:

-moz-linear-gradient([<stelle>||<winkel>,]? <stop>, <stop> [, <stop>]*) /* Firefox */
-webkit-gradient(<typ>, <stelle> [,<radius>]?, <stelle> [,<radius>]? [,stop ]*) /* Chrome, Safari */

Wir nehmen einen linearen Verlauf von #ccc nach #e6e6e6.

background-image: -moz-linear-gradient(0% 100% 90deg,#CCCCCC, #E6E6E6);
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#E6E6E6), to(#CCCCCC));

Unser Button mit Verlauf:

Verlauf

Login

CSS3 – Box Shadow

Um (innere) Schatten zu generieren benutzen wir die CSS3 Eigenschaft -moz-box-shadow/-webkit-box-shadow/box-shadow.
Syntax:

-moz-box-shadow: <x_versatz> <y_versatz> <blur_radius> <color> /* Firefox */
-webkit-box-shadow: <x_versatz> <y_versatz> <blur_radius> <color> /* Safari, Chrome */
box-shadow: <x_versatz> <y_versatz> <blur_radius> <color>  /* IE9+ */

Die box-shadow Eigenschaft kann überlagert werden, indem man eine weitere Anweisung durch ein Komma anhängt. Mit inset kann der Schatten nach innen gerichtet werden. Somit entstehen ganz einfach Inner Shadows die wir aus Photoshop etc. kennen.

-moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2),
0 -1px 1px rgba(255, 255, 255, 0.4) inset,
0 1px 1px rgba(255, 255, 255, 0.9) inset;
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2),
0 -1px 1px rgba(255, 255, 255, 0.4) inset,
0 1px 1px rgba(255, 255, 255, 0.9) inset;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.2),
0 -1px 1px rgba(255, 255, 255, 0.4) inset,
0 1px 1px rgba(255, 255, 255, 0.9) inset;

Schatten

Login

CSS3 – Text Shadow

Jetzt widmen wir uns der Typo und geben der Schrift einen Schlagschatten. Die CSS3 Eigenschaft hierfür ist text-shadow.
Syntax:

text-shadow: <x_versatz> <y_versatz> <blur_radius> <color>;

Wir wollen unserer Typo einen weißen senkrechten Schlagschatten geben. Dazu müssen wir nur den y-Versatz um 1px versetzen und für color #fff angeben.

text-shadow: 0 1px 0 #fff;

Die Typo ändert sich:

text-shadow: 0 1px 0 #fff;

Login

Usability

Um die Benutzerfreundlichkeit des Buttons zu steigern, können wir diesem statischen Button über die Pseudo-Klassen :hover und :active dem Nutzer eine Rückkoppelung geben lassen.
Der fertige Button sieht dann wie folgt aus:

Hover mich:

Login

Browser Unterstützung

Hier könnt ihr nachschauen, welche CSS3 Eigenschaften von welchen Browsern unterstützt werden.

Firefox Safari Chrome IE
Radien 3.0+ 3.2+ 3.0+ 9.0+
Verläufe 3.6+ 4.0+ 5.0+ noch nicht
Box Shadow 3.2+ 3.5+ 3.0+ 9.0+
Textschatten 3.5+ 3.2+ 3.0+ noch nicht

Kompletter Code

Zum Auswählen einfach in das Code-Feld doppelklicken.

.custom_btn {
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
-border-radius: 10px;
-moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2),0 -1px 1px rgba(255, 255, 255, 0.4) inset,0 1px 1px rgba(255, 255, 255, 0.9) inset;
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2),0 -1px 1px rgba(255, 255, 255, 0.4) inset,0 1px 1px rgba(255, 255, 255, 0.9) inset;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.2),0 -1px 1px rgba(255, 255, 255, 0.4) inset,0 1px 1px rgba(255, 255, 255, 0.9) inset;
background-image: -moz-linear-gradient(0% 100% 90deg,#CCCCCC, #E6E6E6);
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#E6E6E6), to(#CCCCCC));
border: 2px solid #aaaaaa;
color: #111111;
font: bold 1.2em/1.4em Helvetica,Geneva,Arial,sans-serif;
padding: 6px 10px;
text-align: center;
text-shadow: 0 1px 0 #fff;
/* Styles, damit der Button mittig angezeigt wird. Kann entfernt werden. */
margin: 0pt auto;
display: block;
width: 100px;
}

.custom_btn:hover {
-moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.5),0 -1px 1px rgba(255, 255, 255, 0.4) inset,0 1px 1px rgba(255, 255, 255, 0.9) inset;
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.5	),0 -1px 1px rgba(255, 255, 255, 0.4) inset,0 1px 1px rgba(255, 255, 255, 0.9) inset;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.5	),0 -1px 1px rgba(255, 255, 255, 0.4) inset,0 1px 1px rgba(255, 255, 255, 0.9) inset;
-webkit-transition: -webkit-box-shadow .3s ease-in-out;
-moz-transition: -moz-box-shadow .3s ease-in-out;
}

.custom_btn:active {
-moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2),0 -1px 1px rgba(200, 200, 200, 0.2) inset,0 1px 1px rgba(200, 200, 200, 0.2) inset;
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2),0 -1px 1px rgba(200, 200, 200, 0.2) inset,0 1px 1px rgba(200, 200, 200, 0.2) inset;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.2),0 -1px 1px rgba(200, 200, 200, 0.2) inset,0 1px 1px rgba(200, 200, 200, 0.2) inset;
}

Postet ruhig eure Ergebnisse!
Viel Spaß!

1 Kommentar + Kommentar hinzufügen

Pingbacks

Schreibe einen Kommentar.