html 링크를 단추처럼 보이게하려면 어떻게합니까?


154

ASP.NET을 사용하고 있는데 일부 버튼은 리디렉션 만 수행합니다. 차라리 일반 링크 였지만 사용자가 모양에 큰 차이를 느끼지 않기를 바랍니다. 태그로 앵커로 둘러싸인 이미지를 고려했지만 버튼의 텍스트를 변경할 때마다 이미지 편집기를 실행하고 싶지는 않습니다.


2
이 질문에 대해 제가 수락 한 답변을 참조하십시오. stackoverflow.com/questions/547222/…
tvanfosson

당신은 같은 서비스를 사용할 수있는 이 일 이 몇 가지 측면 (색상, 크기, 글꼴)을 구성한 후 당신을 위해 CSS를 생성합니다.
Basil Bourque

1
나는 자바 스크립트로 그것을 수행하는 방법에 대답하지만 질문은 "자바 스크립트"태그가 없습니다
ilyaigpetrov

2
@ilyaigpetrov로 가서 답변을 게시하십시오. 나는 7 년 전에이 Q를 물었고 이것이 일반적인 문제인 것처럼 보이며 사람들은 다양한 솔루션을 필요로했습니다.
MatthewMartin

답변:


214

이 클래스를 적용하십시오

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


13
이를 위해서는 CSS로 단추 모양을 재현해야합니다. 그러나 불행히도 다른 브라우저 및 다른 버전의 브라우저의 버튼은 다르게 보입니다. 따라서 일부 브라우저에서는 재미있어 보이거나 사용자가 가지고있는 브라우저와 버전을 파악하고 다른 스타일을 선택하는 코드가 많이 있어야합니다. 그것은 많은 문제이며 다음에 새로운 버전의 브라우저가 나올 때 깨질 수 있습니다.
Jay

a태그에 직접 적용하는 경우에만 작동합니다 ( a {display: block ...}). 허용되지 않습니다. 태그 class내부의 속성 a이 작동하지 않는 이유를 알고 있습니까? : (Firefox 27을 사용 a.button {...}하고 있습니다. 또한 시도했지만 작동하지 않습니다.
just_a_girl

1
@Jay 타협은 <input type="submit">및 / 또는 <button>요소 의 스타일을 정의하여 브라우저 기본값을 사용하지 않도록 설정 한 다음 .button위와 같이 스타일과 일치시키는 것입니다 . 이것은 차이를 완전히 제거하지 않으면 차이를 줄이는 데 도움이되며 브라우저 유형과 버전을 스니핑하는 (믿을 수없는대로) 방법보다 낫습니다.
Ollie Bennett

@OllieBennett True : 버튼 모양을 완전히 재정의 할 수 있습니다. 나는 이것을 시도하지 않았으며, 스타일의 몇 가지 측면을 재정의 해야하는지 확실하지 않습니다. 통증처럼 들리지만 시도하지는 않았지만 다른 옵션과 비교하여 통증이 얼마나 많은지 말할 수 없습니다.
Jay

@CraigGjerdingen .link_button에 사용한 스타일이 정말 마음에 듭니다. CSS3을 사용하면이 답변이 확실히 업데이트됩니다. 또한 "일반적인"브라우저 버튼과 같은 스타일을 사용하지만 여전히 버튼 여유가 있으면 스타일을 재정의하지 않고도 브라우저 스니핑 문제를 해결할 수 있습니다.<input type="submit">
Evan Donovan

128

버튼 요소 주위에 앵커 태그를 감쌀 이유는 무엇입니까?

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

이것은 IE9 +, Chrome, Safari, Firefox 및 Opera에서 작동합니다.


8
@Dean_Wilson는 ie6를 수용해야합니다 :(
Robotnik

@feeel 일관된 모양의 버튼을 얻는 것이 더 쉬웠 기 때문입니다. CSS를 사용하면 기본 스타일이 없습니다. 어쨌든 다른 사람이 이미 그 대답을했습니다.
guanome

1
기본 브라우저의 버튼 스타일을 모방하려고 CSS를 피할 필요가 없으므로이 솔루션이 마음에 듭니다. 그러나 Firefox에서는에서만 작동합니다 <button type="button">. type 속성이 없으면 항상 포스트 백을 수행하고 링크를 무시합니다.
Tobias

@Pyitoechito Chrome과 Safari가 웹킷에 있기 때문에 확실합니다. 그것은 것 같습니다 jsfiddle.net/9Gt7y
guanome

31
<button> 및 <a> 중첩은 유효한 HTML이 아니며 동작이 정의되지 않았습니다. 자세한 답변은 여기를 참조하십시오 stackoverflow.com/questions/6393827/… 작동하는 경우 우연의 일치 일뿐입니다.
Odin

36

IMHO, 더 좋고 더 우아한 솔루션이 있습니다. 귀하의 링크가 다음과 같은 경우 :

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

해당 버튼은 다음과 같아야합니다.

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

이 방법은 간단한 html 요소를 사용하기 때문에 더 간단하므로 아무 것도 변경하지 않고 모든 브라우저에서 작동 합니다. 또한 버튼 스타일이있는 경우이 솔루션은 새 버튼에 동일한 스타일을 무료로 적용합니다.


5
좋아, 오늘 이것을 시험해 보았습니다. ASP.NET 웹 양식을 사용하지 않으면 훌륭하게 작동합니다. ASP.NET 웹 양식은 전체 페이지를 양식 태그로 감싸고 중첩 양식은 전혀 작동하지 않는 것 같습니다. ASP.NET 양식 태그 외부에서는 작동하지만 맨 위와 맨 아래의 링크 사용은 제한됩니다.
MatthewMartin

3
간단하고 효과적입니다. 양식 요소에 display : inline 스타일을 추가 할 수 있습니다. 그렇지 않으면 버튼 / 앵커 / 입력과 다른 블록으로 취급됩니다.
nimrodm

좋은 질문. 나도 그렇게 생각하지 않습니다. 그러나 여기에 묘사 된 다른 솔루션은 버튼 태그를 사용하는 솔루션과 같이 Googlebot에서 작동하지 않습니다.
Raul Luna

나는 장고에서 이것을 시도했지만 버튼이 다른 형태로 끝나면 링크 역할을하지 않고 데이터를 POST합니다.
wobbily_col

1
버튼을 자바 스크립트에서 리디렉션하도록 할 수도 있습니다. 그러나 이제는 링크가 아닙니다. "링크 주소를 클립 보드에 복사 할 수 없습니다", 중간 클릭으로 새 탭 등을 열고 마우스 등으로 마우스를 가져 가서 링크 대상을 미리
Alexander Taylor

27

CSS3 appearance속성은 브라우저의 내장 스타일로 모든 요소 (앵커 포함)의 스타일을 지정하는 간단한 방법을 제공 <button>합니다.

a.btn {
  -webkit-appearance: button;
  -moz-appearance: button;
  appearance: button;
}
<body>
  <a class="btn">CSS Button</a>
</body>

CSS 트릭 에는 이에 대한 자세한 내용이 포함 된 멋진 개요가 있습니다. caniuse.com에 따르면 현재 Internet Explorer 버전에서는이를 지원하지 않습니다 .


5
이것은 CSS3 사양에서 삭제되었습니다. htmlvalidator.com/help.php?m=1&h=appearance
user1431356

22
a {
    display: block;
    height: 20px;
    width: auto;
    border: 1px solid #000;
}

<a>블록 표시를 제공하면 이와 같은 태그로 재생할 수 있습니다 . 테두리 느낌을 조정하여 해당 버튼 느낌에 대한 음영 효과와 배경색을 제공 할 수 있습니다. :)


18

둥근 모서리가있는 멋진 버튼을 원한다면이 클래스를 사용하십시오.

.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
나는 이것과 jsFiddle에 가장 높은 순위의 답변을 추가했습니다. jsfiddle.net/5z6ew1m0/6
Craig Gjerdingen

당신 margin도 그것을 추가 할 수 있습니다. 그렇지 않으면, 좋은 스타일링 작업.
c00000fd

3

TStamper가 말했듯이 CSS 클래스를 적용하고 디자인 할 수 있습니다. CSS가 링크로 할 수있는 일의 수가 향상됨에 따라 이제는 테마를위한 놀라운 CSS 버튼을 만드는 데 중점을 둔 디자인 그룹이 있습니다.

예를 들어, -webkit-transition 속성 및 pseduo-classes를 사용하여 배경색으로 전환 할 수 있습니다. 이러한 디자인 중 일부는 상당히 까다로울 수 있지만 과거에는 플래시로 수행했을 수 있었던 것에 대한 환상적인 대안을 제공합니다.

예를 들어 (제 생각 에는 눈에 띄는 ) http://tympanus.net/Development/CreativeButtons/ (원본 페이지에 소스 코드가 포함 된 버튼에 대한 기본적으로 제공되는 일련의 애니메이션입니다) ). http://www.commentredirect.com/make-awesome-flat-buttons-css/ (동일한 줄에이 버튼은 훌륭하지만 최소한의 전환 효과가 있으며 새로운 "플랫"디자인 스타일을 사용합니다.)


3

JavaScript로 할 수 있습니다.

  1. 로 실제 버튼의 CSS 스타일을 가져옵니다 getComputedStyle(realButton).
  2. 모든 링크에 스타일을 적용하십시오.

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


2

표준 버튼을 만든 다음 링크의 배경 이미지로 사용할 수 있습니다. 그런 다음 이미지를 변경하지 않고 링크의 텍스트를 설정할 수 있습니다.

특수 렌더링 된 버튼이 아닌 경우 최상의 솔루션은 TStamper와 Ólafur Waage에서 이미 제공 한 것입니다.



2

뒤늦게 대답 :

ASP에서 처음 작업을 시작한 이래로 레슬링을 시작했습니다. 내가 찾은 최고는 다음과 같습니다.

개념 : 태그가있는 사용자 지정 컨트롤을 만듭니다. 그런 다음 버튼에 JavaScript를 사용하여 document.location을 원하는 값으로 설정하는 onclick 이벤트를 넣습니다.

컨트롤 ButtonLink를 호출하여 LinkButton과 혼동되는 경우 쉽게 얻을 수 있습니다.

aspx :

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="ButtonLink.ascx.vb" Inherits="controls_ButtonLink" %>

<asp:Button runat="server" ID="button"/>

코드 뒤에 :

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

이 체계의 장점 : 그것은 컨트롤처럼 보입니다. <ButtonLink id = "mybutton"navigateurl = "blahblah"/> 태그를 작성합니다.

결과 버튼은 "실제"HTML 버튼이므로 실제 버튼처럼 보입니다. CSS로 버튼 모양을 시뮬레이션하려고 시도한 다음 다른 브라우저에서 다른 모양으로 고심하지 않아도됩니다.

능력은 제한적이지만 더 많은 속성을 추가하여 쉽게 확장 할 수 있습니다. text, enabled 및 cssclass와 마찬가지로 대부분의 속성은 기본 버튼으로 "통과"해야 할 것입니다.

더 간단하고 깨끗하거나 더 나은 솔루션을 가진 사람이 있다면 기뻐할 것입니다. 이것은 고통이지만 작동합니다.


2

이것이 내가 사용한 것입니다. 링크 버튼은

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

버튼처럼 보이지 않습니다. 누가 당신을 억압했는지 모르겠어요 제공 한 코드에 대한 JS 바이올린은 다음과 같습니다. jsfiddle.net/yajj2x0p
MatthewMartin

2

asp : LinkButton을 사용하는 것은 어떻습니까?

당신은 할 수 있습니다-TStamper의 항목을 사용하여 링크 버튼을 표준 버튼처럼 보이게했습니다. 그러나 text-decoration: none설정 에도 불구하고 마우스를 가져 가면 밑줄이 텍스트 아래에 표시됩니다 .

링크 버튼 style="text-decoration: none"내에 추가하여 호버 밑줄을 멈출 수있었습니다 .

<asp:LinkButton 
id="btnUpdate" 
CssClass="btnStyleTStamper" 
style="text-decoration: none" 
Text="Update Items"   
Onclick="UpdateGrid"  
runat="server"
/>

링크 버튼은 링크처럼 보이지만 버튼처럼 작동하는 것을 만듭니다. 질문은 반대를 요구합니다. 버튼처럼 보이지만 링크처럼 작동합니다.
Jay

2

테두리, 색상 및 배경 색상 속성을 사용하면 HTML 링크와 유사한 버튼을 만들 수 있습니다!

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>

도움이 되었기를 바랍니다 :]


2

이 클래스를 사용하십시오 . 태그 의 button클래스를 사용하여 적용하면 링크가 버튼과 동일하게 보입니다 a.

또는

또 다른 데모 JSFIDDLE입니다

.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;
}

1

나는 asp:Button:

<asp:Button runat="server"
            OnClientClick="return location='targetPage', true;"
            UseSubmitBehavior="False"
            Text="Button Text Here"
/>

이런 식으로 버튼의 작동은 완전히 클라이언트 측이며 버튼은에 대한 링크처럼 작동합니다 targetPage.


asp:Button실제 모습을 잘 보여 주므로 다른 사용자에게 도움이 될 수 있습니다!
사용자가 아닌 사용자

0

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


0

아래 스 니펫을 사용하십시오.

    .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);
    }
  }
}

0

간단한 버튼 CSS는 이제 편집기로 놀 수 있습니다.

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

링크 태그

<a href="#">Hover me<a>

-1

이것은 나를 위해 일했습니다. 버튼처럼 보이고 링크처럼 동작합니다. 예를 들어 책갈피를 지정할 수 있습니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.