Saya ingin membuat tombol HTML yang berfungsi seperti tautan. Jadi, ketika Anda mengklik tombol, itu dialihkan ke halaman. Saya ingin diakses semaksimal mungkin.
Saya juga ingin jadi tidak ada karakter tambahan, atau parameter di URL.
Bagaimana saya bisa mencapai ini?
Berdasarkan jawaban yang diposting sejauh ini, saya saat ini melakukan ini:
<form method="get" action="/page2">
<button type="submit">Continue</button>
</form>
tetapi masalah dengan ini adalah bahwa di Safari dan Internet Explorer , itu menambahkan karakter tanda tanya di akhir URL. Saya perlu menemukan solusi yang tidak menambahkan karakter apa pun di bagian akhir URL.
Ada dua solusi lain untuk melakukan ini: Menggunakan JavaScript atau menata tautan agar terlihat seperti tombol.
Menggunakan JavaScript:
<button onclick="window.location.href='/page2'">Continue</button>
Tapi ini jelas membutuhkan JavaScript, dan karena itu kurang dapat diakses oleh pembaca layar. Titik tautan adalah pergi ke halaman lain. Jadi mencoba membuat tombol bertindak seperti tautan adalah solusi yang salah. Saran saya adalah Anda harus menggunakan tautan dan menatanya agar terlihat seperti tombol .
<a href="/link/to/page2">Continue</a>
?
di URL. Ini disebabkan oleh bentuknyatype="GET"
, ubah ketype="POST"
dan?
pada akhir URL menghilang. Ini karena GET mengirim semua variabel di URL, karenanya?
.GET
akan gagal. Saya masih berpikir bahwa menggunakan tautan masuk akal dengan peringatan bahwa itu tidak akan bereaksi terhadap "bilah spasi" ketika tombol suka aktif tidak. Juga beberapa gaya dan perilaku akan berbeda (seperti draggable). Jika Anda ingin pengalaman "tombol-tautan" yang sebenarnya, meminta pengalihan sisi server untuk menyelesaikan URL dengan?
menghapusnya mungkin juga merupakan opsi.Jawaban:
HTML
Cara HTML biasa adalah dengan meletakkannya di tempat
<form>
Anda menentukan URL target yang diinginkan dalamaction
atribut.Jika perlu, atur CSS
display: inline;
pada formulir agar tetap mengalir dengan teks di sekitarnya. Alih-alih<input type="submit">
dalam contoh di atas, Anda juga dapat menggunakan<button type="submit">
. Satu-satunya perbedaan adalah bahwa<button>
elemen tersebut memungkinkan anak-anak.Secara intuitif Anda berharap dapat menggunakan
<button href="https://google.com">
analog dengan<a>
elemen, tetapi sayangnya tidak, atribut ini tidak ada sesuai dengan spesifikasi HTML .CSS
Jika CSS dibolehkan, cukup gunakan
<a>
yang Anda gaya agar terlihat seperti tombol menggunakan antara lainappearance
properti ( itu hanya tidak didukung di Internet Explorer ).Atau pilih salah satu dari banyak pustaka CSS seperti Bootstrap .
JavaScript
Jika JavaScript diizinkan, atur
window.location.href
.Alih-alih
<input type="button">
dalam contoh di atas, Anda juga dapat menggunakan<button>
. Satu-satunya perbedaan adalah bahwa<button>
elemen tersebut memungkinkan anak-anak.sumber
display: inline
ke formulir untuk menjaga tombol dalam aliran.Perhatikan bahwa
type="button"
atribut itu penting, karena nilai yang hilang standarnya adalah status Tombol Kirim .sumber
Jika itu adalah tampilan visual dari tombol yang Anda cari dalam tag anchor HTML dasar, maka Anda dapat menggunakan kerangka Bootstrap Twitter untuk memformat salah satu dari tautan / tombol ketik HTML berikut ini untuk muncul sebagai tombol. Harap perhatikan perbedaan visual antara versi 2, 3 atau 4 kerangka kerja:
Penampilan sampel Bootstrap (v4) :
Penampilan sampel Bootstrap (v3) :
Penampilan sampel Bootstrap (v2) :
sumber
Menggunakan:
Sayangnya, markup ini tidak lagi valid dalam HTML5 dan tidak akan memvalidasi atau selalu berfungsi seperti yang diharapkan. Gunakan pendekatan lain.
sumber
target
atributnya adalah imo on the edge.Pada HTML5, tombol mendukung
formaction
atribut. Yang terbaik dari semuanya, tidak ada Javascript atau tipu daya yang diperlukan.Peringatan
<form>
tag.<button>
ketik harus "kirim" (atau tidak ditentukan), saya tidak bisa membuatnya bekerja dengan ketik "tombol." Yang memunculkan poin di bawah ini.Referensi: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formaction Dukungan Browser: https://developer.mozilla.org/en-US/docs/Web/ HTML / Elemen / tombol # Browser_compatibility
sumber
formaction
kompatibel sejak " dunia IE " sejak versi 10 dan lebih tinggi<button formaction>
===<form action>
?<form>
di masing-masing contoh kami. Apakahformaction
pada yangbutton
seharusnya menambahkan?
ke pengajuan GET kosong? Dalam JSBin ini sepertinya HTML berperilaku sama persis untuk keduanya.Ini sebenarnya sangat sederhana dan tanpa menggunakan elemen bentuk apa pun. Anda bisa menggunakan tag <a> dengan tombol di dalamnya :).
Seperti ini:
Dan itu akan memuat href ke halaman yang sama. Ingin halaman baru? Gunakan saja
target="_blank"
.EDIT
Beberapa tahun kemudian, sementara solusi saya masih berfungsi, perlu diingat Anda dapat menggunakan banyak CSS untuk membuatnya terlihat apa pun yang Anda inginkan. Ini hanya cara cepat.
sumber
<button type="button">...
agar tidak secara default berfungsi sebagai KirimJika Anda menggunakan formulir di dalam, tambahkan tipe atribut = "reset" bersama dengan elemen tombol. Ini akan mencegah tindakan form.
sumber
type="button"
sumber
input
tidak memiliki tag penutup.input
elemen adalah elemen batal. Itu harus memiliki tag awal tetapi tidak harus memiliki tag akhir.Tampaknya ada tiga solusi untuk masalah ini (semua dengan pro dan kontra).
Solusi 1: Tombol dalam formulir.
Tetapi masalah dengan ini adalah bahwa dalam beberapa versi browser populer seperti Chrome, Safari dan Internet Explorer, itu menambahkan karakter tanda tanya di akhir URL. Jadi dengan kata lain untuk kode di atas, URL Anda akan terlihat seperti ini:
Ada satu cara untuk memperbaikinya, tetapi akan membutuhkan konfigurasi sisi server. Salah satu contoh menggunakan Apache Mod_rewrite akan mengarahkan semua permintaan dengan mengikuti
?
ke URL yang sesuai tanpa?
. Berikut adalah contoh menggunakan .htaccess, tetapi ada utas lengkap di sini :Konfigurasi serupa dapat bervariasi tergantung pada server web dan tumpukan yang digunakan. Jadi ringkasan dari pendekatan ini:
Pro:
Cons:
?
terlihat jelek di beberapa browser. Ini dapat diperbaiki dengan peretasan (dalam beberapa kasus) menggunakan POST daripada GET, tetapi cara bersihnya adalah dengan memiliki pengalihan sisi server. Kelemahan dengan pengalihan sisi server adalah akan menyebabkan panggilan HTTP tambahan untuk tautan ini karena 304 pengalihan.<form>
elemen ekstraSolusi 2: Menggunakan JavaScript.
Anda dapat menggunakan JavaScript untuk memicu onclick dan acara lainnya untuk meniru perilaku tautan menggunakan tombol. Contoh di bawah ini dapat ditingkatkan dan dihapus dari HTML, tetapi hanya ada untuk menggambarkan ide:
Pro:
Cons:
Solusi 3: Jangkar (tautan) bergaya seperti tombol.
Mendesain tautan seperti tombol relatif mudah dan dapat memberikan pengalaman serupa di berbagai peramban. Bootstrap melakukan ini, tetapi juga mudah dicapai sendiri menggunakan gaya sederhana.
Pro:
<form>
bekerja.Cons:
keypress
acara di tombol.Kesimpulan
Solusi # 1 ( Tombol dalam bentuk ) sepertinya yang paling transparan untuk pengguna dengan pekerjaan minimal yang diperlukan. Jika tata letak Anda tidak terpengaruh oleh pilihan ini dan penyesuaian sisi server layak dilakukan, ini adalah opsi yang baik untuk kasus-kasus di mana aksesibilitas adalah prioritas utama (mis. Tautan pada halaman kesalahan atau pesan kesalahan).
Jika JavaScript bukan halangan untuk persyaratan aksesibilitas Anda, maka solusi # 2 ( JavaScript ) akan lebih disukai daripada # 1 dan # 3.
Jika karena alasan tertentu, aksesibilitas sangat penting (JavaScript bukan opsi) tetapi Anda berada dalam situasi di mana desain dan / atau konfigurasi server Anda mencegah Anda menggunakan opsi # 1, maka solusi # 3 ( Jangkar bergaya seperti tombol ) adalah alternatif yang baik untuk menyelesaikan masalah ini dengan dampak kegunaan yang minimal.
sumber
Mengapa tidak letakkan saja tombol Anda di dalam tag referensi misalnya
Ini sepertinya berfungsi dengan baik untuk saya dan tidak menambahkan tag% 20 ke tautan, seperti yang Anda inginkan. Saya telah menggunakan tautan ke google untuk menunjukkan.
Anda tentu saja dapat membungkus ini dalam bentuk tag tetapi tidak perlu.
Ketika menautkan file lokal lain cukup taruh di folder yang sama dan tambahkan nama file sebagai referensi. Atau tentukan lokasi file jika dalam tidak di folder yang sama.
Ini juga tidak menambahkan karakter apa pun di bagian akhir URL, namun memiliki path proyek file sebagai url sebelum diakhiri dengan nama file. misalnya
Jika struktur proyek saya ...
.. menunjukkan folder - menunjukkan file sementara empat | menunjukkan sub direktori atau file di folder induk
..publik
|||| ..html
|||| |||| -main.html
|||| |||| -secondary.html
Jika saya membuka main.html URLnya adalah,
Namun, ketika saya mengklik tombol di dalam main.html untuk mengubah ke secondary.html, URL akan menjadi,
Tidak ada karakter khusus yang disertakan di akhir URL. Saya harap ini membantu. Ngomong-ngomong - (% 20 menunjukkan spasi di URL yang disandikan dan dimasukkan di tempat mereka.)
Catatan: localhost: 0000 jelas tidak akan 0000 Anda akan memiliki nomor port sendiri di sana.
Selanjutnya? _Ijt = xxxxxxxxxxxxxx di akhir dari URL main.html, x ditentukan oleh koneksi Anda sendiri jadi jelas tidak akan sama dengan saya.
Mungkin sepertinya saya menyatakan beberapa poin yang sangat mendasar tetapi saya hanya ingin menjelaskan sebaik mungkin. Terima kasih telah membaca dan saya harap ini setidaknya membantu seseorang. Pemrograman senang.
sumber
Anda cukup menaruh tag di sekitar elemen:
https://jsfiddle.net/hj6gob8b/
sumber
<button>
di dalamnya<a>
.Satu-satunya cara untuk melakukan ini (kecuali untuk ide bentuk cerdik BalusC!) Adalah dengan menambahkan
onclick
acara JavaScript ke tombol, yang tidak baik untuk aksesibilitas.Sudahkah Anda mempertimbangkan menata tautan normal seperti tombol? Anda tidak dapat mencapai tombol spesifik OS seperti itu, tetapi itu masih cara IMO terbaik.
sumber
Mengikuti apa yang telah ditambahkan beberapa orang lainnya, Anda dapat menjadi liar hanya dengan menggunakan kelas CSS sederhana tanpa PHP, tanpa kode jQuery , hanya HTML dan CSS sederhana.
Buat kelas CSS dan tambahkan ke jangkar Anda. Kode di bawah.
Hanya itu saja. Ini sangat mudah dilakukan dan memungkinkan Anda menjadi kreatif seperti yang Anda inginkan. Anda mengontrol warna, ukuran, bentuk (radius), dll. Untuk lebih jelasnya, lihat situs tempat saya menemukannya .
sumber
Jika Anda ingin menghindari harus menggunakan formulir atau input dan Anda mencari tautan yang tampak tombol, Anda dapat membuat tautan tombol yang terlihat bagus dengan pembungkus div, jangkar, dan
h1
tag. Anda berpotensi menginginkan ini sehingga Anda dapat dengan leluasa menempatkan tombol tautan di sekitar halaman Anda. Ini sangat berguna untuk tombol yang memusatkan secara horizontal dan memiliki teks yang terpusat secara vertikal di dalamnya. Begini caranya:Tombol Anda akan terdiri dari tiga bagian bersarang: pembungkus div, jangkar, dan h1, seperti:
Berikut sebuah jsFiddle untuk check it out dan bermain-main dengan hal itu.
Manfaat dari pengaturan ini: 1. Membuat tampilan pembungkus div: blok memudahkan pemusatan (menggunakan margin: 0 otomatis) dan posisi (sementara <a> sejajar dan lebih sulit untuk diposisikan dan tidak mungkin untuk memusatkan).
Anda bisa membuat tampilan <a>: blokir, pindahkan, dan gaya sebagai tombol, tetapi kemudian menyelaraskan teks secara vertikal di dalamnya menjadi sulit.
Ini memungkinkan Anda untuk membuat tampilan <a>: inline-table dan tampilan <h1>: table-cell, yang memungkinkan Anda untuk menggunakan perataan vertikal: tengah pada <h1> dan memusatkannya secara vertikal (yang selalu bagus di sebuah tombol). Ya, Anda bisa menggunakan padding, tetapi jika Anda ingin tombol Anda mengubah ukuran secara dinamis, itu tidak akan sebersih ini.
Terkadang saat Anda menanamkan <a> dalam div, hanya teks yang dapat diklik, pengaturan ini membuat seluruh tombol dapat diklik.
Anda tidak harus berurusan dengan formulir jika Anda hanya mencoba untuk pindah ke halaman lain. Formulir dimaksudkan untuk memasukkan informasi, dan harus disediakan untuk itu.
Memungkinkan Anda memisahkan satu sama lain antara penataan tombol dan penataan teks (keunggulan peregangan? Tentu, tetapi CSS bisa terlihat buruk sehingga bagus untuk menguraikannya).
Ini jelas membuat hidup saya lebih mudah menata situs web seluler untuk layar berukuran variabel.
sumber
@ Nicolas, berikut ini berfungsi untuk saya karena milik Anda tidak memilikinya
type="button"
karena itu mulai berperilaku sebagai jenis kirim..karena saya sudah punya satu jenis kirim. Tidak berfungsi untuk saya .... dan sekarang Anda dapat menambahkan kelas ke tombol atau<a>
untuk mendapatkan tata letak yang diperlukan:sumber
Pilihan lain adalah membuat tautan di tombol:
Kemudian gunakan CSS untuk menata tautan dan tombol, sehingga tautan tersebut menghabiskan seluruh ruang di dalam tombol (sehingga tidak ada klik yang salah oleh pengguna):
Saya telah membuat demo di sini .
sumber
Jika Anda ingin membuat tombol yang digunakan untuk URL di mana saja, buat kelas tombol untuk jangkar.
sumber
Saya tahu sudah ada banyak jawaban yang diajukan, tetapi tidak satupun dari mereka yang benar-benar mengatasi masalah tersebut. Inilah yang saya ambil solusinya:
<form method="get">
metode yang OP mulai. Ini bekerja dengan sangat baik, tetapi terkadang menambahkan?
ke URL. Itu?
adalah masalah utama.?
tidak berakhir ditambahkan ke URL. Ini akan mundur dengan mulus ke<form>
metode untuk sebagian kecil pengguna yang tidak mengaktifkan JavaScript.<form>
atau<button>
bahkan ada. Saya menggunakan jQuery dalam contoh ini, karena cepat dan mudah, tetapi juga bisa dilakukan di JavaScript 'vanilla'.<form>
action
atribut.Contoh JSBin (cuplikan kode tidak dapat mengikuti tautan)
sumber
7 Cara untuk melakukan itu:
window.location.href = 'URL'
window.location.replace('URL')
window.location = 'URL'
window.open('URL')
window.location.assign('URL')
sumber
Untuk HTML 5 dan tombol gaya bersama dengan latar belakang gambar
sumber
Anda juga dapat menggunakan tombol:
Misalnya, dalam sintaks ASP.NET Core :
sumber
jika Anda menggunakan Sertifikat SSL
sumber
Orang yang menjawab menggunakan
<a></a>
atribut pada a<button></button>
sangat membantu.TETAPI baru-baru ini, saya mengalami masalah ketika saya menggunakan tautan di dalam a
<form></form>
.Tombol sekarang dianggap seperti / sebagai tombol kirim (HTML5). Saya sudah mencoba mencari jalan keluar, dan menemukan metode ini.
Buat tombol gaya CSS seperti di bawah ini:
Atau buat yang baru di sini: CSS Button Generator
Dan kemudian buat tautan Anda dengan tag kelas yang dinamai sesuai gaya CSS yang Anda buat:
Ini biola:
JS Fiddle
sumber
Saya menggunakan ini untuk situs web yang sedang saya kerjakan dan berfungsi dengan baik !. Jika Anda ingin gaya keren juga saya akan meletakkan CSS di sini.
Bekerja JSFiddle di sini .
sumber
Anda juga dapat mengatur tombol
type-property
ke "tombol" (itu membuatnya tidak mengirimkan formulir), dan kemudian bersarang di dalam tautan (membuatnya mengarahkan pengguna).Dengan cara ini Anda bisa memiliki tombol lain dalam bentuk yang sama yang mengirimkan formulir, jika diperlukan. Saya juga berpikir ini lebih disukai dalam kebanyakan kasus daripada mengatur metode formulir dan tindakan untuk menjadi tautan (kecuali itu bentuk pencarian yang saya kira ...)
Contoh:
Dengan cara ini tombol pertama mengarahkan ulang pengguna, sedangkan yang kedua mengirimkan formulir.
Berhati-hatilah untuk memastikan tombol tidak memicu tindakan apa pun, karena itu akan menimbulkan konflik. Juga seperti yang ditunjukkan Arius, Anda harus menyadari bahwa, untuk alasan di atas, ini tidak sepenuhnya dianggap sebagai HTML yang valid, menurut standar. Namun itu berfungsi seperti yang diharapkan di Firefox dan Chrome, tapi saya belum mengujinya untuk Internet Explorer.
sumber
Anda dapat menggunakan javascript:
Ganti
http://www.google.com
dengan situs web Anda, pastikan untuk memasukkanhttp://
sebelum URL.sumber
Dalam JavaScript
Dalam HTML
sumber
Ketik
window.location
dan tekanenter
di konsol browser Anda. Maka Anda bisa mendapatkan ide yang jelas tentang apa yanglocation
terkandung di dalamnyaAnda dapat menetapkan nilai apa pun dari sini.
Jadi Untuk mengarahkan ulang halaman lain Anda dapat menetapkan
href
nilai dengan tautan Anda.Dalam Kasus Anda-
sumber
Jika yang Anda butuhkan adalah tampilannya seperti tombol, dengan penekanan pada gambar gradien , Anda bisa melakukan ini:
sumber
Jika Anda ingin mengarahkan ulang ke halaman-halaman yang berada di dalam situs web Anda, maka inilah metode saya - saya telah menambahkan atribut href ke tombol, dan onclick memberikan this.getAttribute ('href') ke document.location.href
** Ini tidak akan berfungsi jika Anda mereferensikan untuk url di luar domain Anda karena 'X-Frame-Options' ke 'sameorigin'.
Kode sampel:
sumber