Pusatkan gambar menggunakan pusat pelurusan teks?

511

Apakah properti text-align: center;itu cara yang baik untuk memusatkan gambar menggunakan CSS?

img {
    text-align: center;
}
Desainer web
sumber
jsfiddle.net/j6q4d810/1 Ini berfungsi dengan baik dengan lebar dan tinggi apa pun
gmarsi

Jawaban:

1087

Itu tidak akan berfungsi karena text-alignproperti berlaku untuk memblokir kontainer, bukan elemen inline, dan imgmerupakan elemen inline. Lihat spesifikasi W3C .

Gunakan ini sebagai gantinya:

img.center {
    display: block;
    margin: 0 auto;
}
<div style="border: 1px solid black;">
<img class="center" src ="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a">

</div>

Tuan
sumber
5
Saya mencoba metode ini dan berhasil! tetapi ketika saya mencoba 2 gambar, itu tidak berhasil, itu hanya menumpuk di atas satu sama lain seperti totem, ada ide bagaimana menyelaraskan 2 gambar pada baris yang sama di tengah?
PatrickGamboa
1
Bagaimana ini tidak didukung oleh W3C? Bisakah Anda memberikan tautan untuk mendukung klaim itu?
Hantu Madara
1
@SecondRikudo: text-alignadalah untuk teks centering, seperti namanya. Untuk elemen blok, margin: 0 auto;adalah pendekatan yang direkomendasikan .
Mrchief
4
@Mrchief Gambar adalah elemen sebaris, bukan blok. text-alignbekerja dengan baik pada mereka.
Hantu Madara
4
Penjelasan itu agak aneh bukan? Anda mengatakan 'perataan teks' berlaku untuk blok dan bukan inline, yang saya percaya, maka Anda benar-benar mengubahnya menjadi elemen blok namun menghindari penggunaan perataan teks. Maksud saya kode Anda berfungsi, tetapi paragraf itu harus sepenuhnya ditulis ulang, imo.
Octopus
118

Itu tidak selalu berhasil ... jika tidak, coba:

img {
    display: block;
    margin: 0 auto;
}
codecraftnap
sumber
87

Saya menemukan posting ini , dan itu berhasil untuk saya:

img {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
}
<div style="border: 1px solid black; position:relative; min-height: 200px">
  <img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a">

</div>

(Penjajaran vertikal dan horisontal)

Shai Reznik - HiRez.io
sumber
48

Cara lain untuk melakukannya adalah memusatkan paragraf terlampir:

<p style="text-align:center; border:1px solid black"><img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a"></p>

EssamSoft
sumber
19
Saya tidak setuju, saya pikir ini menjawab pertanyaan. OP bertanya apakah properti text-align: centermerupakan cara yang baik untuk memusatkan gambar, dan tidak menentukan bahwa properti harus menjadi bagian dari tag img. Jawaban ini menggunakan properti yang dimaksud dalam upaya untuk memberikan solusi (yang berfungsi).
MandM
2
Ini berfungsi untuk saya ketika tampilan: blok, dll tidak.
matthewsheets
14

Anda dapat melakukan:

<center><img src="..." /></center>

Dimitris Maniatis
sumber
9
sayangnya, <center>tidak didukung di HTML5, tapi sial, itu berfungsi.
Ayrat
13

Sebenarnya, satu-satunya masalah dengan kode Anda adalah bahwa text-alignatribut berlaku untuk teks (ya, gambar dihitung sebagai teks) di dalam tag. Anda akan ingin menempatkan spantag di sekitar gambar dan mengatur nya gaya text-align: center, sebagai begitu:

span.centerImage {
     text-align: center;
}
<span class="centerImage"><img src="http://placehold.it/60/60" /></span>

Gambar akan dipusatkan. Menanggapi pertanyaan Anda, ini adalah cara termudah dan paling mudah untuk memusatkan gambar, selama Anda ingat untuk menerapkan aturan pada gambar yang mengandung span(atau div).

Kode monyet
sumber
2
Sebuah spanelemen display: inline;secara default, sehingga berjalan ini ke dalam masalah yang sama seperti menempatkan text-align: center;pada imgitu sendiri. Anda harus mengatur spanagar display: block;atau menggantinya dengan divagar ini berfungsi.
Web_Designer
10

Ada tiga metode untuk memusatkan elemen yang dapat saya sarankan:

  1. Menggunakan text-alignproperti

        .parent {
        text-align: center;
    }
        <div class="parent">
        <img src="https://placehold.it/60/60" />
    </div>

  2. Menggunakan marginproperti

    img {
        display: block;
        margin: 0 auto;
    }
    <img src="https://placehold.it/60/60" />

  3. Menggunakan positionproperti

    img {
        display: block;
        position: relative;
        left: -50%;
    }
    .parent {
        position: absolute;
        left: 50%;
    }
    <div class="parent">
        <img src="https://placehold.it/60/60" />
    </div>


Metode pertama dan kedua hanya berfungsi jika induk setidaknya selebar gambar. Ketika gambar lebih lebar dari induknya, gambar tidak akan tetap berada di tengah !!!

Tetapi: Metode ketiga adalah cara yang baik untuk itu!

Ini sebuah contoh:

img {
    display: block;
    position: relative;
    left: -50%;
}
.parent {
    position: absolute;
    left: 50%;
}
<div class="parent">
    <img src="http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/img_01.jpg" />
</div>

Amin Fazlali
sumber
# 3 sangat tepat bahwa saya sudah bisa ke pusat sebuah imgdi dalam dibenarkan divdalam WebViewdengan injeksi CSS. Terima kasih!
JorgeAmVF
8

Hanya jika Anda perlu mendukung versi Internet Explorer kuno.

Pendekatan modern dilakukan margin: 0 autodi CSS Anda.

Contoh di sini: http://jsfiddle.net/bKRMY/

HTML:

<p>Hello the following image is centered</p>
<p class="pic"><img src="https://twimg0-a.akamaihd.net/profile_images/440228301/StackoverflowLogo_reasonably_small.png"/></p>
<p>Did it work?</p>

CSS:

p.pic {
    width: 48px;
    margin: 0 auto;
}

Satu-satunya masalah di sini adalah bahwa lebar paragraf harus sama dengan lebar gambar . Jika Anda tidak meletakkan lebar pada paragraf, itu tidak akan berfungsi, karena akan menganggap 100% dan gambar Anda akan disejajarkan ke kiri, kecuali tentu saja Anda gunakan text-align:center.

Cobalah biola dan bereksperimenlah dengannya jika Anda mau.

Ray Toal
sumber
6
img{
    display: block;
    margin-right: auto;
    margin-left: auto;      
 }
Dream Hunter - hashADH
sumber
1
pemburu mimpi, jika Anda mengusulkan cara alternatif memusatkan gambar menggunakan css, maka Anda perlu sedikit memperluas pertanyaan Anda. Anda dapat menjelaskan bagaimana dan mengapa alternatif yang diusulkan ini akan menjadi cara yang lebih baik untuk mencapai tujuan penanya, mungkin termasuk tautan ke dokumentasi yang relevan. Itu akan membuatnya lebih bermanfaat bagi mereka, dan juga lebih bermanfaat bagi pembaca situs lain yang mencari solusi untuk masalah yang sama.
Vince Bowdren
6

Jika Anda menggunakan kelas dengan gambar maka yang berikut akan dilakukan

class {
    display: block;
    margin: 0 auto;
}

Jika hanya gambar di kelas tertentu yang ingin Anda luruskan tengah maka yang berikut akan dilakukan:

class img {
    display: block;
    margin: 0 auto;
}
Baig
sumber
Saya akan mengubah yang paling bawah menjadi img.classatau menambahkan img.classversi juga. Terima kasih untuk ini.
Chuck Savage
6

Pada wadah yang menyimpan gambar, Anda dapat menggunakan CSS 3 Flexbox untuk memusatkan gambar di dalamnya dengan sempurna, baik secara vertikal maupun horizontal.

Anggap Anda memiliki <div class = "container"> sebagai pemegang gambar:

Maka sebagai CSS Anda harus menggunakan:

.container {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
}

Dan ini akan membuat semua konten Anda di dalam div ini terpusat dengan sempurna.

Santoni
sumber
apa dalam konten justify yang bisa digunakan untuk mengatur align di <p> ​​??
Manjitha teshara
Inilah yang saya inginkan. Terima kasih.
Dionne Kim
5

Solusi paling sederhana yang saya temukan adalah menambahkan ini ke elemen img saya:

style="display:block;margin:auto;"

Sepertinya saya tidak perlu menambahkan "0" sebelum "otomatis" seperti yang disarankan oleh orang lain. Mungkin itu cara yang tepat, tetapi berfungsi cukup baik untuk tujuan saya tanpa "0" juga. Setidaknya di Firefox, Chrome, dan Edge terbaru .

Panu Logic
sumber
hanya auto mean auto auto auto autodan 0 automeans 0 auto 0 auto... dan secara otomatis auto untuk margin bawah dan atas adalah 0dengan menambahkan 0 atau tidak persis sama dalam hal ini yang membuat Anda menjawab duplikat-n dari yang sudah disediakan
Temani Afif
Komentar Anda menjelaskan mengapa itu berhasil. Bagus. Tapi yang mana dari jawaban sebelumnya yang mengatakan 'otomatis' tanpa '0' juga berfungsi? Apakah fakta itu tidak layak disebut?
Panu Logic
dalam hal ini harus menjadi komentar, karena dalam kasus khusus ini keduanya sama. Saya tidak berpikir kita harus punya jawaban untuk semua nilai-nilai yang setara, dalam hal ini kita dapat menulis: auto, auto auto, auto auto auto, auto auto auto auto, 0 auto 0, 0 auto, 0 auto 0 auto, dan seterusnya ... Anda berpikir masing-masing berhak mendapatkan jawaban yang berbeda? Saya kira tidak.
Temani Afif
Saya tidak akan mengatakan bahwa jika dua segmen CSS yang berbeda menghasilkan hasil akhir yang sama, kedua segmen CSS itu "sama". Output mereka sama tetapi kode-sumbernya tidak sama. Sama seperti pada umumnya Anda dapat menulis sejumlah program berbeda yang menghasilkan keluaran yang sama. Maka penting untuk mengetahui (dan memberi tahu orang-orang yang bertanya) program "setara" mana yang tampaknya paling sederhana dan terpendek untuk ditulis.
Panu Logic
dan semua ini harus ditulis dalam satu jawaban. Itu sebabnya jawaban ini lebih cocok sebagai komentar daripada jawaban yang sama sekali baru. Kita harus menyajikan semua hal yang setara bersama-sama dan tidak menjadikannya fitur terpisah yang mungkin terdengar sama sekali berbeda karena bukan itu yang terjadi [pendapat saya, tidak perlu setuju dengan itu atau membantah yang sebaliknya]. Dan saya tidak berbicara tentang program berbeda yang menghasilkan output yang sama, ini adalah hal yang sangat berbeda karena logikanya mungkin tidak sama. Di sini kita berbicara tentang properti yang sama dan nilai yang sama (seperti i++sama dengan i+=1)
Temani Afif
4

Cukup ganti induk induk :)

Coba yang ini pada properti induk:

text-align:center
Mo.
sumber
3

Anda dapat menggunakan text-align: centerpada induk dan mengubah imgke display: inline-block→ karena itu berperilaku seperti elemen teks dan akan dipusatkan jika induk memiliki lebar!

img {
    display: inline-block
}
Roti Doml
sumber
2

Saya akan menggunakan div untuk memusatkan menyelaraskan gambar. Seperti dalam:

<div align="center"><img src="your_image_source"/></div>
Rotimi
sumber
2

Jika Anda ingin mengatur gambar sebagai latar belakang, saya punya solusi:

.image {
    background-image: url(yourimage.jpg);
    background-position: center;
}
Wojciechu
sumber
2

Untuk memusatkan gambar non-latar belakang tergantung pada apakah Anda ingin menampilkan gambar sebagai inline (perilaku default) atau elemen blok.

Kasus inline

Jika Anda ingin mempertahankan perilaku default properti CSS tampilan gambar, Anda harus membungkus gambar Anda di dalam elemen blok lain yang harus Anda atur text-align: center;

Kasus blok

Jika Anda ingin menganggap gambar sebagai elemen blok sendiri, maka text-alignproperti tidak masuk akal, dan Anda harus melakukan ini sebagai gantinya:

IMG.display {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

Jawaban untuk pertanyaan Anda:

Apakah properti text-align: center; cara yang baik untuk memusatkan gambar menggunakan CSS?

Iya dan tidak.

  • Ya, jika gambar adalah satu-satunya elemen di dalam bungkusnya.
  • Tidak, jika Anda memiliki elemen lain di dalam pembungkus gambar karena semua elemen anak-anak yang merupakan saudara kandung gambar akan mewarisi text-alignproperti: dan mungkin Anda tidak akan menyukai efek samping ini.

Referensi

  1. Daftar elemen sebaris
  2. Hal-hal keterpusatan
Billal Begueradj
sumber
1

Satu lagi cara untuk mengukur - tampilkan:

img {
  width: 60%; /* Or required size of image. */
  margin-left: 20% /* Or scale it to move image. */
  margin-right: 20% /* It doesn't matters much if using left and width */
}
Kishore Banala
sumber
1

Gunakan ini untuk imgCSS Anda :

img {
  margin-right: auto;
  margin-left: auto;
}
treb
sumber
0

display: blockdengan margin: 0tidak bekerja untuk saya, juga tidak membungkus dengan text-align: centerelemen.

Ini solusi saya:

img.center {
    position: absolute;
    transform: translateX(-50%);
    left: 50%;
}

translateX didukung oleh sebagian besar browser

OverCoder
sumber
1
yang Anda maksud margin: 0 auto;? Kuncinya adalah pengaturan margin-leftdan margin-rightuntuk auto. margin: 0 auto;hanyalah jalan pintas untuk itu.
Web_Designer
1
@Web_Designer saya mencoba margin: 0 auto, margin: 0dan margin: auto, tidak bekerja. Perhatikan bahwa di inspektur Chrome, saat menggunakan margin: 0 auto, menyerang properti dengan tanda seru yang mengatakan invalid property value(atau apa pun artinya itu)
OverCoder
Saya pikir Anda maksudkan "position: absolute;" bukannya "display: absolute;"
WebDevDaniel
Terima kasih @WebDevDaniel untuk menunjukkan kesalahan ketik. Oh, ngomong-ngomong, Anda mungkin ingin menggunakan relativeposisi alih-alih absolute, keduanya bekerja dengan cukup baik.
OverCoder
0

Saya menemukan bahwa jika saya memiliki gambar dan beberapa teks di dalam div, maka saya dapat menggunakantext-align:center untuk menyelaraskan teks dan gambar dalam satu gerakan.

HTML:

    <div class="picture-group">
        <h2 class="picture-title">Picture #1</h2>
        <img src="http://lorempixel.com/99/100/" alt="" class="picture-img" />
        <p class="picture-caption">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Temporibus sapiente fuga, quia?</p>
    </div>

CSS:

.picture-group {
  border: 1px solid black;
  width: 25%;
  float: left;
  height: 300px;
  #overflow:scroll;
  padding: 5px;
  text-align:center;
}

CodePen: https://codepen.io/artforlife/pen/MoBzrL?editors=1100

Ahli Psikis
sumber
0

Terkadang kami langsung menambahkan konten dan gambar pada administrator WordPress di dalam halaman. Ketika kami menyisipkan gambar di dalam konten dan ingin menyelaraskan pusat itu. Kode ditampilkan sebagai:

 **<p><img src="https://abcxyz.com/demo/wp-content/uploads/2018/04/1.jpg" alt=""></p>**

Dalam hal ini Anda dapat menambahkan konten CSS seperti ini:

article p img{
    margin: 0 auto;
    display: block;
    text-align: center;
    float: none;
}
Sangrai
sumber
0

Menggunakan:

<dev class="col-sm-8" style="text-align: center;"><img src="{{URL('image/car-trouble-with-clipping-path.jpg')}}" ></dev>

Saya pikir ini adalah cara untuk memusatkan gambar dalam kerangka Laravel.

Manjitha teshara
sumber
0
.img-container {
  display: flex;
}

img {
  margin: auto;
}

ini akan membuat pusat gambar secara vertikal dan horizontal

Anupama
sumber