CSSを使用してボタンをリンクのようにする必要があります。変更は完了しましたが、それをクリックすると、ボタンのように押されたかのように表示されます。それを削除して、ボタンをクリックしてもリンクとして機能するようにする方法はありますか?
#
を使用する必要がありますevent.preventDefault()
。にリンクしているように、それは厄介javascript:void(0);
です。
CSSを使用してボタンをリンクのようにする必要があります。変更は完了しましたが、それをクリックすると、ボタンのように押されたかのように表示されます。それを削除して、ボタンをクリックしてもリンクとして機能するようにする方法はありますか?
#
を使用する必要がありますevent.preventDefault()
。にリンクしているように、それは厄介javascript:void(0);
です。
回答:
button {
background: none!important;
border: none;
padding: 0!important;
/*optional*/
font-family: arial, sans-serif;
/*input has OS specific font-family*/
color: #069;
text-decoration: underline;
cursor: pointer;
}
<button> your button that looks like a link</button>
button.link {...styles...}
thenのようなものでスタイルのスコープを設定します<button class="link">Your button</button>
。これ!important
は、常に良い考えである使用を避けます。
outline
。一部のブラウザにはボタンが追加されています。設定できますoutline-color: transparent
。
border-bottom
使用する代わりにtext-decoration:underline
。
受け入れられた回答のコードはほとんどの場合に機能しますが、実際にリンクのように動作するボタンを取得するには、もう少しコードが必要です。Firefox(Mozilla)でフォーカスされたボタンのスタイルを正しく設定するのは、特に注意が必要です。
次のCSSは、アンカーとボタンが同じCSSプロパティを持ち、すべての一般的なブラウザで同じように動作することを保証します。
button {
align-items: normal;
background-color: rgba(0,0,0,0);
border-color: rgb(0, 0, 238);
border-style: none;
box-sizing: content-box;
color: rgb(0, 0, 238);
cursor: pointer;
display: inline;
font: inherit;
height: auto;
padding: 0;
perspective-origin: 0 0;
text-align: start;
text-decoration: underline;
transform-origin: 0 0;
width: auto;
-moz-appearance: none;
-webkit-logical-height: 1em; /* Chrome ignores auto, so we have to use this hack to set the correct height */
-webkit-logical-width: auto; /* Chrome ignores auto, but here for completeness */
}
/* Mozilla uses a pseudo-element to show focus on buttons, */
/* but anchors are highlighted via the focus pseudo-class. */
@supports (-moz-appearance:none) { /* Mozilla-only */
button::-moz-focus-inner { /* reset any predefined properties */
border: none;
padding: 0;
}
button:focus { /* add outline to focus pseudo-class */
outline-style: dotted;
outline-width: 1px;
}
}
上記の例ではbutton
、読みやすさを向上させるために要素を変更するだけですがinput[type="button"], input[type="submit"]
、input[type="reset"]
要素や要素を変更するように簡単に拡張できます。特定のボタンだけをアンカーのように見せたい場合は、クラスを使用することもできます。
ライブデモについては、このJSFiddleを参照してください。
これはボタンにデフォルトのアンカースタイルを適用することにも注意してください(たとえば、青いテキスト色)。したがって、アンカーとボタンのテキストの色やその他のものを変更したい場合は、上記のCSSの後に行う必要があります。
この回答の元のコード(スニペットを参照)は完全に異なり、不完全でした。
outline-offset: 0;
アウトラインがなしに設定されている場合、なぜ必要なのですか?
box-shadow: none
ボタンのすべてのスタイルをクリアするために追加する必要がありました
text-transform: none;
Twitterブートストラップを使用してもかまわない場合は、リンククラスを使用することをお勧めします。
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
<button type="button" class="btn btn-link">Link</button>
これが誰かのお役に立てば幸いです:)良い一日を!
css疑似クラスを使用してみてください :focus
input[type="button"], input[type="button"]:focus {
/* your style goes here */
}
リンクとonclickイベントで使用するように編集します(インラインJavaScriptイベントハンドラーは使用しないでください。ただし、ここでは簡単にするためにここで使用します)。
<a href="some/page.php" title="perform some js action" onclick="callFunction(this.href);return false;">watch and learn</a>
this.hrefを使用すると、関数内のリンクのターゲットにアクセスすることもできます。return false
ブラウザがクリックされたときにリンクをたどらないようにするだけです。
JavaScriptが無効になっている場合、リンクは通常のリンクとして機能し、ロードsome/page.php
するだけです。jsが無効になっているときにリンクを無効にしたい場合は、href="#"
ブラウザ全体で確実にボタンをリンクとしてスタイル設定することはできません。私はそれを試しましたが、いくつかのブラウザでは常にいくつかの奇妙なパディング、マージンまたはフォントの問題があります。ボタンがボタンのように見えるようにするか、リンクでonClickおよびpreventDefaultを使用します。
以下の例に示すように、単純なcssを使用してこれを実現できます
button {
overflow: visible;
width: auto;
}
button.link {
font-family: "Verdana" sans-serif;
font-size: 1em;
text-align: left;
color: blue;
background: none;
margin: 0;
padding: 0;
border: none;
cursor: pointer;
-moz-user-select: text;
/* override all your button styles here if there are any others */
}
button.link span {
text-decoration: underline;
}
button.link:hover span,
button.link:focus span {
color: black;
}
<button type="submit" class="link"><span>Button as Link</span></button>