Я хотел бы создать кнопку HTML, которая действует как ссылка. Таким образом, когда вы нажимаете кнопку, он перенаправляет на страницу. Я хотел бы, чтобы это было максимально доступно.
Я также хотел бы, чтобы в URL не было никаких дополнительных символов или параметров.
Как мне этого добиться?
Основываясь на ответах, опубликованных до сих пор, я в настоящее время делаю это:
<form method="get" action="/page2">
<button type="submit">Continue</button>
</form>
но проблема в том, что в Safari и Internet Explorer он добавляет знак вопроса в конце URL. Мне нужно найти решение, которое не добавляет символы в конец URL.
Для этого есть два других решения: использование JavaScript или стилизация ссылки, чтобы она выглядела как кнопка.
Используя JavaScript:
<button onclick="window.location.href='/page2'">Continue</button>
Но для этого, очевидно, требуется JavaScript, и по этой причине он менее доступен для программ чтения с экрана. Смысл ссылки - перейти на другую страницу. Поэтому попытка заставить кнопку действовать как ссылка - неправильное решение. Я предлагаю вам использовать ссылку и стилизовать ее, чтобы она выглядела как кнопка .
<a href="/link/to/page2">Continue</a>
?
в URL. Это вызвано тем, что форма былаtype="GET"
изменена,type="POST"
и?
в конце URL-адреса исчезнет. Это происходит потому , что GET передает все переменные в URL, следовательно?
.GET
это потерпит неудачу. Я все еще думаю, что использование ссылки имеет смысл с оговоркой, что она не будет реагировать на «пробел», когда активна кнопка, как это делает. Также некоторые стили и поведение будут отличаться (например, перетаскиваемый). Если вы хотите истинное взаимодействие с кнопками, перенаправление на стороне сервера для завершения URL-адреса?
для его удаления также может быть вариантом.Ответы:
HTML
Простой HTML-способ заключается в том, чтобы поместить его в то место,
<form>
где вы указываете целевой URL-адрес вaction
атрибуте.Если необходимо, установите CSS
display: inline;
на форме, чтобы она оставалась в потоке с окружающим текстом. Вместо<input type="submit">
приведенного выше примера вы также можете использовать<button type="submit">
. Разница лишь в том, что этот<button>
элемент позволяет детям.Вы интуитивно ожидаете, что сможете использовать
<button href="https://google.com">
аналог с<a>
элементом, но, к сожалению, нет, этот атрибут не существует в соответствии со спецификацией HTML .CSS
Если CSS разрешен, просто используйте
<a>
стиль, который вы стилизуете, чтобы выглядеть как кнопка, используя, среди прочего,appearance
свойство ( это не поддерживается только в Internet Explorer ).Или выберите одну из тех многих библиотек CSS, как Bootstrap .
JavaScript
Если JavaScript разрешен, установите
window.location.href
.Вместо
<input type="button">
приведенного выше примера вы также можете использовать<button>
. Разница лишь в том, что этот<button>
элемент позволяет детям.источник
display: inline
в форму, чтобы держать кнопку в потоке.Обратите внимание, что
type="button"
атрибут важен, поскольку его отсутствующее значение по умолчанию - состояние кнопки «Отправить» .источник
Если это внешний вид кнопки, которую вы ищете в базовом теге привязки HTML, то вы можете использовать платформу Twitter Bootstrap для форматирования любой из следующих общих ссылок / кнопок типа HTML для отображения в виде кнопки. Обратите внимание на визуальные различия между версией 2, 3 или 4 платформы:
Образец Bootstrap (v4) :
Образец Bootstrap (v3) :
Образец Bootstrap (v2) :
источник
Использование:
К сожалению, эта разметка больше не действительна в HTML5 и не будет ни проверять, ни всегда работать так, как ожидалось. Используйте другой подход.
источник
target
атрибут imo на краю.Начиная с HTML5, кнопки поддерживают
formaction
атрибут. Лучше всего, никакой Javascript или хитрости не требуется.Предостережения
<form>
тегами.<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
источник
formaction
совместим с " IE мир " начиная с версии 10 и выше<button formaction>
===<form action>
?<form>
в каждом из наших примеров. Естьformaction
наbutton
предполагается добавить?
к пустому представлению GET? В этом JSBin похоже, что HTML ведет себя одинаково для обоих.Это на самом деле очень просто и без использования каких-либо элементов формы. Вы можете просто использовать тег <a> с кнопкой внутри :).
Нравится:
И он загрузит href на ту же страницу. Хотите новую страницу? Просто используйте
target="_blank"
.РЕДАКТИРОВАТЬ
Пару лет спустя, пока мое решение все еще работает, имейте в виду, что вы можете использовать много CSS, чтобы он выглядел как угодно. Это был просто быстрый способ.
источник
<button type="button">...
так, чтобы он по умолчанию не выполнял функцию отправкиЕсли вы используете внутреннюю форму, добавьте атрибут type = "reset" вместе с элементом button. Это предотвратит действие формы.
источник
type="button"
источник
input
не имеет конечного тега.input
элемент является пустым элементом. Он должен иметь начальный тег, но не должен иметь конечный тег.Кажется, есть три решения этой проблемы (все с за и против).
Решение 1: Кнопка в форме.
Но проблема в том, что в некоторых версиях популярных браузеров, таких как Chrome, Safari и Internet Explorer, он добавляет знак вопроса в конце URL. Другими словами, код выше вашего URL будет выглядеть так:
Есть один способ исправить это, но это потребует настройки на стороне сервера. Одним из примеров использования Apache Mod_rewrite было бы перенаправить все запросы с завершающим
?
на их соответствующий URL без?
. Ниже приведен пример использования .htaccess, но есть полная резьба здесь :Подобные конфигурации могут различаться в зависимости от веб-сервера и используемого стека. Итак, краткое изложение этого подхода:
Плюсы:
Минусы:
?
выглядит некрасиво в некоторых браузерах. Это может быть исправлено хаком (в некоторых случаях), использующим POST вместо GET, но чистый способ - перенаправление на стороне сервера. Недостатком перенаправления на стороне сервера является то, что он вызовет дополнительный HTTP-вызов для этих ссылок из-за перенаправления 304.<form>
элементРешение 2. Использование JavaScript.
Вы можете использовать JavaScript для запуска onclick и других событий, чтобы имитировать поведение ссылки с помощью кнопки. Приведенный ниже пример можно улучшить и удалить из HTML, но он просто иллюстрирует идею:
Плюсы:
Минусы:
Решение 3: Якорь (ссылка) в стиле кнопки.
Стилизовать ссылку, например, кнопку , относительно легко, и она может обеспечить одинаковые возможности в разных браузерах. Bootstrap делает это, но этого также легко достичь самостоятельно, используя простые стили.
Плюсы:
<form>
работать.Минусы:
keypress
события на кнопках.Вывод
Решение № 1 ( кнопка в форме ) кажется наиболее прозрачным для пользователей с минимальными затратами труда. Если этот выбор не влияет на ваш макет и возможна настройка на стороне сервера, это хороший вариант для случаев, когда доступность является главным приоритетом (например, ссылки на странице ошибок или сообщения об ошибках).
Если JavaScript не является препятствием для ваших требований к доступности, то решение № 2 ( JavaScript ) будет предпочтительнее, чем № 1 и № 3.
Если по какой-то причине доступность является жизненно важной (JavaScript не является опцией), но вы находитесь в ситуации, когда ваш дизайн и / или конфигурация вашего сервера не позволяют использовать опцию № 1, тогда решение № 3 ( привязка в стиле кнопки ) является хорошей альтернативой для решения этой проблемы с минимальным влиянием на удобство использования.
источник
Почему бы просто не разместить свою кнопку внутри ссылочного тега, например
Это, кажется, работает идеально для меня и не добавляет тегов% 20 к ссылке, как вы этого хотите. Я использовал ссылку на Google, чтобы продемонстрировать.
Конечно, вы можете обернуть это в тег формы, но это не обязательно.
При связывании другого локального файла просто поместите его в ту же папку и добавьте имя файла в качестве ссылки. Или укажите местоположение файла, если в не находится в той же папке.
Это также не добавляет никаких символов в конец URL-адреса, однако в нем есть путь к файлу проекта в качестве URL-адреса до окончания имени файла. например
Если бы моя структура проекта была ...
.. обозначает папку - обозначает файл, а четыре | обозначить подкаталог или файл в родительской папке
..public
|||| ..html
|||| |||| -main.html
|||| |||| -secondary.html
Если я открою main.html, URL будет
Тем не менее, когда я нажал кнопку внутри main.html, чтобы перейти на файл second.html, URL-адрес
Никаких специальных символов в конце URL нет. Надеюсь, это поможет. Кстати - (% 20 обозначает пробел в URL, который он закодировал и вставил вместо них.)
Примечание: localhost: 0000, очевидно, не будет 0000, у вас там будет свой собственный номер порта.
Кроме того,? _Ijt = xxxxxxxxxxxxxx в конце URL-адреса main.html, x определяется вашим собственным соединением, поэтому, очевидно, оно не будет равно моему.
Может показаться, что я излагаю некоторые действительно основные положения, но я просто хочу объяснить как можно лучше. Спасибо за чтение, и я надеюсь, что это поможет кому-то по крайней мере. Удачного программирования.
источник
Вы можете просто поместить тег вокруг элемента:
https://jsfiddle.net/hj6gob8b/
источник
<button>
внутри<a>
.Единственный способ сделать это (за исключением гениальной идеи BalusC!) - добавить
onclick
событие JavaScript к кнопке, что не очень удобно для доступности.Рассматривали ли вы стиль обычной ссылки, как кнопка? Вы не можете добиться конкретных кнопок ОС таким образом, но это по-прежнему лучший способ IMO.
источник
Придерживаясь того, что добавили несколько других, вы можете сойти с ума, просто используя простой класс CSS без PHP, без кода jQuery , просто с простым HTML и CSS.
Создайте класс CSS и добавьте его в свой якорь. Код ниже.
Вот и все. Это очень легко сделать, и вы можете быть настолько креативными, насколько захотите. Вы управляете цветами, размером, формами (радиусом) и т. Д. Для получения более подробной информации посетите сайт, на котором я нашел это .
источник
Если вы хотите избежать использования формы или ввода и ищете ссылку, похожую на кнопку, вы можете создать красивые ссылки для кнопок с оболочкой div, якорем и
h1
тегом. Возможно, вы захотите этого, поэтому можете свободно размещать кнопку ссылки вокруг своей страницы. Это особенно полезно для горизонтальных центрирующих кнопок и имеющих вертикально центрированный текст внутри них. Вот как:Ваша кнопка будет состоять из трех вложенных частей: div-оболочки, якоря и h1, вот так:
Вот в jsFiddle , чтобы проверить его и играть с ним.
Преимущества этой настройки: 1. Создание отображения div-оболочки: блок облегчает центрирование (с помощью поля: 0 авто) и положение (в то время как <a> встроен и его труднее позиционировать, а центрировать его невозможно).
Вы можете просто сделать <a> display: block, переместить его и стилизовать как кнопку, но тогда вертикальное выравнивание текста внутри него становится трудным.
Это позволяет вам создавать <a> display: inline-table и <h1> display: table-cell, что позволяет вам использовать вертикальное выравнивание: среднее на <h1> и центрировать его вертикально (что всегда удобно при кнопка). Да, вы можете использовать отступы, но если вы хотите, чтобы размер кнопки изменялся динамически, это будет не так уж и чисто.
Иногда, когда вы встраиваете <a> в элемент div, кликабелен только текст, эта настройка делает всю кнопку нажатой.
Вам не нужно иметь дело с формами, если вы просто пытаетесь перейти на другую страницу. Формы предназначены для ввода информации, и они должны быть зарезервированы для этого.
Позволяет вам четко отделить стили кнопок и текста друг от друга (преимущество растягивания? Конечно, но CSS может выглядеть неприятно, поэтому его удобно разложить).
Это определенно облегчило мою жизнь, создавая мобильный веб-сайт для экранов переменного размера.
источник
@ Николас, следующие у меня сработали, так как у вас не было,
type="button"
из-за чего он начал вести себя как тип отправки ... так как у меня уже есть один тип отправки. Он не работал для меня .... и теперь вы можете добавить класс на кнопку или<a>
чтобы получить нужный макет:источник
Другой вариант - создать ссылку в кнопке:
Затем используйте CSS для стилизации ссылки и кнопки, чтобы ссылка занимала все пространство внутри кнопки (чтобы пользователь не пропустил щелчок мышью):
Я создал демо здесь .
источник
Если вы хотите создать кнопку, которая используется для URL в любом месте, создайте класс кнопки для привязки.
источник
Я знаю, что было дано много ответов, но ни один из них, похоже, не решал проблему. Вот мой взгляд на решение:
<form method="get">
метод, с которого начинается OP. Это работает очень хорошо, но иногда добавляет?
к URL. Это?
главная проблема.?
конечном итоге не добавлялся к URL. Он будет легко возвращаться к<form>
методу для очень небольшой части пользователей, у которых не включен JavaScript.<form>
или<button>
даже существовать. В этом примере я использую jQuery, потому что это быстро и просто, но это можно сделать и в «ванильном» JavaScript.<form>
action
атрибуте.Пример JSBin (фрагмент кода не может переходить по ссылкам)
источник
7 способов сделать это:
window.location.href = 'URL'
window.location.replace('URL')
window.location = 'URL'
window.open('URL')
window.location.assign('URL')
источник
Для HTML 5 и стилизованной кнопки вместе с фоновым изображением
источник
Также вы можете использовать кнопку:
Например, в синтаксисе ASP.NET Core :
источник
если вы используете сертификат SSL
источник
Люди, которые ответили, используя
<a></a>
атрибуты,<button></button>
были полезны.НО тогда недавно я столкнулся с проблемой, когда использовал ссылку внутри
<form></form>
.Кнопка теперь рассматривается как / как кнопка отправки (HTML5). Я попытался обойти и нашел этот метод.
Создайте кнопку в стиле CSS, как показано ниже:
Или создайте новый здесь: CSS Button Generator
А затем создайте свою ссылку с тегом класса, названным в честь созданного вами стиля CSS:
Вот скрипка:
JS Fiddle
источник
Я использовал это для веб-сайта, над которым я сейчас работаю, и он отлично работает! Если вы хотите немного крутого стиля, я поставлю здесь CSS.
Работаю JSFiddle здесь .
источник
Вы также можете установить кнопки
type-property
на «кнопку» (она не отправляет форму), а затем вложить ее в ссылку (перенаправить пользователя).Таким образом, вы можете иметь другую кнопку в той же форме, которая отправляет форму, в случае необходимости. Я также думаю, что в большинстве случаев это предпочтительнее, чем установка метода формы и действия в качестве ссылки (если, конечно, это не поисковая форма ...)
Пример:
Таким образом, первая кнопка перенаправляет пользователя, а вторая отправляет форму.
Будьте осторожны, чтобы убедиться, что кнопка не вызывает никаких действий, так как это приведет к конфликту. Также, как указал Ариус, вы должны знать, что по вышеуказанной причине, строго говоря, это не считается действительным HTML, согласно стандарту. Однако в Firefox и Chrome он работает должным образом, но я еще не тестировал его для Internet Explorer.
источник
Вы можете использовать JavaScript:
Замените
http://www.google.com
на свой веб-сайт, обязательно укажитеhttp://
перед URL.источник
В JavaScript
В HTML
источник
Введите
window.location
и нажмитеenter
в консоли браузера. Тогда вы можете получить четкое представление о том, чтоlocation
содержитВы можете установить любое значение здесь.
Так что для перенаправления на другую страницу вы можете установить
href
значение с помощью вашей ссылки.В твоем случае-
источник
Если вам нужно, чтобы она выглядела как кнопка с акцентом на градиентное изображение , вы можете сделать это:
источник
Если вы хотите перенаправить страницы, которые находятся на вашем веб-сайте, то вот мой метод - я добавил атрибут href для кнопки, и onclick назначил this.getAttribute ('href') для document.location.href
** Это не будет работать, если вы ссылаетесь на URL вне вашего домена из-за 'X-Frame-Options' в 'sameorigin'.
Образец кода:
источник