Apakah tinggi dan lebar tidak berlaku untuk span?


254

Pertanyaan noob total, tapi di sini.

CSS

.product__specfield_8_arrow {

    /*background-image:url(../../upload/orng_bg_arrow.png);
    background-repeat:no-repeat;*/
    background-color:#fc0;
    width:50px !important;
    height:33px !important;
    border: 1px solid #dddddd;
    border-left:none;
    border-radius:5px;
    -moz-border-radius:5px;
    -webkit-border-radius:5px;
    border-bottom-left-radius:0px;
    border-top-left-radius:0px;
    -moz-border-radius-bottomleft:0px;
    -moz-border-radius-topleft:0px;
    -webkit-border-bottom-left-radius:0px;
    -webkit-border-top-left-radius:0px;
    margin:0;
    padding:2px;
    cursor:pointer;
}​​​

HTML

<span class="product__specfield_8_arrow">&nbsp;</span>

Biola

Pada dasarnya saya mencoba untuk meniru tombol, membuat rentang (atau sesuatu) terlihat seperti tombol di sebelah bidang input yang sebenarnya tidak perlu menjadi salah satu karena generator pengisian otomatis yang menghasilkan kesalahan onEnter. Kupikir ini akan menjadi perbaikan cepat untuk saat ini tetapi jelas tidak.

Terima kasih.


2
Anda mungkin juga ingin memeriksa stackoverflow.com/questions/2343989/…
Edan Maor

2
Juga periksa standar, khususnya w3.org/TR/CSS2/visudet.html#the-width-property dan w3.org/TR/CSS2/visudet.html#the-height-property , yang menyatakan properti "Berlaku untuk: semua elemen kecuali elemen sebaris yang tidak diganti, baris tabel, dan grup baris "
outis

Jawaban:


426

Span adalah elemen inline. Tidak memiliki lebar atau tinggi.

Anda bisa mengubahnya menjadi elemen tingkat blok, lalu akan menerima arahan dimensi Anda.

span.product__specfield_8_arrow
{
    display: inline-block; /* or block */
}

9
Terima kasih, perbaiki. Saya mencoba tampilan: blok sebelumnya tetapi blok inline memperbaikinya.
Kyle

21
Itulah masalahnya. Jika display: blockditentukan, span berhenti menjadi elemen inline dan elemen setelah itu muncul di baris berikutnya. Saya membutuhkan elemen yang sejajar, tetapi bisa dengan lebar yang diinginkan.
Paul

6
solusi yang lebih baik adalah tampilan pengguna: inline-block
Anant

37

Coba gunakan divbukan spanatau menggunakan CSS display: block;atau display: inline-block;- spansecara default elemen inline yang tidak dapat mengambil widthdan heightproperti.


9
div bukan pengganti semantik untuk rentang waktu. Rentang adalah wadah teks sedangkan div adalah wadah tata letak. Menerapkan gaya blok-inline seperti Seni Pengembang telah menyarankan adalah jawaban yang benar.
Brian Scott

3
Pertanyaan tidak memberikan konteks untuk menunjukkan bahwa div secara inheren tidak pantas secara semantik.
Isaac

1
Sebenarnya, membaca markup op itu benar-benar terlihat seperti elemen yang dimaksud sedang digunakan untuk hanya menampilkan gambar latar belakang. Dalam hal ini div sebenarnya akan lebih tepat. -1 dihapus dari komentar asli Isaac.
Brian Scott

Lebih lanjut, saya mencoba menggunakan div sebelum beralih ke span, selalu ditampilkan di bawah div sebelumnya .. Jadi lanjutkan dengan Span :)
Kyle

22

Terinspirasi dari @Hamed, saya menambahkan yang berikut ini dan berhasil untuk saya:

display: inline-block; overflow: hidden; 

11

Rentang membutuhkan lebar dan tinggi hanya ketika kita membuatnya elemen blok.

span {display:block;}

14
Saya pikir display: inline-block;lebih baik
151291

Dengan melakukan ini, Anda akan berubah untuk semua rentang, saya sarankan menggunakan kelas.
Hola Soy Edu Feliz Navidad

9

Sesuai komentar dari @Paul, Jika tampilan: blok ditentukan, span berhenti menjadi elemen inline dan elemen setelah muncul di baris berikutnya.

Saya datang ke sini untuk mencari solusi untuk masalah tinggi bentang saya dan saya mendapat solusi sendiri

Menambahkan overflow:hidden;dan memasukkannya secara inline akan menyelesaikan masalah yang baru saja diuji dalam mode IE8 Quirks


Saya terus melihat overflow:hidden;dalam konteks ini. "Konten terpotong, tanpa bilah gulir" kata MDN . Tampaknya berlawanan dengan intuisi. Apa fungsinya di sini?
Bob Stein

8

spans secara default ditampilkan sebaris, yang berarti mereka tidak memiliki tinggi dan lebar.

Coba tambahkan display: blockrentang Anda.


6

Rentang dimulai sebagai elemen sebaris. Anda dapat mengubah atribut tampilan untuk diblokir, misalnya, dan atribut tinggi / lebarnya akan mulai berlaku.


2

span {display:block;} juga menambah line-break.

Untuk menghindarinya, gunakan span {display:inline-block;}dan kemudian Anda bisa menambahkan lebar dan tinggi ke elemen sebaris, dan Anda juga bisa menyelaraskannya di dalam blok:

span {
        display:inline-block;
        width: 5em;
        font-weight: normal;
        text-align: center
     }

lebih lanjut di sini

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.