Как сделать кнопку похожим на ссылку?

Мне нужно, чтобы кнопка выглядела как ссылка, используя CSS. Изменения сделаны, но когда я нажимаю на него, он показывает, как будто он нажат как кнопка. Любая идея, как удалить это, чтобы кнопка работала как ссылка даже при нажатии?

Ответ 1

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>

Ответ 2

Код принятого ответа работает в большинстве случаев, но чтобы получить кнопку, которая действительно ведет себя как ссылка, вам нужно немного больше кода. Особенно сложно сделать стилизацию сфокусированных кнопок прямо в 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 выше.


Исходный код (см. Фрагмент) в этом ответе был совершенно другим и неполным.

/* Obsolete code! Please use the code of the updated answer. */

input[type="button"], input[type="button"]:focus, input[type="button"]:active,  
button, button:focus, button:active {
	/* Remove all decorations to look like normal text */
	background: none;
	border: none;
	display: inline;
	font: inherit;
	margin: 0;
	padding: 0;
	outline: none;
	outline-offset: 0;
	/* Additional styles to look like a link */
	color: blue;
	cursor: pointer;
	text-decoration: underline;
}
/* Remove extra space inside buttons in Firefox */
input[type="button"]::-moz-focus-inner,
button::-moz-focus-inner {
    border: none;
    padding: 0;
}

Ответ 3

Если вы не возражаете против использования загрузчика 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>

Ответ 4

попробуйте использовать псевдо-кластер 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>

с этим. Если вы даже можете получить доступ к цели ссылки в своей функции. return false будет просто препятствовать браузеру после ссылки при нажатии.

Если javascript отключен, ссылка будет работать как обычная ссылка и просто загрузит some/page.php - если вы хотите, чтобы ваша ссылка была мертва, когда js отключен, используйте href="#"

Ответ 5

Вы не можете стилизовать кнопки как надежные ссылки во всех браузерах. Я пробовал, но в некоторых браузерах всегда есть странные дополнения, маржи или шрифты. Либо жить, если кнопка будет выглядеть как кнопка, либо использовать onClick и preventDefault для ссылки.

Ответ 6

Вы можете достичь этого, используя простой 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>