J'utilise ASP.NET, certains de mes boutons ne font que des redirections. Je préférerais que ce soient des liens ordinaires, mais je ne veux pas que mes utilisateurs remarquent une grande différence d'apparence. J’ai considéré les images entourées d’ancres, c’est-à-dire les tags, mais je ne veux pas avoir à lancer un éditeur d’image chaque fois que je change le texte d’un bouton.
Appliquez cette classe à elle
.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>
Aussi bête que je pense, je vais poser cette question ancienne.
Pourquoi ne pas simplement envelopper une balise d'ancrage autour d'un élément de bouton.
<a href="somepage.html"><button type="button">Text of Some Page</button></a>
Après avoir lu ce post et essayé la réponse acceptée sans obtenir le résultat souhaité, j'ai essayé ce qui précède et obtenu exactement ce que je voulais.
Cela ne fonctionnera que pour IE9 +, Chrome, Safari, Firefox et probablement Opera.
IMHO, il existe une solution meilleure et plus élégante. Si votre lien est ceci:
<a href="http://www.example.com">Click me!!!</a>
Le bouton correspondant devrait être ceci:
<form method="GET" action="http://www.example.com">
<input type="submit" value="Click me!!!">
</form>
Cette approche est plus simple car elle utilise des éléments HTML simples, de sorte que cela fonctionnera dans tous les navigateurs sans rien changer. De plus, si vous avez des styles pour vos boutons, cette solution appliquera gratuitement les mêmes styles à votre nouveau bouton.
a {
display: block;
height: 20px;
width: auto;
border: 1px solid #000;
}
Vous pouvez jouer avec les tags <a>
comme celui-ci si vous leur donnez un affichage en bloc. Vous pouvez ajuster la bordure pour donner une teinte comme un effet et la couleur d’arrière-plan pour que le bouton s’agisse :)
La propriété CSS3 appearance
fournit un moyen simple de styliser n'importe quel élément (y compris une ancre) avec les styles <button>
intégrés du navigateur:
a.btn {
-webkit-appearance: button;
-moz-appearance: button;
appearance: button;
}
<body>
<a class="btn">CSS Button</a>
</body>
CSS Tricks a un beau contour avec plus de détails à ce sujet. N'oubliez pas qu'aucune version d'Internet Explorer ne prend actuellement en charge cette fonctionnalité selon caniuse.com .
Si vous voulez un joli bouton avec des coins arrondis, utilisez cette classe:
.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>
Comme TStamper l'a dit, vous pouvez simplement lui appliquer la classe CSS et la concevoir de cette façon. Au fur et à mesure que CSS améliorait, le nombre de choses que vous pouvez faire avec les liens est devenu extraordinaire, et il existe maintenant des groupes de conception qui se concentrent uniquement sur la création de superbes boutons CSS pour les thèmes, etc.
Par exemple, vous pouvez effectuer des transitions avec background-color à l'aide de la propriété -webkit-transition et de pseduo-classes. Certaines de ces conceptions peuvent devenir assez cinglées, mais elles offrent une alternative fantastique à ce qui aurait pu être fait dans le passé avec, par exemple, le flash.
Par exemple (à mon avis, cela décoiffe), http://tympanus.net/Development/CreativeButtons/ (il s’agit d’une série d’animations totalement originales pour les boutons, avec le code source sur la page d'origine) . http://www.commentredirect.com/make-awesome-flat-buttons-css/ (dans le même esprit, ces boutons ont des effets de transition agréables mais minimalistes et utilisent le nouveau style de design "plat".)
Réponse très tardive:
Je lutte avec cela de temps en temps depuis que j'ai commencé à travailler pour ASP. Voici le meilleur que j'ai créé avec:
Concept: je crée un contrôle personnalisé qui a une balise. Ensuite, dans le bouton, je mets un événement onclick qui définit document.location sur la valeur souhaitée avec JavaScript.
J'ai appelé le contrôle ButtonLink, afin que je puisse facilement obtenir si confondu avec LinkButton.
aspx:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="ButtonLink.ascx.vb" Inherits="controls_ButtonLink" %>
<asp:Button runat="server" ID="button"/>
code derrière:
Partial Class controls_ButtonLink
Inherits System.Web.UI.UserControl
Dim _url As String
Dim _confirm As String
Public Property NavigateUrl As String
Get
Return _url
End Get
Set(value As String)
_url = value
BuildJs()
End Set
End Property
Public Property confirm As String
Get
Return _confirm
End Get
Set(value As String)
_confirm = value
BuildJs()
End Set
End Property
Public Property Text As String
Get
Return button.Text
End Get
Set(value As String)
button.Text = value
End Set
End Property
Public Property enabled As Boolean
Get
Return button.Enabled
End Get
Set(value As Boolean)
button.Enabled = value
End Set
End Property
Public Property CssClass As String
Get
Return button.CssClass
End Get
Set(value As String)
button.CssClass = value
End Set
End Property
Sub BuildJs()
' This is a little kludgey in that if the user gives a url and a confirm message, we'll build the onclick string twice.
' But it's not that big a deal.
If String.IsNullOrEmpty(_url) Then
button.OnClientClick = Nothing
ElseIf String.IsNullOrEmpty(_confirm) Then
button.OnClientClick = String.Format("document.location='{0}';return false;", ResolveClientUrl(_url))
Else
button.OnClientClick = String.Format("if (confirm('{0}')) {{document.location='{1}';}} return false;", _confirm, ResolveClientUrl(_url))
End If
End Sub
End Class
Avantages de ce schéma: Cela ressemble à un contrôle. Vous écrivez une seule balise pour cela, <ButtonLink id = "mybutton" navigateurl = "blahblah" />
Le bouton obtenu est un "vrai" bouton HTML et ressemble donc à un vrai bouton. Vous n'avez pas à essayer de simuler l'apparence d'un bouton avec CSS, puis à vous débattre avec différents apparences sur différents navigateurs.
Bien que les capacités soient limitées, vous pouvez facilement l'étendre en ajoutant plus de propriétés. Il est probable que la plupart des propriétés devront simplement "passer" au bouton sous-jacent, comme je l'ai fait pour text, enabled et cssclass.
Si quelqu'un a une solution plus simple, plus propre ou autrement meilleure, je serais heureux de l'entendre. C'est pénible, mais ça marche.
Vous pouvez le faire avec JavaScript:
getComputedStyle(realButton)
./* javascript, after body is loaded */
'use strict';
{ // Namespace starts (to avoid polluting root namespace).
const btnCssText = window.getComputedStyle(
document.querySelector('.used-for-btn-css-class')
).cssText;
document.querySelectorAll('.btn').forEach(
(btn) => {
const _d = btn.style.display; // Hidden buttons should stay hidden.
btn.style.cssText = btnCssText;
btn.style.display = _d;
}
);
} // Namespace ends.
<body>
<h3>Button Styled Links</h3>
<button class="used-for-btn-css-class" style="display: none"></button>
<a href="//github.io" class="btn">first</a>
<a href="//github.io" class="btn">second</a>
<button>real button</button>
<script>/* You may put JS here. */</script>
</body>
Utilisez cette classe. Votre lien ressemblera à un bouton lorsqu'il est appliqué à l'aide de la classe button
sur une balise a
.
ou
.button {
display: inline-block;
outline: none;
cursor: pointer;
border: solid 1px #da7c0c;
background: #478dad;
text-align: center;
text-decoration: none;
font: 14px/100% Arial, Helvetica, sans-serif;
padding: .5em 2em .55em;
text-shadow: 0 1px 1px rgba(0,0,0,.3);
-webkit-border-radius: .5em;
-moz-border-radius: .5em;
border-radius: .3em;
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);
-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);
box-shadow: 0 1px 2px rgba(0,0,0,.2);
}
.button:hover {
background: #f47c20;
background: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015));
background: -moz-linear-gradient(top, #f88e11, #f06015);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f88e11', endColorstr='#f06015');
}
.button:active {
position: relative;
top: 1px;
}
Vous pouvez créer un bouton standard, puis l'utiliser comme image d'arrière-plan pour un lien. Ensuite, vous pouvez définir le texte dans le lien sans changer l'image.
Les meilleures solutions si vous n'avez pas de bouton de rendu spécial sont les deux déjà données par TStamper et Ólafur Waage.
Cela entre un peu plus dans les détails du fichier css et vous donne quelques images:
http://www.dynamicdrive.com/style/csslibrary/item/css_square_buttons/
Pourquoi ne pas utiliser asp: LinkButton?
Vous pouvez le faire - j'ai fait ressembler un bouton bouton à un bouton standard, en utilisant l'entrée de TStamper. Le soulignement est apparu sous le texte lorsque j'ai survolé, malgré le réglage text-decoration: none
.
J'ai réussi à arrêter le survol survol en ajoutant style="text-decoration: none"
dans le lien:
<asp:LinkButton
id="btnUpdate"
CssClass="btnStyleTStamper"
style="text-decoration: none"
Text="Update Items"
Onclick="UpdateGrid"
runat="server"
/>
C'est ce que j'ai utilisé. Bouton de lien est
<div class="link-button"><a href="/">Example</a></div>
CSS
/* body is sans-serif */
.link-button {
margin-top:15px;
max-width:90px;
background-color:#eee;
border-color:#888888;
color:#333;
display:inline-block;
vertical-align:middle;
text-align:center;
text-decoration:none;
align-items:flex-start;
cursor:default;
-webkit-appearence: Push-button;
border-style: solid;
border-width: 1px;
border-radius: 5px;
font-size: 1em;
font-family: inherit;
border-color: #000;
padding-left: 5px;
padding-right: 5px;
width: 100%;
min-height: 30px;
}
.link-button a {
margin-top:4px;
display:inline-block;
text-decoration:none;
color:#333;
}
.link-button:hover {
background-color:#888;
}
.link-button:active {
background-color:#333;
}
.link-button:hover a, .link-button:active a {
color:#fff;
}
En utilisant les propriétés de bordure, couleur et couleur de fond, vous pouvez créer un lien html ressemblant à un bouton!
a {
background-color: white;
color: black;
padding: 5px;
text-decoration: none;
border: 1px solid black;
}
a:hover {
background-color: black;
color: white;
}
<a href="https://stackoverflow.com/
">Open StackOverflow</a>
J'espère que cela t'aides :]
J'utilise un asp:Button
:
<asp:Button runat="server"
OnClientClick="return location='targetPage', true;"
UseSubmitBehavior="False"
Text="Button Text Here"
/>
De cette façon, le bouton fonctionne du côté du client et agit comme un lien vers la variable targetPage
.
Simple bouton css maintenant, vous pouvez jouer avec votre éditeur
a {
display: inline-block;
background: #000000c9;
color: #000;
padding: 12px 24px;
text-align: center;
text-decoration: none;
font-size: 16px;
cursor: pointer;
}
a:hover {
background:#000
cursor: pointer;
transition: 0.3s ease-in;
}
Lien tag
<a href="#">Hover me<a>
Utilisez l'extrait ci-dessous.
.a{
color: $brn-acc-clr;
background-color: transparent;
border-color: #888888;
&:hover:active{
outline: none;
color: #888888;
border-color: #888888;
}
&:fill{
background-color: #888888;
color: #fff;
box-shadow: 0 3px 10px rgba(#888888, 0.5);
&:hover:active{
color: #fff;
}
&:hover:not(:disabled){
transform: translateY(-2px);
background-color: darken(#888888, 4);
}
}
}
.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>
Cela a fonctionné pour moi. Il ressemble à un bouton et se comporte comme un lien. Vous pouvez le marquer, par exemple.
<a href="mypage.aspx?param1=1" style="text-decoration:none;">
<asp:Button PostBackUrl="mypage.aspx?param1=1" Text="my button-like link" runat="server" />
</a>