Masalah ini tampaknya bahwa surat-surat tertentu seperti g
, y
, q
, dll yang memiliki ekor yang lereng bawah, tidak memungkinkan untuk centering vertikal. Berikut ini gambar untuk menunjukkan masalahnya .
Karakter dalam kotak hijau pada dasarnya sempurna, karena mereka tidak memiliki ekor ke bawah. Mereka yang berada di kotak merah menunjukkan masalahnya.
Saya ingin semua karakter berpusat secara vertikal sempurna. Dalam gambar, karakter dengan ekor ke bawah tidak di tengah secara vertikal. Apakah ini mungkin diperbaiki?
Ini biola yang menunjukkan masalah secara penuh .
.avatar {
border-radius: 50%;
display: inline-block;
text-align: center;
width: 125px;
height: 125px;
font-size: 60px;
background-color: rgb(81, 75, 93);
font-family: "Segoe UI";
margin-bottom: 10px;
}
.character {
position: relative;
top: 50%;
transform: translateY(-50%);
line-height: 100%;
color: #fff;
}
<div class="avatar">
<div class="character">W</div>
</div>
<div class="avatar">
<div class="character">y</div>
</div>
javascript
html
css
vertical-alignment
Tas Chron
sumber
sumber
v
dalamy
dano
bagian dalamg
berada pada baris yang sama dengan titik terendah untuk huruf kapital. Dengan logika Anda, Å, Ä, Ö akan disejajarkan seperti A dan O tetapi tidak bisa. Jika Anda ingin melakukan sesuatu yang istimewa tentang itu, Anda perlu menggunakan javascript untuk memeriksa apakah itu cap kecil dan kemudian mendorong karakter hingga beberapa karakter.Jawaban:
Ini solusi saya menggunakan JS. Idenya adalah untuk mengubah elemen menjadi gambar untuk mendapatkan datanya sebagai piksel kemudian loop melalui mereka untuk menemukan bagian atas dan bawah setiap karakter dan menerapkan terjemahan untuk memperbaiki perataan. Ini akan bekerja dengan properti font dinamis.
Kode tidak dioptimalkan tetapi menyoroti gagasan utama:
Tampilkan cuplikan kode
MEMPERBARUI
Berikut ini adalah optimasi kode yang pertama:
Saya menggunakan plugin dom-to-image untuk ini.
sumber
Â
untuk menunjukkan bahwa pemusatan dirinya tidak optimal seperti yang saya komentari dalam jawabannya;) Dia mungkin akan berubah pikiran setelah melihat ini dan menerima cara font bekerjaMungkin ada jawaban yang lebih baik, tetapi sepertinya satu-satunya cara adalah dengan menerapkan gaya yang berbeda secara manual tergantung pada apakah itu salah satu dari:
Sekarang perhatikan bahwa, dalam pemahaman saya, ketinggian relatif ekor dan tangkai saya pikir didefinisikan oleh font. Saya tidak yakin apakah ada cara untuk mengaksesnya secara terprogram - jadi Anda mungkin perlu menyesuaikan nilai-nilai ini dengan font.
Perhatikan juga bahwa solusi ini tidak akan berfungsi untuk mendukung banyak bahasa - karena Anda perlu menentukan kategori mana yang cocok untuk setiap karakter dalam berbagai set karakter yang berbeda.
sumber
ÂË
danâë
Ini situasi yang sulit!
Dari apa yang bisa saya katakan, ini akan paling sulit untuk membuat scalable secara native (yaitu
%
,vw
atauvh
nilai daripadapx
atauem
). Jika Anda perlu membuat ini terlihat cantik di ponsel atau tablet, harap pertimbangkan untuk menggunakan solusi saya dengan@media
breakpoints.Solusi saya pada dasarnya mendeteksi jika itu adalah elemen huruf kecil dengan ekor dan menambahkan kelas untuk mengimbangi ketinggian untuk mengimbangi ekor.
Dalam pengujian saya, itu tidak muncul bahwa setiap penangan tambahan diperlukan untuk modal huruf atau huruf kecil huruf tanpa ekor . Jangan ragu untuk mengoreksi saya jika saya salah.
Ada JSFiddle jika Anda ingin dipusingkan dan mengubah / menguji solusi ini.
Biarkan saya tahu pikiran Anda dan jika saya melewatkan sesuatu. Ini akan keren untuk mendapatkan solusi akhir untuk ini karena saya sendiri pernah mengalami masalah serupa!
sumber
Anda mungkin membutuhkan helperclass untuk ini, sehingga Anda dapat menerjemahkan huruf kecil lebih banyak dari huruf kapital. Sebuah skrip sederhana dapat dengan mudah menempatkan kelas pembantu ini secara otomatis.
Semoga ini bisa menyelesaikan masalah untuk Anda :)
sumber
y
tidak terpusat. Tweek lagi!o
dany
Anda akan mendapatkannya. Karakter dengan ekor menciptakan masalah di tempat pertama (disebutkan dalam posting).