Как создать кнопку HTML, которая действует как ссылка?

1655

Я хотел бы создать кнопку HTML, которая действует как ссылка. Таким образом, когда вы нажимаете кнопку, она перенаправляется на страницу. Я хотел бы, чтобы он был как можно более доступным.

Мне также понравится, чтобы в URL не было никаких дополнительных символов или параметров.

Как я могу это достичь?


Основываясь на ответах, опубликованных до сих пор, я в настоящее время делаю это:

<form method="get" action="/page2">
    <button type="submit">Continue</button>
</form>

но проблема заключается в том, что в Safari и Интернет &nbsp Explorer, он добавляет знак вопросительного знака в конец URL-адреса. Мне нужно найти решение, которое не добавляет никаких символов в конец URL-адреса.

Для этого есть два других решения: использование JavaScript или стилизация ссылки, чтобы выглядеть как кнопка.

Использование JavaScript:

<button onclick="window.location.href='/page2'">Continue</button>

Но для этого явно нужен JavaScript, и по этой причине он менее доступен для чтения с экрана. Пункт ссылки - перейти на другую страницу. Поэтому попытка заставить кнопку действовать, как ссылка, является неправильным решением. Мое предложение состоит в том, что вы должны использовать ссылку и стиль, чтобы он выглядел как кнопка.

<a href="/link/to/page2">Continue</a>
  • 26
    Измените GET на POST. Кажется, никто не решил первую проблему ОП, которая была ? на URL. Это вызвано тем, что форма type="GET" , замените ее на type="POST" и type="POST" ? в конце URL исчезает. Это потому, что GET отправляет все переменные в URL, следовательно ? ,
  • 7
    @ redfox05 Это работает в контексте, где вы не знаете, какой метод вы принимаете для своих страниц. В контексте, где вы отклоняете сообщения на страницах, ожидающих GET это не удастся. Я все еще думаю, что использование ссылки имеет смысл с оговоркой, что она не будет реагировать на «пробел», когда активна кнопка, как это делает. Также некоторые стили и поведение будут отличаться (например, перетаскиваемый). Если вы хотите по-настоящему «кнопочную ссылку», иметь перенаправления на стороне сервера для завершения URL ? удалить это может быть также вариант.
Показать ещё 3 комментария
Теги:
hyperlink
button
htmlbutton
anchor

31 ответ

1874
Лучший ответ

HTML

Простой способ HTML состоит в том, чтобы поместить его в <form>, в котором вы указываете желаемый целевой URL в атрибуте action.

<form action="http://google.com">
    <input type="submit" value="Go to Google" />
</form>

При необходимости установите CSS display: inline; в форме, чтобы сохранить его в потоке с окружающим текстом. Вместо <input type="submit"> в приведенном выше примере вы также можете использовать <button type="submit">. Единственное отличие состоит в том, что элемент <button> позволяет детям.

Вы интуитивно ожидали бы, что сможете использовать <button href="http://google.com">, аналогичный элементу <a>, но, к сожалению, нет, этот атрибут не существует в соответствии с Спецификация HTML.

CSS

Если CSS разрешен, просто используйте <a>, который вы хотите выглядеть как кнопка, используя, помимо прочего, свойство appearance (только поддержка Internet поддержка браузера в настоящее время (июль 2015 г.) все еще плохая).

<a href="http://google.com" class="button">Go to Google</a>
a.button {
    -webkit-appearance: button;
    -moz-appearance: button;
    appearance: button;

    text-decoration: none;
    color: initial;
}

Или выберите одну из этих многих библиотек CSS, таких как Bootstrap.

<a href="http://google.com" class="btn btn-default">Go to Google</a>

JavaScript

Если JavaScript разрешен, установите window.location.href.

<input type="button" onclick="location.href='http://google.com';" value="Go to Google" />
  • 75
    Просто и приятно. Прекрасное решение. Добавить display: inline в форму, чтобы держать кнопку в потоке.
  • 11
    в сафари это добавляет вопросительный знак в конец URL ... есть ли способ сделать это, что ничего не добавляет к URL?
Показать ещё 18 комментариев
483

<button onclick="location.href='http://www.example.com'" type="button">
         www.example.com</button>
  • 0
    Разве это не window.location.href='http://www.example.com' ? location.href не работает для меня в IE9 ...
  • 1
    @pinouchon Должно работать. окно подразумевается. Может быть ошибка IE9, stackoverflow.com/questions/7690645/…
Показать ещё 8 комментариев
400

Если это внешний вид кнопки, которую вы ищете в базовом теге привязки HTML, вы можете использовать Twitter Bootstrap для отформатируйте любую из следующих распространенных ссылок/кнопок типа HTML, чтобы они отображались в виде кнопки. Обратите внимание на визуальные различия между версиями 2, 3 или 4 рамки:

<a class="btn" href="">Link</a>
<button class="btn" type="submit">Button</button>
<input class="btn" type="button" value="Input">
<input class="btn" type="submit" value="Submit">

Пример загрузки (v4):

Изображение 2585

Пример загрузки (v3):

Изображение 2586

Пример загрузки (v2):

Изображение 2587

  • 40
    Кажется, немного излишним для стилизации одной кнопки, нет? С помощью границ, отступов, фона и других CSS-эффектов вы можете стилизовать кнопки и ссылки, чтобы они выглядели одинаково, не затрагивая всю структуру. Используемая Bootstrap методология хороша, однако использование Bootstrap кажется чрезмерным.
143

Использование:

<a href="http://www.stackoverflow.com/">
    <button>Click me</button>
</a>

К сожалению, эта разметка больше не действительна в HTML5 и не будет проверять и не всегда работать как потенциально ожидаемая. Используйте другой подход.

  • 4
    Не (X) проверяет HTML.
  • 54
    @BalusC: и эта страница тоже
Показать ещё 2 комментария
108

Начиная с HTML5, кнопки поддерживают атрибут formaction. Лучше всего, никакой Javascript или хитрости не требуется.

<form>
  <button formaction="http://stackoverflow.com">Go to Stack Overflow!</button>
</form>

Предостережения

  • Должен быть окружен тегами <form>.
  • Тип <button> должен быть "submit" (или не указан), я не могу заставить его работать с типом "button". Что поднимает вопрос ниже.
  • Переопределяет действие по умолчанию в форме. Другими словами, если вы сделаете это внутри другой формы, это вызовет конфликт.

Ссылка: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formaction Поддержка браузера: https://developer.mozilla.org/en-US/docs/Web/HTML элемент/кнопка/# Browser_compatibility

  • 4
    Просто для полной информации: formaction совместима с « IE world » начиная с версии 10 и выше
  • 0
    @LucaDetomi - это правильно, но это специфично для HTML5. Я добавил еще одну ссылку с данными поддержки.
Показать ещё 9 комментариев
47

Это действительно очень просто и без использования каких-либо элементов формы. Вы можете просто использовать тег <a> с помощью кнопки внутри:).

Вот так:

<a href="http://www.google.com" target="_parent"><button>Click me !</button></a>

И он загрузит href на ту же страницу. Хотите новую страницу? Просто используйте target="_blank".

  • 14
    Хотя это работает, его следует рассматривать не как решение, а как обходной путь, потому что если вы передадите этот код через валидатор W3C, вы получите ошибки.
  • 4
    Да, Хайдер Б. Вы правы, но вам также следует помнить, что стандарты - это только сырые ориентиры. Как программист, вы всегда должны мыслить нестандартно и пробовать вещи, которых нет в книге;).
35

Если вы используете внутреннюю форму, добавьте атрибут type = "reset" вместе с элементом кнопки. Это предотвратит действие формы.

<button type="reset" onclick="location.href='http://www.example.com'">
    www.example.com
</button>
25
<form>
    <input TYPE="button" VALUE="Home Page"
        onclick="window.location.href='http://www.wherever.com'"> 
</form>
  • 6
    @Robusto, это был странный комментарий о пустом пространстве, которое раньше там было :) Это не очень хорошее решение IMO, так как оно не будет работать без JavaScript.
  • 1
    @Pekka: да, и это даже не правильно сформированный xhtml
Показать ещё 4 комментария
22

Вы можете просто поместить тег вокруг элемента:

<a href="http://google.com" target="_blank">
<button>My Button</button>
</a>

https://jsfiddle.net/hj6gob8b/

  • 0
    Я не уверен, почему это не имеет больше голосов, если честно. Он работает именно так, как мне нужно, и я сделал это так, потому что я хотел, чтобы пауки поисковых систем могли определять и переходить по ссылке. С JS этого, вероятно, не произошло бы, и я не слишком уверен в поведении поисковой системы, когда дело касается форм. Это также не приводит к каким-либо компоновкам или поведенческим побочным эффектам (хотя я действительно назначил класс для привязки и установил text-decoration для этого класса на none ).
  • 7
    Нет, ты не можешь. HTML запрещает вложение <button> внутри <a> .
Показать ещё 6 комментариев
22

Кажется, есть три решения этой проблемы (все с за и против).

Решение 1: Кнопка в форме.

<form method="get" action="/page2">
    <button type="submit">Continue</button>
</form>

Но проблема в том, что в некоторых версиях популярных браузеров, таких как Chrome, Safari и Internet Explorer, он добавляет знак вопроса в конце URL. Другими словами, код выше вашего URL будет выглядеть так:

http://someserver/pages2?

Есть один способ исправить это, но это потребует настройки на стороне сервера. Одним из примеров использования Apache Mod_rewrite было бы перенаправить все запросы с завершающим ? на их соответствующий URL без ? , Ниже приведен пример использования .htaccess, но есть полная резьба здесь:

RewriteCond %{THE_REQUEST} \?\ HTTP [NC]
RewriteRule ^/?(index\.cfm)? /? [R=301,L]

Подобные конфигурации могут различаться в зависимости от веб-сервера и используемого стека. Итак, краткое изложение этого подхода:

Плюсы:

  1. Это настоящая кнопка, и семантически это имеет смысл.
  2. Поскольку это настоящая кнопка, она также будет действовать как настоящая кнопка (например, перетаскиваемое поведение и/или имитация щелчка при нажатии клавиши пробела, когда она активна).
  3. Нет JavaScript, не требуется сложный стиль.

Минусы:

  1. Трейлинг ? выглядит некрасиво в некоторых браузерах. Это может быть исправлено хаком (в некоторых случаях) с использованием POST вместо GET, но чистый способ - перенаправление на стороне сервера. Недостатком перенаправления на стороне сервера является то, что он вызовет дополнительный HTTP-вызов для этих ссылок из-за перенаправления 304.
  2. Добавляет дополнительный элемент <form>
  3. Расположение элементов при использовании нескольких форм может быть сложным и становится еще хуже при работе с адаптивными дизайнами. Некоторое расположение может стать невозможным для этого решения в зависимости от порядка элементов. Это может в конечном итоге повлиять на удобство использования, если на эту задачу повлияет дизайн.

Решение 2. Использование JavaScript.

Вы можете использовать JavaScript для запуска onclick и других событий, чтобы имитировать поведение ссылки с помощью кнопки. Пример ниже может быть улучшен и удален из HTML, но он просто иллюстрирует идею:

<button onclick="window.location.href='/page2'">Continue</button>

Плюсы:

  1. Просто (для базовых требований) и сохраняйте семантику, не требуя дополнительной формы.
  2. Поскольку это настоящая кнопка, она также будет действовать как настоящая кнопка (например, перетаскиваемое поведение и/или имитация щелчка при нажатии клавиши пробела, когда она активна).

Минусы:

  1. Требуется JavaScript, что означает менее доступным. Это не идеально для базового (основного) элемента, такого как ссылка.

Решение 3: Якорь (ссылка) в стиле кнопки.

Стилизовать ссылку, например, кнопку, относительно легко, и она может обеспечить одинаковые возможности в разных браузерах. Bootstrap делает это, но этого также легко достичь самостоятельно, используя простые стили.

Плюсы:

  1. Простая (для базовых требований) и хорошая кросс-браузерная поддержка.
  2. Не нужно <form> для работы.
  3. Не требует JavaScript для работы.

Минусы:

  1. Семантика в некотором роде нарушена, потому что вам нужна кнопка, которая действует как ссылка, а не ссылка, которая действует как кнопка.
  2. Он не будет воспроизводить все варианты поведения решения № 1. Он не будет поддерживать то же поведение, что и кнопка. Например, ссылки перетаскиваются по-разному при перетаскивании. Также триггер ссылки "пробел" не будет работать без дополнительного кода JavaScript. Это добавит много сложности, так как браузеры не согласованы в том, как они поддерживают события keypress клавиш на кнопках.

Заключение

Решение № 1 (кнопка в форме) кажется наиболее прозрачным для пользователей с минимальными затратами труда. Если этот выбор не влияет на ваш макет и возможна настройка на стороне сервера, это хороший вариант для случаев, когда доступность является главным приоритетом (например, ссылки на странице ошибок или сообщения об ошибках).

Если JavaScript не является препятствием для ваших требований к доступности, то решение №2 (JavaScript) будет предпочтительнее, чем №1 и №3.

Если по какой-то причине доступность является жизненно важной (JavaScript не является опцией), но вы находитесь в ситуации, когда ваш дизайн и/или конфигурация вашего сервера не позволяют использовать опцию № 1, тогда решение № 3 (привязка в стиле кнопки) является хорошей альтернативой для решения этой проблемы с минимальным влиянием на удобство использования.

18

Есть ли недостатки в выполнении следующих действий?

<a class='nostyle' href='http://www.google.com/'>
    <span class='button'>Schedule</span>
</a>

Где a.nostyle - это класс, который имеет стиль вашей ссылки (где вы можете избавиться от стандартного стиля ссылок), а span.button - это класс, который имеет стиль для вашего "button" (фон, граница, градиент, и др.).

  • 1
    Нет недостатков, которые я вижу, и работает без JavaScript, внутри формы и, вероятно, во всех других ситуациях. Размах можно стилизовать так, чтобы он имел вид кнопки (и для конечного пользователя - идентичный) в соответствии с вашим собственным CSS или в соответствии с каркасом с предварительно стилизованными параметрами для кнопок - такими как Bootstrap. Это лучший ответ, который я видел, и он отлично подходит для html5.
  • 1
    Что приводит к вопросу «как мне оформить ссылку как кнопку», на который я вижу ответ здесь: stackoverflow.com/questions/710089/…
16

Единственный способ сделать это (за исключением изобретательной идеи BalusC!) - это добавить к кнопке JavaScript onclick событие, что не подходит для доступности.

Вы считали стиль обычной ссылки, как кнопка? Вы не можете достичь OS конкретных кнопок таким образом, но это все же лучший способ IMO.

  • 0
    Я думаю, что он говорит не только о функциональности (щелчок), но и о внешнем виде.
  • 1
    @Web Logic Да, именно поэтому я говорю о стилизации ссылки, чтобы она выглядела как кнопка.
Показать ещё 3 комментария
15

Почему бы просто не разместить свою кнопку внутри ссылочного тега, например

<a href="https://www.google.com/"><button>Next</button></a>

Это, кажется, работает отлично для меня и не добавляет тегов %20 к ссылке, так, как вы этого хотите. Я использовал ссылку на Google, чтобы продемонстрировать.

Конечно, вы можете обернуть это в тег формы, но это не обязательно.

При связывании другого локального файла просто поместите его в ту же папку и добавьте имя файла в качестве ссылки. Или укажите местоположение файла, если в не находится в той же папке.

<a href="myOtherFile"><button>Next</button></a>

Это также не добавляет никаких символов в конец URL-адреса, однако в нем есть путь к файлу проекта в качестве URL-адреса до окончания имени файла. например

Если бы моя структура проекта была...

.. обозначает папку - обозначает файл, а четыре | обозначить подкаталог или файл в родительской папке

..public
|||| ..html
|||| |||| -main.html
|||| |||| -secondary.html

Если я открою main.html, URL будет

http://localhost:0000/public/html/main.html?_ijt=i7ms4v9oa7blahblahblah

Тем не менее, когда я нажал кнопку внутри main.html, чтобы изменить на файл second.html, URL-адрес

http://localhost:0000/public/html/secondary.html 

Никаких специальных символов в конце URL нет. Надеюсь, это поможет. Кстати - ( %20 обозначает пробел в URL-адресе, который он кодирует и вставляет вместо них.)

Примечание: localhost: 0000, очевидно, не будет 0000, у вас там будет свой собственный номер порта.

Кроме того,? _Ijt = xxxxxxxxxxxxxx в конце URL main.html, x определяется вашим собственным соединением, поэтому очевидно, что оно не будет равным моему.


Может показаться, что я излагаю некоторые действительно основные моменты, но я просто хочу объяснить как можно лучше. Спасибо за чтение, и я надеюсь, что это поможет кому-то по крайней мере. Удачного программирования.

15

Идя вместе с тем, что добавили некоторые другие, вы можете сходить с ума только с помощью простого CSS-класса без PHP, no jQuery, просто HTML и CSS.

Создайте класс CSS и добавьте его в свой якорь. Код ниже.

.button-link {
    height:60px;
    padding: 10px 15px;
    background: #4479BA;
    color: #FFF;
    -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);
}
.button-link:hover {
    background: #356094;
    border: solid 1px #2A4E77;
    text-decoration: none;
}

<HTML>
    <a class="button-link" href="http://www.go-some-where.com"
       target="_blank">Press Here to Go</a>

Вот и все. Это очень легко сделать и позволяет вам быть настолько креативным, насколько хотелось бы. Вы управляете цветами, размером, формами (радиус) и т.д. Для получения дополнительной информации см. сайт, на котором я нашел это.

14

@Nicolas, после работы для меня, как у вас, не было type="button", из-за чего он начал вести себя как тип отправки. Так как у меня уже есть один тип submit.it, это не сработало для меня.... и теперь вы можете либо добавить класс к кнопке, либо <a>, чтобы получить требуемый макет:

<a href="http://www.google.com/">
    <button type="button">Click here</button>
</a>
13

Если вы хотите избежать использования формы или ввода, и вы ищете ссылку на кнопку, вы можете создать красивые кнопки с помощью обертки div, привязки и тега h1. Возможно, вам это захочется, чтобы вы могли свободно размещать ссылку на своей странице. Это особенно полезно для горизонтально центрирующих кнопок и с вертикально-центрированным текстом внутри них. Вот как:

Ваша кнопка будет состоять из трех вложенных элементов: обертки div, якоря и h1, например:

<div class="link-button-wrapper">
    <a href="your/link/here">
        <h1>Button!</h1>
    </a>
</div>

Затем в CSS ваш стиль должен выглядеть так:

.link-button-wrapper {
    width: 200px;
    height: 40px;
    box-shadow: inset 0px 1px 0px 0px #ffffff;
    border-radius: 4px;
    background-color: #097BC0;
    box-shadow: 0px 2px 4px gray;
    display: block;
    border:1px solid #094BC0;
}
.link-button-wrapper > a {
    display: inline-table;
    cursor: pointer;
    text-decoration: none;
    height: 100%;
    width:100%;
}
.link-button-wrapper > a > h1 {
    margin: 0 auto;
    display: table-cell;
    vertical-align: middle;
    color: #f7f8f8;
    font-size: 18px;
    font-family: cabinregular;
    text-align: center;
}

Вот jsFiddle, чтобы проверить его и поиграть с ним.

Преимущества этой настройки: 1. Создание дисплея обертки div: блок упрощает центрирование (с использованием поля: 0 авто) и положение (в то время как <a> является строгим и сложнее в позиции и не может центрировать).

  1. Вы можете просто сделать блок <a> display: block, переместить его и стилизовать его как кнопку, но затем вертикальное выравнивание текста внутри него становится затруднительным.

  2. Это позволяет вам отображать таблицу <a> display: inline-table и дисплей < h1 > : table-cell, что позволяет использовать вертикальное выравнивание: среднее на < h1 > и центрируйте его по вертикали (что всегда приятно на кнопке). Да, вы можете использовать прописку, но если вы хотите, чтобы ваша кнопка динамически изменяла размер, это будет не так чисто.

  3. Иногда, когда вы вставляете <a> внутри div, только текст можно щелкнуть, эта настройка делает клик для всей кнопки.

  4. Вам не нужно иметь дело с формами, если вы просто пытаетесь перейти на другую страницу. Формы предназначены для ввода информации, и они должны быть зарезервированы для этого.

  5. Позволяет вам четко стилизовать стиль кнопок и стиль текста друг от друга (преимущество растяжки? Конечно, но CSS может выглядеть неприятно, так что приятно разложить его).

Это определенно заставило мою жизнь упростить дизайн мобильного сайта для экранов с переменным размером.

  • 0
    Вы на самом деле получаете разумную кнопку без CSS вообще
12

Другой вариант - создать ссылку в кнопке:

<button type="button"><a href="yourlink.com">Link link</a></button>

Затем используйте CSS для стилизации ссылки и кнопки, чтобы ссылка занимала все пространство внутри кнопки (так что пользователь не пропустил клик):

button, button a{position:relative;}
button a{top:0;left:0;bottom:0;right:0;}

Я создал демонстрацию здесь.

  • 5
    Имейте в виду, что в спецификации сказано, что это недопустимо, поскольку кнопки не должны содержать никаких интерактивных потомков. w3.org/TR/2011/WD-html5-20110525/the-button-element.html
  • 0
    Вы оба правы. VS2015 помечает это с предупреждением: «Элемент« a »не может быть вложен в элемент« button »», но он работает с: IE11, Edge, Chrome, Firefox, Safari и, по крайней мере, с некоторыми (возможно, со всеми) браузерами для мобильных устройств. Так что не используйте эту технику, но если вы использовали в прошлом, она работает сейчас;)
8

Если вы хотите создать кнопку, которая используется для URL-адреса в любом месте, создайте класс кнопки для привязки.

a.button {
    background-color: #999999;
    color: #FFFFFF !important;
    cursor: pointer;
    display: inline-block;
    font-weight: bold;
    padding: 5px 8px;
    text-align: center;
    -webkit-border-radius: 5px;
    border-radius: 5px;
}
.button:hover {
    text-decoration: none;
}
7

Я знаю, что было подано много ответов, но никто из них, похоже, не справился с проблемой. Вот мой подход к решению:

  • Используйте метод <form method="get">, с которого начинается OP. Это работает очень хорошо, но иногда добавляет ? к URL-адресу. Главной проблемой является ?.
  • Используйте jQuery/JavaScript для выполнения следующей ссылки, когда JavaScript включен, поэтому ? не добавляется к URL-адресу. Он будет без проблем возвращаться к методу <form> для очень небольшой доли пользователей, у которых нет JavaScript.
  • В JavaScript-коде используется делегирование событий, поэтому вы можете присоединить прослушиватель событий до того, как существуют <form> или <button>. В этом примере я использую jQuery, потому что это быстро и просто, но это можно сделать и в 'vanilla' JavaScript.
  • Код JavaScript предотвращает действие по умолчанию, а затем следует ссылку, указанную в атрибуте <form> action.

Пример JSBin (фрагмент кода не может следовать ссылкам)

// Listen for any clicks on an element in the document with the `link` class
$(document).on('click', '.link', function(e) {
    // Prevent the default action (e.g. submit the form)
    e.preventDefault();

    // Get the URL specified in the form
    var url = e.target.parentElement.action;
    window.location = url;
});
<!DOCTYPE html>
<html>

    <head>
        <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
        <meta charset="utf-8">
        <title>Form buttons as links</title>
    </head>

    <body>
        <!-- Set `action` to the URL you want the button to go to -->
        <form method="get" action="http://stackoverflow.com/questions/2906582/how-to-create-an-html-button-that-acts-like-a-link">
            <!-- Add the class `link` to the button for the event listener -->
            <button type="submit" class="link">Link</button>
        </form>
    </body>

</html>
5

Для HTML 5 и стилизованная кнопка вместе с фоном изображения

<a id="Navigate" href="http://www.google.com">
  <input 
    type="button"
    id="NavigateButton"
    style="
      background-image: url(http://cdn3.blogsdna.com/wp-content/uploads/2010/03/Windows-Phone-7-Series-Icons-Pack.png);
      background-repeat: no-repeat;
      background-position: -272px -112px;
      cursor:pointer;
      height: 40px;
      width: 40px;
      border-radius: 26px;
      border-style: solid;
      border-color:#000;
      border-width: 3px;" title="Navigate"
    />
</a>
  • 4
    Не проверяет При вставке в validator.w3.org/nu/#textarea выдается ошибка: элемент input не должен отображаться как потомок элемента a.
3

Также вы можете использовать кнопку:

Например, в синтаксисе ядра ASP.NET:

// Some other tags
 <form method="post">
      <input asp-for="YourModelPropertyOrYourMethodInputName"
      value="@TheValue" type="hidden" />
      <button type="submit" class="link-button" formaction="/TheDestinationController/TheDestinationActionMethod">
      @(TextValue)
      </button>
  </form>
// Other tags...


<style>
       .link-button {
        background: none !important;
        border: none;
        padding: 0 !important;
        color: #20a8d8;
        cursor: pointer;
    }
</style>
2

Я использовал это для веб-сайта, над которым я сейчас работаю, и он отлично работает! Если вы хотите немного крутого стиля, я поставлю здесь CSS.

input[type="submit"] {
  background-color: white;
  width: 200px;
  border: 3px solid #c9c9c9;
  font-size: 24pt;
  margin: 5px;
  color: #969696;
}

input[type="submit"]:hover {
  color: white;
  background-color: #969696;
  transition: color 0.2s 0.05s ease;
  transition: background-color 0.2s 0.05s ease;
  cursor: pointer;
}
<input type="submit" name="submit" onClick="window.location= 'http://example.com'">

Работаю JSFiddle здесь.

2

Используйте его как data-href="index.html" внутри тега button.

2

Относительно ответа BalusC,

<form action="http://google.com">
    <input type="submit" value="Go to Google">
</form>

Мне нужно было добавить переменные к кнопке, и я не знал, как это сделать. В итоге я использовал тип ввода скрытый. Я думал, что это может быть полезно для других, которые нашли эту страницу, как я.

1

Вы можете использовать JavaScript:

<html>
<button onclick='window.location = "http://www.google.com"'>
            Google
        </button>

</html>

Замените http://www.google.com своим веб-сайтом, не забудьте указать http:// перед URL.

1

Вы также можете установить для type-property кнопок значение "кнопка" (оно не позволяет отправить форму), а затем вложить его в ссылку (оно перенаправляет пользователя).

Таким образом, вы можете иметь другую кнопку в той же форме, которая отправляет форму, в случае необходимости. Я также думаю, что в большинстве случаев это предпочтительнее, чем установка метода формы и действия в качестве ссылки (если это не поисковая форма, я думаю...)

Пример:

<form method="POST" action="/SomePath">
  <input type="text" name="somefield" />
  <a href="www.target.com"><button type="button">Go to Target!</button></a>
  <button type="submit">submit form</button>
</form>

Таким образом, первая кнопка перенаправляет пользователя, а вторая отправляет форму.

Будьте внимательны, чтобы убедиться, что кнопка не вызывает никаких действий, так как это приведет к конфликту. Также, как указал Ариус, вы должны знать, что по вышеприведенной причине это, строго говоря, не считается действительным HTML, согласно стандарту. Однако в Firefox и Chrome он работает, как и ожидалось, но я еще не тестировал его для Internet Explorer.

  • 2
    Элемент «кнопка» не может быть вложен в элемент «а».
  • 0
    согласно стандарту нет, но по моему опыту это работает нормально, хотя. Пока еще не тестировали кросс-браузер, но, по крайней мере, FF и Chrome справляются с этим просто отлично, с ожидаемым поведением.
Показать ещё 2 комментария
1

Люди, которые ответили с помощью атрибутов <a></a> на <button></button>, были полезны.

НО, то недавно я столкнулся с проблемой, когда использовал ссылку внутри <form></form>.

Кнопка теперь рассматривается как кнопка отправки (HTML5). Я пробовал работать и нашел этот метод.

Создайте кнопку стиля CSS, как показано ниже:

.btn-style{
    border : solid 1px #0088cc;
    border-radius : 6px;
    moz-border-radius : 6px;
    -webkit-box-shadow : 0px 0px 2px rgba(0,0,0,1.0);
    -moz-box-shadow : 0px 0px 2px rgba(0,0,0,1.0);
    box-shadow : 0px 0px 2px rgba(0,0,0,1.0);
    font-size : 18px;
    color : #696869;
    padding : 1px 17px;
    background : #eeeeee;
    background : -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(49%,#eeeeee), color-stop(72%,#cccccc), color-stop(100%,#eeeeee));
    background : -moz-linear-gradient(top, #eeeeee 0%, #eeeeee 49%, #cccccc 72%, #eeeeee 100%);
    background : -webkit-linear-gradient(top, #eeeeee 0%, #eeeeee 49%, #cccccc 72%, #eeeeee 100%);
    background : -o-linear-gradient(top, #eeeeee 0%, #eeeeee 49%, #cccccc 72%, #eeeeee 100%);
    background : -ms-linear-gradient(top, #eeeeee 0%, #eeeeee 49%, #cccccc 72%, #eeeeee 100%);
    background : linear-gradient(top, #eeeeee 0%, #eeeeee 49%, #cccccc 72%, #eeeeee 100%);
    filter : progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#eeeeee',GradientType=0 );

}

Или создайте новый здесь: Генератор кнопок CSS

И затем создайте свою ссылку с тегом класса, названным в стиле CSS, который вы создали:

<a href='link.php' class='btn-style'>Link</a>

Здесь скрипка:

JS Fiddle

  • 3
    Установите кнопку type = "button", которая позволит вам нажимать ее, не отправляя форму.
0

7 способов сделать это:

  1. Использование window.location.href= 'URL'
  2. Использование window.location.replace('URL')
  3. Использование window.location = 'URL'
  4. Использование window.open('URL')
  5. Использование window.location.assign('URL')
  6. Использование формы HTML
  7. Использование тега привязки HTML

<!-- Using window.location.href = 'URL' -->
<button onclick='window.location.href = "https://stackoverflow.com"'>
  Click Me
</button>

<!-- Using window.location.replace('URL') -->
<button onclick='window.location.replace("https://stackoverflow.com")'>
  Click Me
</button>

<!-- Using window.location = 'URL' -->
<button onclick='window.location = "https://stackoverflow.com"'>
  Click Me
</button>

<!-- Using window.open('URL') -->
<button onclick='window.open("https://stackoverflow.com","_self","","")'>
  Click Me
</button>

<!-- Using window.location.assign('URL') -->
<button onclick='window.location.assign("http://www.stackoverflow.com")'>
  Click Me
</button>

<!-- Using HTML form -->
<form action='https://stackoverflow.com' method='get'>
  <input type='submit' value='Click Me'/>
</form>

<!-- Using html anchor tag -->
<a href='https://stackoverflow.com'>
  <button>Click Me</button>
</a>
0

Если вы хотите перенаправить страницы, которые находятся на вашем веб-сайте, то здесь мой метод - я добавил атрибут href для кнопки, и onclick назначил this.getAttribute('href') для document.location.href

** Это не будет работать, если вы ссылаетесь на URL вне вашего домена из-за 'X-Frame-Options' в 'sameorigin'.

Образец кода:

<button onclick="document.location.href=this.getAttribute('href');" href="/">Home</button>
0

Если вам нужно, чтобы он выглядел как кнопка, с акцентом на изображение градиента, вы можете сделать это:

<a href="www.yourlink.com" class="btn btn-gradient"><i class="fa fa-home"> Button Text</i></a>
-9
<input class="buttom" type="submit" name="submit" value="GO"/>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню