Saya memiliki markup berikut:
<li id="CN2787">
<img class="fav_star" src="images/fav.png">
<span>Text, text and more text</span>
</li>
Saya ingin agar jika teksnya membungkus, itu tidak masuk ke 'kolom' untuk gambar. Saya tahu saya bisa melakukannya dengan table
(yang saya lakukan) tetapi ini tidak bisa diterapkan karena alasan ini .
Saya telah mencoba yang berikut ini namun tidak berhasil:
li span {width: 100px; margin-left: 20px}
.fav_star {width: 20px}
Saya juga mencoba float: right
.
Terima kasih.
EDIT: Saya ingin terlihat seperti ini:
IMG Text starts here and keeps going... and
wrap starts here.
Tidak seperti ini:
IMG Text starts here and keeps going... and
wrap starts in the space left for the image.
white-space: nowrap;
dili span {...}
, tetapi saya mendapatkan kesan bahwa Anda sedang mencoba untuk melakukan sesuatu yang lainJawaban:
The
span
elemen elemen inline, Anda tidak dapat mengubah lebar dalam CSS.Anda dapat menambahkan CSS berikut ke span Anda sehingga Anda dapat mengubah lebarnya.
display: block;
Cara lain, yang biasanya lebih masuk akal, adalah menggunakan
<p>
elemen sebagai induk untuk Anda<span>
.<li id="CN2787"> <img class="fav_star" src="images/fav.png"> <p> <span>Text, text and more text</span> </p> </li>
Karena
<p>
merupakanblock
elemen, Anda dapat mengatur lebarnya menggunakan CSS, tanpa harus mengubah apa pun.Namun dalam kedua kasus tersebut, karena Anda memiliki elemen blok sekarang, Anda perlu mengapung gambar sehingga teks Anda tidak semuanya berada di bawah gambar Anda.
li p{width: 100px; margin-left: 20px} .fav_star {width: 20px;float:left}
PS Alih-alih
float:left
pada gambar, Anda bisa juga menempatkanfloat:right
padali p
tetapi dalam kasus itu, Anda juga akan perlutext-align:left
untuk meluruskan kembali teks dengan benar.PSS Jika Anda melanjutkan dengan solusi pertama dengan tidak menambahkan
<p>
elemen, CSS Anda akan terlihat seperti ini:li span{width: 100px; margin-left: 20px;display:block} .fav_star {width: 20px;float:left}
sumber
span
menjadip
elemen. Kemudian hanya dua ini tampaknya melakukan trik:li p {margin-left: 40px} .fav_star {float: left}
. Lebar gambar diatur oleh gambar itu sendiri,p
elemennya otomatis ablock
dan saya membiarkan lebarnya saja. Terima kasih untuk ini.display:block
Anda sebaiknya menggunakan adiv
karena untuk itulah (atau gunakan ap
seperti yang juga Anda sarankan). Tidak perlu membungkus teks dua kali - jika Anda menggunakan,p
Anda bisa kehilanganspan
.div
, dalam hal ini, ap
lebih masuk akal. Kehilanganspan
itu agak sepele bagi saya, dan tergantung pada bagaimana Anda menyusun konten Anda.<span>
in a<p>
adalah sihir langsung dari Hogwartz! Bekerja dengan indah!Jawaban yang sangat sederhana untuk masalah ini yang tampaknya menarik perhatian banyak orang:
<img src="url-to-image"> <p>Nullam id dolor id nibh ultricies vehicula ut id elit.</p> img { float: left; } p { overflow: hidden; }
Lihat contoh: http://jsfiddle.net/vandigroup/upKGe/132/
sumber
span
(kasus OP). Adisplay: block
akan dibutuhkan untukspan
. Tapi, menyimpan itu, saya setuju ini adalah solusi yang jauh lebih elegan. Jika ada yang bertanya-tanya apa keajaiban di baliknyaoverflow: hidden
, lihat jawaban saya di bawah ini.Bagi mereka yang menginginkan info latar belakang, berikut adalah artikel singkat yang menjelaskan mengapa
overflow: hidden
berhasil. Ini ada hubungannya dengan apa yang disebut konteks pemformatan blok . Ini adalah bagian dari spesifikasi W3C (yaitu bukan hack) dan pada dasarnya adalah wilayah yang ditempati oleh elemen dengan aliran tipe blok.Setiap kali diterapkan,
overflow: hidden
membuat konteks pemformatan blok baru . Tapi itu bukan satu-satunya properti yang mampu memicu perilaku itu. Mengutip presentasi oleh Fiona Chan dari Sydney Web Apps Group:sumber
Jika Anda ingin
margin-left
mengerjakanspan
elemen, Anda harus membuatnyadisplay: inline-block
ataudisplay:block
juga.sumber
vertical-align: top;
gambar dengan ini, juga.pengaturan
display:flex
untuk teks berhasil untuk saya.sumber
overflow:auto
. Saya yakin ini tidak berfungsi persis sama di semua situasi, tetapi berhasil juga untuk saya.Bungkus div di sekitar gambar dan span dan tambahkan yang berikut ke CSS seperti ini:
HTML
<li id="CN2787"> <div><img class="fav_star" src="images/fav.png"></div> <div><span>Text, text and more text</span></div> </li>
CSS
#CN2787 > div { display: inline-block; vertical-align: top; } #CN2787 > div:first-of-type { width: 35%; } #CN2787 > div:last-of-type { width: 65%; }
KURANG
#CN2787 { > div { display: inline-block; vertical-align: top; } > div:first-of-type { width: 35%; } > div:last-of-type { width: 65%; } }
sumber