204 Stimmen

Wie kann ich einen HTML-Link wie eine Schaltfläche aussehen lassen?

Ich verwende ASP.NET, einige meiner Schaltflächen leiten einfach weiter. Mir wäre es lieber, wenn es normale Links wären, aber ich möchte nicht, dass meine Benutzer einen großen Unterschied im Aussehen bemerken. Ich habe in Erwägung gezogen, Bilder mit Ankern, d. h. Tags, einzubinden, aber ich möchte nicht jedes Mal einen Bildeditor aufrufen müssen, wenn ich den Text einer Schaltfläche ändere.

2 Stimmen

Siehe die von mir akzeptierte Antwort auf diese Frage: stackoverflow.com/questions/547222/

0 Stimmen

Sie können einen Dienst nutzen wie diese um das CSS für Sie zu generieren, nachdem Sie einige Aspekte (Farbe, Größe, Schriftart) konfiguriert haben.

1 Stimmen

Ich würde antworten, wie man es mit javascript macht, aber die Frage hat keinen "javascript"-Tag

261voto

TStamper Punkte 29478

Wenden Sie diese Klasse auf sie an

.button {
  font: bold 11px Arial;
  text-decoration: none;
  background-color: #EEEEEE;
  color: #333333;
  padding: 2px 6px 2px 6px;
  border-top: 1px solid #CCCCCC;
  border-right: 1px solid #333333;
  border-bottom: 1px solid #333333;
  border-left: 1px solid #CCCCCC;
}

<a href="#" class="button">Example</a>

20 Stimmen

Der Haken an der Sache ist, dass man das Aussehen einer Schaltfläche mit CSS nachbilden muss. Doch leider sehen Schaltflächen in verschiedenen Browsern und verschiedenen Versionen von Browsern unterschiedlich aus. Also muss man entweder akzeptieren, dass sie in manchen Browsern komisch aussehen, oder man muss einen Haufen Code schreiben, um herauszufinden, welchen Browser und welche Version der Benutzer hat, und einen anderen Stil wählen. Das ist sehr mühsam und könnte beim nächsten Erscheinen einer neuen Version eines Browsers nicht mehr funktionieren.

0 Stimmen

Das funktioniert bei mir nur, wenn ich es auf a Tag direkt ( a {display: block ...} ), was nicht akzeptabel ist. Haben Sie eine Ahnung, warum class Attribut innerhalb a Tag funktioniert nicht? :( Ich benutze Firefox 27. Ich habe auch versucht a.button {...} und es funktioniert auch nicht.

1 Stimmen

@Jay ein Kompromiss könnte darin bestehen, das Styling der <input type="submit"> und/oder <button> Elemente, so dass sie nicht die Standardeinstellungen des Browsers verwenden (wo dies möglich ist), und stimmen diese dann mit dem Styling für .button wie oben. Dies sollte dazu beitragen, die Unterschiede zu verringern, wenn nicht sogar vollständig zu beseitigen, und ist besser als Ihre (unzuverlässige - wie Sie richtig sagen) Methode, den Browsertyp und die Version zu erschnüffeln.

172voto

FarFigNewton Punkte 6846

Warum nicht einfach einen Anker-Tag um ein Schaltflächenelement wickeln?

<a href="somepage.html"><button type="button">Text of Some Page</button></a>

Dies funktioniert für IE9+, Chrome, Safari, Firefox und wahrscheinlich Opera.

9 Stimmen

@Dean_Wilson versuchen, für ie6 zu sorgen :(

0 Stimmen

@feeel Weil es für mich einfacher war, eine einheitlich aussehende Schaltfläche zu erhalten. Wenn du CSS verwendest, hat sie kein natives Styling. Diese Antwort hatte sowieso schon jemand anderes.

1 Stimmen

Mir gefällt diese Lösung, da man nicht mit CSS herumspielen muss, um den Stil der Schaltflächen des nativen Browsers zu imitieren. In Firefox habe ich es jedoch nur mit <button type="button"> . Ohne das Typ-Attribut würde immer ein Postback durchgeführt und der Link ignoriert.

45voto

Raul Luna Punkte 1771

IMHO gibt es eine bessere und elegantere Lösung. Wenn Ihr Link ist dies:

<a href="http://www.example.com">Click me!!!</a>

Die entsprechende Schaltfläche sollte diese sein:

<form method="GET" action="http://www.example.com">
<input type="submit" value="Click me!!!">
</form>

Dieser Ansatz ist einfacher, da er einfache HTML-Elemente verwendet, und wird daher funktionieren in allen Browsern ohne etwas zu ändern. Wenn Sie außerdem Stile für Ihre Schaltflächen haben, wird diese Lösung dieselben Stile kostenlos auf Ihre neue Schaltfläche anwenden.

6 Stimmen

Okay, ich habe das heute getestet und es funktioniert großartig, wenn Sie nicht ASP.NET Webforms verwenden. ASP.NET Webforms wickelt die ganze Seite in einem Formular-Tag und verschachtelte Formulare scheinen überhaupt nicht zu funktionieren - es funktioniert außerhalb von ASP.NET Formular-Tag, aber das begrenzt die Verwendung auf Links ganz oben und unten.

4 Stimmen

Einfach und effektiv. Möglicherweise sollten Sie dem Formularelement den Stil display:inline hinzufügen. Andernfalls wird es wie ein Block behandelt, der sich von Schaltflächen, Ankern und Eingaben unterscheidet.

0 Stimmen

Gute Frage. Das glaube ich auch nicht. Aber andere Lösungen, die hier beschrieben werden, funktionieren nicht mit googlebot, zum Beispiel die Verwendung eines Button-Tags.

35voto

Kevin Leary Punkte 7707

Die CSS3 appearance Eigenschaft bietet eine einfache Möglichkeit, ein beliebiges Element (einschließlich eines Ankers) mit der in den Browser integrierten <button> Stile:

a.btn {
  -webkit-appearance: button;
  -moz-appearance: button;
  appearance: button;
}

<body>
  <a class="btn">CSS Button</a>
</body>

CSS-Tricks hat einen schönen Überblick mit mehr Details dazu. Beachten Sie, dass derzeit keine Version des Internet Explorers diese Funktion unterstützt. laut caniuse.com .

16 Stimmen

Dies wurde in der CSS3-Spezifikation gestrichen. htmlvalidator.com/help.php?m=1&h=erscheinung

28voto

rupsray Punkte 441

Wenn Sie eine schöne Schaltfläche mit abgerundeten Ecken haben möchten, dann verwenden Sie diese Klasse:

.link_button {
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    border: solid 1px #20538D;
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4);
    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2);
    background: #4479BA;
    color: #FFF;
    padding: 8px 12px;
    text-decoration: none;
}

<a href="#" class="link_button">Example</a>

3 Stimmen

Ich habe dies und die höchstrangige Antwort zu einem jsFiddle hinzugefügt. Fühlen Sie sich frei, um herumspielen mit jsfiddle.net/5z6ew1m0/6

0 Stimmen

Vielleicht möchten Sie eine margin auch dazu. Ansonsten, gute Arbeit beim Styling.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X