Bagaimana Anda bisa menyelaraskan gambar di dalam sebuah berisi div
?
Contoh
Dalam contoh saya, saya perlu memusatkan secara vertikal <img>
di <div>
dengan class ="frame
":
<div class="frame" style="height: 25px;">
<img src="http://jsfiddle.net/img/logo.png" />
</div>
.frame
Ketinggian sudah diperbaiki dan tinggi gambar tidak diketahui. Saya dapat menambahkan elemen baru di.frame
jika itu satu-satunya solusi. Saya mencoba melakukan ini di Internet Explorer 7 dan kemudian, WebKit, Gecko.
Lihat jsfiddle di sini .
.frame {
height: 25px; /* Equals maximum image height */
line-height: 25px;
width: 160px;
border: 1px solid red;
text-align: center;
margin: 1em 0;
}
img {
background: #3A6F9A;
vertical-align: middle;
max-height: 25px;
max-width: 160px;
}
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=250 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=25 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=23 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=21 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=19 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=17 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=15 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=13 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=11 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=9 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=7 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=5 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=3 />
</div>
css
image
vertical-alignment
Arnaud Le Blanc
sumber
sumber
Jawaban:
Satu-satunya cara (dan lintas-browser terbaik) seperti yang saya tahu adalah menggunakan
inline-block
penolong denganheight: 100%
danvertical-align: middle
pada kedua elemen.Jadi ada solusinya: http://jsfiddle.net/kizu/4RPFa/4570/
Tampilkan cuplikan kode
Atau, jika Anda tidak ingin memiliki elemen tambahan di browser modern dan tidak keberatan menggunakan ekspresi Internet Explorer, Anda dapat menggunakan elemen pseudo dan menambahkannya ke Internet Explorer menggunakan Ekspresi yang mudah digunakan, yang hanya berjalan satu kali per elemen , jadi tidak akan ada masalah kinerja:
Solusi dengan
:before
danexpression()
untuk Internet Explorer: http://jsfiddle.net/kizu/4RPFa/4571/Tampilkan cuplikan kode
Bagaimana itu bekerja:
Ketika Anda memiliki dua
inline-block
elemen yang saling berdekatan, Anda dapat menyelaraskan satu sama lain ke sisi yang lain, sehinggavertical-align: middle
Anda akan mendapatkan sesuatu seperti ini:Saat Anda memiliki blok dengan ketinggian tetap (dalam
px
,em
atau unit absolut lainnya), Anda dapat mengatur ketinggian blok dalam%
.inline-block
denganheight: 100%
di blok dengan ketinggian tetap akan menyelaraskaninline-block
elemen lain di dalamnya (<img/>
dalam kasus Anda) secara vertikal di dekatnya.sumber
.frame
dan.frame:before
. Sebuah solusi yang diusulkan di sini adalah untuk menambahkanmargin-left: -4px
ke.frame
. Semoga ini membantu.<img src=""/>
BUKAN bagian dalam<span></span>
helper yang ditambahkan. Itu di luar. Aku baru saja menarik setiap helai rambut kami dengan tidak menyadarinya.Ini mungkin berguna:
sumber
position:fixed;
solusi matejkramny adalah awal yang baik, tetapi gambar yang terlalu besar memiliki rasio yang salah.
Ini garpu saya:
Demo: https://jsbin.com/lidebapomi/edit?html,css,output
HTML:
CSS:
sumber
top: 0;
. Ini menghasilkan hanyabottom: 0;
diterapkan secara vertikal.Solusi tiga baris:
Ini berlaku untuk apa saja.
Dari sini .
sumber
position: absolute;
karena Anda membutuhkan lebar yang mengalir.Sebuah murni solusi CSS:
Hal-hal kunci
sumber
Untuk solusi yang lebih modern, dan jika tidak perlu mendukung browser lawas, Anda dapat melakukan ini:
Inilah Pena: http://codepen.io/ricardozea/pen/aa0ee8e6021087b6e2460664a0fa3f3e
sumber
align-self
untuk item individualalign-self
adalah bahwa item fleksibel akan meregangkan ketinggian wadah induk.Dengan cara ini Anda dapat memusatkan gambar secara vertikal ( demo ):
sumber
font-size: 0
untukdiv
. Untuk wadah yang cukup besar Anda bisa melewatkannya tetapi jika Andadiv
100px dan img adalah 80px itu akan menjadi beberapa piksel lebih rendah.Anda juga dapat menggunakan Flexbox untuk mencapai hasil yang benar:
sumber
Ada solusi super mudah dengan flexbox!
sumber
Anda dapat mencoba mengatur CSS PI
display: table-cell; vertical-align: middle;
sumber
PI
"?Anda dapat mencoba kode di bawah ini:
sumber
Solusi gambar latar belakang
Saya menghapus elemen gambar sama sekali dan mengaturnya sebagai latar belakang div dengan kelas
.frame
http://jsfiddle.net/URVKa/2/
Setidaknya ini berfungsi dengan baik di Internet Explorer 8, Firefox 6 dan Chrome 13.
Saya memeriksa, dan solusi ini tidak akan berfungsi untuk mengecilkan gambar yang lebih tinggi dari 25 piksel. Ada properti yang disebut
background-size
yang mengatur ukuran elemen, tetapi CSS 3 yang akan bertentangan dengan persyaratan Internet Explorer 7.Saya akan menyarankan Anda untuk mengulang prioritas dan desain browser Anda untuk browser terbaik yang tersedia, atau mendapatkan beberapa kode sisi server untuk mengubah ukuran gambar jika Anda ingin menggunakan solusi ini.
sumber
Bayangkan sudah
Dan css:
sumber
Anda bisa melakukan ini:
Demo
http://jsfiddle.net/DZ8vW/1
CSS
JavaScript
sumber
http://jsfiddle.net/MBs64/
Properti utama adalah
display: table-cell;
untuk.frame
.Div.frame
ditampilkan sesuai dengan ini, jadi Anda harus membungkusnya dalam elemen blok.Ini berfungsi di Firefox, Opera, Chrome, Safari dan Internet Explorer 8 (dan lebih baru).
MEMPERBARUI
Untuk Internet Explorer 7 kita perlu menambahkan ekspresi CSS:
sumber
Solusi saya: http://jsfiddle.net/XNAj6/2/
sumber
Ini berfungsi untuk browser modern (2016 saat mengedit) seperti yang ditunjukkan dalam demo ini pada codepen
Sangat penting bagi Anda untuk memberikan gambar pada kelas atau menggunakan pewarisan untuk menargetkan gambar yang Anda perlukan terpusat. Dalam contoh ini kami menggunakan
.frame img {}
sehingga hanya gambar yang dibungkus oleh div dengan kelas yang.frame
akan ditargetkan.sumber
Coba solusi ini dengan CSS murni http://jsfiddle.net/sandeep/4RPFa/72/
Mungkin itu adalah masalah utama dengan HTML Anda. Anda tidak menggunakan tanda kutip ketika Anda mendefinisikan c
lass
&image height
dalam HTML Anda.CSS:
Ketika saya bekerja dengan
img
tag itu menyisakan 3 piksel hingga 2 piksel ruang daritop
. Sekarang saya berkurangline-height
, dan itu berfungsi.CSS:
The
line-height
properti diberikan berbeda di browser yang berbeda. Jadi, kita harus mendefinisikanline-height
browser properti yang berbeda .Lihat contoh ini: http://jsfiddle.net/sandeep/4be8t/11/
Lihat contoh ini tentang
line-height
perbedaan di berbagai browser: perbedaan ketinggian input di Firefox dan Chromesumber
Saya tidak yakin tentang Internet Explorer, tetapi di bawah Firefox dan Chrome, jika Anda memiliki
img
dalamdiv
wadah, isi CSS berikut harus bekerja. Setidaknya bagi saya itu berfungsi dengan baik:sumber
display:table-cell;
tidak menerima% sebagai lebarSolusi menggunakan tabel dan sel tabel
Kadang-kadang itu harus diselesaikan dengan menampilkan sebagai table / table-cell. Misalnya, layar judul cepat. Ini adalah cara yang direkomendasikan oleh W3 juga. Saya sarankan Anda memeriksa tautan ini yang disebut Memusatkan blok atau gambar dari W3C.org.
Kiat yang digunakan di sini adalah:
Secara pribadi saya sebenarnya tidak setuju tentang menggunakan pembantu untuk tujuan ini.
sumber
Cara mudah yang bekerja untuk saya:
Ini bekerja untuk Google Chrome dengan sangat baik. Coba yang ini di browser yang berbeda.
sumber
Untuk memusatkan gambar di dalam wadah (bisa berupa logo) di samping beberapa teks seperti ini:
Pada dasarnya Anda membungkus gambar
sumber
Jika Anda dapat hidup dengan margin berukuran piksel, cukup tambahkan
font-size: 1px;
ke.frame
. Tapi ingat, bahwa sekarang pada.frame
1em = 1px, yang berarti, Anda perlu mengatur margin dalam piksel juga.http://jsfiddle.net/feeela/4RPFa/96/
Sekarang tidak lagi terpusat di Opera ...
sumber
Saya memiliki masalah yang sama. Ini bekerja untuk saya:
sumber
Anda bisa menggunakan ini:
sumber
Menggunakan
table
dantable-cell
metode melakukan pekerjaan, khususnya karena Anda menargetkan beberapa browser lama juga, saya membuat cuplikan untuk Anda yang dapat Anda jalankan dan periksa hasilnya:sumber
Saya telah bermain-main dengan menggunakan bantalan untuk perataan tengah. Anda perlu menentukan ukuran luar-wadah tingkat atas, tetapi wadah dalam harus mengubah ukuran, dan Anda dapat mengatur padding pada nilai persentase yang berbeda.
jsfiddle
sumber
Solusi terbaik adalah itu
sumber
Gunakan yang ini:
Dan Anda bisa berbeda
font-size
.sumber
Ingin menyelaraskan gambar yang ada setelah teks / judul dan keduanya di dalam div?
Lihat di JSfiddle atau Run Code Snippet.
Pastikan untuk memiliki ID atau kelas di semua elemen Anda (div, img, judul, dll.).
Bagi saya berfungsi solusi ini di semua browser (untuk perangkat seluler Anda harus menyesuaikan kode Anda dengan: @ media).
sumber