Padding placeholder css HTML5


133

Saya telah melihat posting ini dan mencoba semua yang saya bisa untuk mengganti padding untuk placeholder saya tetapi sayangnya, sepertinya tidak mau bekerja sama.

Bagaimanapun, ini adalah kode untuk css. ( EDIT : Ini adalah css yang dihasilkan dari sass)

#search {
  margin-top: 1px;
  display: inline;
  float: left;
  margin-left: 10px;
  margin-right: 10px;
  width: 220px;
}

#search form {
  position: relative;
}

#search input {
  padding: 0 10px 0 29px;
  color: #555555;
  border: none;
  background: url('/images/bg_searchbar.png?1296191141') no-repeat;
  width: 180px;
  height: 29px;
  overflow: hidden;
}

#search input:hover {
  color: #00ccff;
  background-position: 0px -32px;
}

Dan inilah html sederhana:

<div id="search">
  <form>
    <input type="text" value="" placeholder="Search..." name="q" autocomplete="off" class="">
  </form>
  <div id="jquery-live-search" style="display: block; position: absolute; top: 15px; width: 219px;">
    <ul id="search-results" class="dropdown">
    </ul>
  </div>
</div>

Cukup mudah? placeholder tidak aktif karena beberapa alasan tetapi ketika Anda mencoba mengetik di bidang input, teksnya rata. Tampaknya Anda hanya dapat mengubah warna (untuk webkit) placeholder, tetapi jika saya mencoba mengedit bantalan input yang berisi, itu merusak desain input!mencabut rambut

Berikut ini adalah layar placeholder dan bidang input dengan input teks:

placeholder input teks

EDIT :

Untuk saat ini saya telah menggunakan plugin jquery ini .

Ini berfungsi langsung dari kotak dan itu memperbaiki masalah chrome saya. Saya masih ingin mengungkap apa masalahnya (jika ada hubungannya dengan MY chrome atau sesuatu)

Saya cukup yakin itu bukan gaya karena John Catterfeld memperbanyaknya tanpa masalah, jadi saya berharap seseorang di luar sana masih bisa mengarahkan saya ke arah yang benar tentang mengapa hal ini terjadi pada saya (krom klien saya juga. Jadi ini mungkin asli Chrome / OSX jika John menggunakan windows)


2
Bisakah Anda memberikan CSS yang dihasilkan? Itu akan jauh lebih mudah untuk dikerjakan dibandingkan dengan sumber SASS.
RoToRa

+1 Plugin itu mengagumkan - sederhana dan memiliki hak opsi yang saya butuhkan. Mungkin solusi placeholder terbaik yang saya temukan sampai sekarang.
easwee

Jika ada yang punya masalah dengan pengaturan bootstrap, dua opsi ini membantu: font-size: large; bukannya px; dan garis-tinggi: normal;
necker

Jawaban:


229

Saya mendapat masalah yang sama.

Saya memperbaikinya dengan menghapus ketinggian garis dari input saya. Periksa apakah ada beberapa garis yang menyebabkan masalah


6
Salah. Dengan elemen input, placeholder tidak dipengaruhi oleh ketinggian garis, tetapi padding bukan solusi terbaik. Yang terbaik adalah menggunakan (dan saya tahu biasanya tidak pernah melakukan apa-apa, tetapi dalam hal ini memang) properti CSS VERTICAL-ALIGN.
RIK

1
Ya, secara mengejutkan, bahwa DID memperbaiki masalah tersebut. Dan teks yang diketik masih tetap terpusat secara vertikal bahkan tanpa bantuan ketinggian garis.
hndcrftd

59
ketika tidak ada garis-ketinggian pada input secara langsung, kemudian menambahkan line-height: normal;melakukan trik untuk saya
philfreo

Pokoknya Anda harus menambahkan tinggi-line untuk browser yaitu, tetapi yang melakukan pekerjaan untuk safari
Kaloyan Stamatov

95

Saya memiliki masalah yang sama, masalah saya adalah dengan side padding, dan solusinya adalah dengan indentasi teks, saya tidak menyadari bahwa indentasi teks mempengaruhi posisi sisi placeholder.

input{
  text-indent: 10px;
}

28

Jika Anda ingin mempertahankan ketinggian garis dan memaksa placeholder untuk memiliki yang sama, Anda dapat langsung mengedit placeholder CSS sejak versi browser yang lebih baru. Itu berhasil bagi saya:

input::-webkit-input-placeholder { /* WebKit browsers */
  line-height: 1.5em;
}
input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
  line-height: 1.5em;
}
input::-moz-placeholder { /* Mozilla Firefox 19+ */
  line-height: 1.5em;
}
input:-ms-input-placeholder { /* Internet Explorer 10+ */
  line-height: 1.5em;
}


2

Menghapus ketinggian garis memang membuat teks Anda sejajar dengan teks-tempat Anda, tetapi itu tidak menyelesaikan masalah Anda dengan benar karena Anda perlu menyesuaikan desain Anda dengan cacat ini (itu bukan bug). Menambahkan vertikal-align juga tidak akan membantu. Saya belum mencoba di semua browser, tetapi pasti tidak bekerja di Safari 5.1.4.

Saya telah mendengar tentang perbaikan jQuery untuk ini, itu bukan dukungan placeholder lintas-browser (jQuery.placeholder), tetapi untuk penampung penataan gaya, tapi saya belum menemukannya.

Sementara itu, Anda dapat menyelesaikan ke tabel di halaman ini yang menunjukkan dukungan browser yang berbeda untuk gaya yang berbeda.

Sunting: Ditemukan plugin! jquery.placeholder.min.js memberi Anda kemampuan styling penuh dan dukungan lintas-browser ke dalam tawar-menawar.


mencoba menemukan perbaikan non-placeholder karena saya sudah menggunakan plugin jquery di atas :) terima kasih atas bantuannya!
Berkarat

Perlu diingat bahwa ini adalah dua plugin yang berbeda. Saya tidak yakin apa yang Anda gunakan (demo tidak berfungsi di salah satu browser saya), tetapi yang ini menggunakan atribut placeholder dari elemen, dan secara dinamis membuat rentang yang diberikan di atas bidang input, yang memberikan kemungkinan penataan gaya maksimal.
zykadelic

2

Saya punya masalah, yang muncul hanya di internet explorer. Kolom input ditata

height:38px;
line-height:38px;

Sayangnya di IE placeholder awal muncul tidak pada posisi yang benar. Tetapi ketika saya telah mengklik bidang dan kemudian meninggalkan bidang ini, placeholder muncul di posisi yang tepat.

Solusi saya adalah mengatur:

line-height:normal;

2

Pengaturan line-height: 0px;memperbaikinya untuk saya di Chrome


2
Bisakah Anda menjelaskan apa yang ini menambah jawaban yang diterima dari empat tahun lalu?
Nathan Tuggy

1
@ NathanTuggy kepada saya jawaban yang diterima menyarankan agar Anda menghapus line-heightatribut sepenuhnya dari elemen. Bagi saya yang tidak melakukan apa-apa, dan apa yang memperbaiki masalah bagi saya adalah untuk mengaturline-height: 0px
JobJob

Sama di sini, inilah yang sebenarnya memperbaiki masalah bagi saya.
aeroson

1

Saya telah membuat biola menggunakan tangkapan layar Anda sebagai gambar latar belakang dan menghapus mark-up tambahan, dan tampaknya berfungsi dengan baik

http://jsfiddle.net/fLdQG/2/ (diperlukan browser webkit)

Apakah ini Bekerja untukmu? Jika tidak, dapatkah Anda memperbarui biola dengan mark-up dan CSS yang tepat?


hmm saya memeriksa tautannya dan itu tidak berhasil untuk saya juga. apakah Anda pikir ada plugin / sesuatu di chrome saya yang menyebabkannya? tangkapan layar: grab.by/8OFf
terkorosi

memeriksanya menggunakan safari dan berfungsi. tidakkah chrome dan safari membuat hal yang sama?
Berkarat

Hmm, saya tidak mengetahui plugin yang akan mempengaruhi tata letak Anda seperti ini, tetapi Chrome dan Safari sama-sama berfungsi dengan baik untuk saya (dan ya, mereka harus membuat hal yang sama).
ajcw

1
saya menggunakan 9.0.597.84 (chrome) di mac. yang kamu gunakan
Berkarat

Saya menggunakan Chrome 8.0.552.237 pada Windows 7.
ajcw

1

Saya perhatikan masalah ini saat saya memperbarui Chrome di os x ke rilis stabil terbaru (9.0.597.94) jadi ini adalah bug Chrome dan mudah-mudahan akan diperbaiki.

Saya tergoda untuk tidak mencoba mengatasi hal ini dan hanya menunggu perbaikannya. Itu hanya akan berarti lebih banyak pekerjaan menghilangkannya.


mmm jadi sudah dikonfirmasi? apakah ada cara untuk "menurunkan versi" chrome kami untuk memeriksa apakah benar-benar chrome?
Berkarat

1
ini adalah 2013 dan saya masih memiliki masalah ini pada versi terbaru chrome: Versi 27.0.1453.116 m
Postscripter

1

Placeholder tidak terpengaruh oleh line-heightdanpadding tidak konsisten pada browser.

Saya telah menemukan solusi lain.

VERTICAL-ALIGN. Ini mungkin satu-satunya waktu kerjanya tetapi coba itu dan mengacaukan banyak baris kode CSS.


2
tidak melakukan apa pun untuk saya.
Postscriptter

1

Hapus ketinggian garis atau atur menggunakan bantalan ... ini berfungsi di semua browser


1

Saya menemukan jawaban yang memperbaiki rasa frustrasi saya mengenai hal ini di blog John Catterfeld .

... Chrome (v20-30) menerapkan hampir semua gaya tetapi dengan peringatan utama - gaya placeholder tidak mengubah ukuran kotak input, jadi jauhi hal-hal seperti tinggi garis dan bantalan bagian atas atau bawah.

Jika Anda menggunakan ketinggian garis atau bantalan, Anda akan frustrasi dengan placeholder yang dihasilkan. Saya belum menemukan jalan keluar sampai saat ini.


1

Jika Anda ingin memindahkan teks placeholder ke kanan dan meninggalkan kursor di ruang kosong, Anda perlu menambahkan spasi di awal atribut placeholder:

<input type="email" placeholder="  Your email" />

1

Saya telah menguji hampir semua metode yang diberikan di sini di halaman ini untuk aplikasi Angular saya. Hanya saya menemukan solusi melalui &nbsp;sisipan yaitu spasi

Bahan Sudut

<input matInput type="text" class="pl-2" placeholder="&nbsp;&nbsp;Email">

Bahan Non Sudut

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>

<div class="container m-3 d-flex flex-column align-items-center justify-content-around" style="height:100px;">
<input type="text" class="pl-0" placeholder="Email with no Padding" style="width:240px;">
<input type="text" class="pl-3" placeholder="Email with 1 rem padding" style="width:240px;">
</div>

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.