Saya mengalami masalah saat memusatkan elemen yang atributnya position
disetel ke absolute
. Adakah yang tahu mengapa gambar tidak terpusat?
body {
text-align: center;
}
#slideshowWrapper {
margin-top: 50px;
text-align: center;
}
ul#slideshow {
list-style: none;
position: relative;
margin: auto;
}
ul#slideshow li {
position: absolute;
}
ul#slideshow li img {
border: 1px solid #ccc;
padding: 4px;
height: 450px;
}
<body>
<div id="slideshowWrapper">
<ul id="slideshow">
<li><img src="img/dummy1.JPG" alt="Dummy 1" /></li>
<li><img src="img/piano_unlicened.JPG" alt="Dummy 2" /></li>
</ul>
</div>
</body>
html
css
css-position
centering
pengguna1098278
sumber
sumber
Jawaban:
Jika Anda telah menetapkan lebar, Anda dapat menggunakan:
sumber
Tanpa mengetahui
width
/height
dari elemen 1 yang diposisikan , masih dimungkinkan untuk menyelaraskannya sebagai berikut:CONTOH DI SINI
Perlu dicatat bahwa CSS Transform didukung di IE9 dan di atas . (Awalan vendor dihilangkan karena singkatnya)
Penjelasan
Menambahkan
top
/left
dari50%
bergerak atas / kiri tepi margin elemen ke tengah orangtua, dantranslate()
fungsi dengan (negatif) nilai-50%
bergerak elemen dengan setengah dari ukurannya. Karenanya elemen akan diposisikan di tengah.Ini karena nilai persentase pada
top
/left
properti relatif terhadap tinggi / lebar elemen induk (yang membuat blok yang mengandung).Sementara nilai persentase pada fungsi transformasi relatif terhadap lebar / tinggi elemen itu sendiri (Sebenarnya ini mengacu pada ukuran kotak pembatas ) .
translate()
Untuk penyejajaran searah, gunakan
translateX(-50%)
atautranslateY(-50%)
sebaliknya.1. Unsur dengan
position
selainstatic
. Yaiturelative
,absolute
,fixed
nilai-nilai.sumber
position: absolute; left: 50%; transform: translateX(-50%);
, centering vertikal:position: absolute; top: 50%; transform: translateY(-50%);
.translate
properti itu, menerjemahkan elemen dengan ukurannya sendiri , Tidak peduli ukuran induknya.Memusatkan sesuatu yang
absolute
diposisikan agak berbelit dalam CSS.Ubah
margin-left
ke (negatif) setengah lebar elemen yang Anda coba pusatkan.sumber
Pusat tengah selaras vertikal dan horizontal
Catatan: Elemen harus memiliki lebar dan tinggi yang harus ditetapkan
sumber
height
set agar ini berfungsi.Trik CSS sederhana, cukup tambahkan:
Ini berfungsi pada gambar dan teks.
sumber
Jika Anda ingin memusatkan elemen absolut
Jika Anda ingin wadah dipusatkan dari kiri ke kanan, tetapi tidak dengan atas ke bawah
Jika Anda ingin wadah dipusatkan ke atas, terlepas dari kiri ke kanan
Pembaruan pada 15 Desember 2015
Yah saya belajar trik baru ini beberapa bulan yang lalu. Dengan asumsi bahwa Anda memiliki elemen induk relatif.
Inilah elemen absolut Anda.
Dengan ini, saya pikir itu jawaban yang lebih baik daripada solusi lama saya. Karena Anda tidak perlu menentukan lebar DAN tinggi. Yang ini mengadaptasi konten elemen itu sendiri.
sumber
Untuk memusatkan elemen "posisi: absolut".
sumber
Ini bekerja untuk saya:
sumber
ke tengah posisi aa: atribut absolut yang perlu Anda atur kiri: 50% dan margin-kiri: -50% dari lebar div.
untuk vertical center absolute Anda harus melakukan hal yang sama bukan dengan kiri hanya dengan atas. (CATATAN: html dan badan harus memiliki tinggi minimum 100%;)
dan dapat dikombinasikan untuk keduanya
sumber
lihat demo di: http://jsfiddle.net/MohammadDayeh/HrZLC/
text-align: center
; bekerja denganposition: absolute
elemen saat menambahkanleft: 0; right: 0;
sumber
Sederhana, terbaik:
Maka Anda perlu memasukkan tag img Anda ke tag yang menampilkan posisi: properti relatif, sebagai berikut:
sumber
mungkin yang terpendek
sumber
Jika Anda tidak tahu lebar elemen Anda dapat menggunakan kode ini:
Demo di fiddle: http://jsfiddle.net/wrh7a21r/
Sumber: https://stackoverflow.com/a/1777282/1136132
sumber
Atau Anda sekarang dapat menggunakan kotak fleksibel dengan posisi absolut:
sumber
Saya tidak yakin apa yang ingin Anda capai, tetapi dalam hal ini hanya menambah kehendak
width: 100%;
Andaul#slideshow li
melakukan trik.Penjelasan
The
img
tag adalah elemen inline-block. Ini berarti bahwa mereka mengalir inline seperti teks, tetapi juga memiliki lebar dan tinggi seperti elemen blok. Di css Anda ada duatext-align: center;
aturan yang diterapkan pada<body>
dan ke#slideshowWrapper
(yang btw redundan) ini membuat semua elemen anak inline dan inline-blok menjadi terpusat di elemen blok terdekat mereka, dalam kode Anda ini adalahli
tag. Semua elemen blok memilikiwidth: 100%
jika mereka adalah aliran statis (position: static;
), yang merupakan default. Masalahnya adalah ketika Anda memberi tahuli
tag untuk menjadiposition: absolute;
, Anda mengeluarkannya dari aliran statis normal, dan ini menyebabkan mereka mengecilkan ukurannya agar pas dengan konten dalamnya, dengan kata lain mereka semacam "kehilangan"width: 100%
properti mereka .sumber
Menggunakan
left: calc(50% - Wpx/2);
dimana W adalah lebar elemen bekerja untuk saya.sumber
Gambar Anda tidak terpusat karena item daftar Anda tidak terpusat; hanya teks mereka yang berada di tengah. Anda dapat mencapai posisi yang diinginkan dengan memusatkan seluruh daftar atau memusatkan gambar di dalam daftar.
Versi revisi kode Anda dapat ditemukan di bagian bawah. Dalam revisi saya, saya memusatkan daftar dan gambar di dalamnya.
Yang benar adalah Anda tidak dapat memusatkan elemen yang memiliki posisi disetel ke absolut.
Tapi perilaku ini bisa ditiru!
Catatan: Instruksi ini akan bekerja dengan elemen blok DOM, bukan hanya img.
Kelilingi gambar Anda dengan div atau tag lain (dalam kasus Anda, li).
Catatan: Nama yang diberikan untuk elemen-elemen ini tidak istimewa.
Ubah css atau scss Anda untuk memberikan posisi absolut div dan gambar Anda terpusat.
Dan begitulah! Img Anda harus berada di tengah!
Kode Anda:
Coba ini:
Saya harap ini membantu. Semoga berhasil!
sumber
Objek absolut di dalam objek relatif relatif terhadap induknya, masalahnya di sini adalah bahwa Anda memerlukan lebar statis untuk wadah
#slideshowWrapper
, dan sisanya dari solusinya adalah seperti kata pengguna lainhttp://jsfiddle.net/ejRTU/10/
sumber
Berikut ini adalah solusi mudah dan terbaik untuk elemen tengah dengan "posisi: absolut"
sumber
Anda dapat mencoba cara ini:
sumber
Posisi absolut mengeluarkannya dari aliran, dan menempatkannya pada 0x0 ke induknya (Elemen blok terakhir memiliki posisi absolut atau posisi relatif).
Saya tidak yakin apa sebenarnya yang Anda coba capai, Mungkin yang terbaik adalah mengatur li menjadi
position:relative
dan yang akan memusatkan mereka. Mengingat CSS Anda saat iniLihat http://jsfiddle.net/rtgibbons/ejRTU/ untuk bermain dengannya
sumber
Saya tidak ingat di mana saya melihat metode pemusatan yang tercantum di atas, menggunakan nilai negatif atas, kanan, bawah, kiri. Bagi saya, teknik ini adalah yang terbaik, dalam banyak situasi.
Ketika saya menggunakan kombinasi dari atas, gambar berperilaku seperti gambar latar dengan pengaturan berikut:
Rincian lebih lanjut tentang contoh pertama dapat ditemukan di sini:
Pertahankan rasio aspek div dengan CSS
sumber
Apa yang tampaknya terjadi adalah ada dua solusi; terpusat menggunakan margin dan terpusat menggunakan posisi. Keduanya berfungsi dengan baik, tetapi jika Anda ingin memposisikan absolut suatu elemen relatif terhadap elemen terpusat ini, Anda perlu menggunakan metode posisi absolut, karena posisi absolut dari elemen kedua default ke induk pertama yang diposisikan. Seperti itu:
Sampai saya membaca posting ini, menggunakan teknik margin: 0 auto, untuk membangun menu di sebelah kiri konten saya, saya harus membuat kolom dengan lebar yang sama di sebelah kanan untuk menyeimbangkannya. Tidak cantik. Terima kasih!
sumber
Gunakan di
margin-left: x%;
mana x adalah setengah dari lebar elemen.sumber
sumber