Saya mencoba membuat aturan horizontal dengan beberapa teks di tengah. Sebagai contoh:
----------------------------------- judul saya di sini ------------ -----------------
Apakah ada cara untuk melakukan itu di CSS? Tanpa semua tanda "-" jelas.
html
css
cross-browser
Jason
sumber
sumber
form
tag?fieldset
danlegend
elemenJawaban:
Ini kira-kira bagaimana saya akan melakukannya: baris dibuat dengan mengatur
border-bottom
pada yang mengandungh2
kemudian memberikan yangh2
lebih kecilline-height
. Teks tersebut kemudian diletakkan bersarangspan
dengan latar belakang yang tidak transparan.Saya menguji di Chrome saja, tetapi tidak ada alasan itu tidak berfungsi di browser lain.
JSFiddle: http://jsfiddle.net/7jGHS/
sumber
Setelah mencoba solusi yang berbeda, saya telah datang dengan satu valid untuk lebar teks yang berbeda, latar belakang yang mungkin dan tanpa menambahkan markup tambahan.
Saya mengujinya di IE8, IE9, Firefox dan Chrome. Anda dapat memeriksanya di sini http://jsfiddle.net/Puigcerber/vLwDf/1/
sumber
h1 {
overflow: hidden; `text-align: kiri; `text-indent: 40px; `}:after
elemen lebar blok. Saya ingin tahu: apa peran sebenarnyamargin-right: -50%
? Ketika saya meraba-raba dengan kode, kehilangan properti itu akan membuat hiasan istirahat ke baris lain. Dan bahkan ketika:after
diberikan lebar 100%, saya masih membutuhkan margin-kanan negatif 50% agar pas. Mengapa?Ok, yang ini lebih rumit tetapi bekerja di semua hal kecuali IE <8
Elemen: sebelum dan: setelah diposisikan secara absolut sehingga kita dapat menarik satu ke kiri dan satu ke kanan. Juga, lebar (40% dalam hal ini) sangat bergantung pada lebar teks di dalam .. harus memikirkan solusi untuk itu. Setidaknya
top: 1.2em
pastikan garis-garisnya tetap berada di tengah teks meskipun Anda memiliki ukuran font yang berbeda.Itu tampaknya bekerja dengan baik: http://jsfiddle.net/tUGrf/3/
sumber
form
tag. Jika ya, karena saya yakin Anda tahu, ia bisa menggunakanfieldset
danlegend
.Metode terpendek dan terbaik:
sumber
font-family: monospace;
berfungsi dengan baik.Berikut adalah solusi berbasis Flex.
JSFiddle: https://jsfiddle.net/yoshiokatsuneo/3h1fmj29/
sumber
<h1><span>Today</span></h1>
dengan margin / padding pada span.untuk nanti (nowdays) Browser,
display:flex
anddpseudo-elements
membuatnya mudah untuk menarik.border-style
,box-shadow
dan bahkanbackground
membantu merias wajah.sumber
sumber
Beri rentang bantalan untuk membuat lebih banyak ruang antara teks dan garis.
Contoh: http://jsfiddle.net/tUGrf/
sumber
Saya telah mencari-cari beberapa solusi untuk dekorasi sederhana ini dan saya telah menemukan beberapa yang, beberapa aneh, beberapa bahkan dengan JS untuk menghitung ketinggian font dan bla, bla, bla, maka saya sudah membaca satu di posting ini dan membaca komentar dari tigapuluhdot berbicara tentang
fieldset
danlegend
dan saya pikir itu dia.Saya mengesampingkan gaya 2 elemen itu, saya kira Anda dapat menyalin standar W3C untuk mereka dan memasukkannya ke dalam
.middle-line-text
kelas Anda (atau apa pun yang Anda ingin menyebutnya) tetapi inilah yang saya lakukan:Ini biola: http://jsfiddle.net/legnaleama/3t7wjpa2/
Saya telah bermain dengan gaya perbatasan dan juga berfungsi di Android;) (Diuji pada kitkat 4.XX)
EDIT:
Mengikuti ide Bekerov Artur yang merupakan opsi yang bagus juga, saya telah mengubah gambar .png base64 untuk membuat goresan dengan .SVG sehingga Anda dapat membuat resolusi apa pun dan juga mengubah warna elemen tanpa melibatkan perangkat lunak lain :)
sumber
Solusi untuk IE8 dan yang lebih baru ...
Masalah yang perlu diperhatikan:
Menggunakan
background-color
untuk menutupi perbatasan mungkin bukan solusi terbaik. Jika Anda memiliki warna latar belakang (atau gambar) yang kompleks (atau tidak dikenal), masking pada akhirnya akan gagal. Juga, jika Anda mengubah ukuran teks, Anda akan melihat bahwa warna latar belakang putih (atau apa pun yang Anda atur) akan mulai menutupi teks pada baris di atas (atau di bawah).Anda juga tidak ingin "menebak-nebak" seberapa lebar bagian-bagiannya, karena itu membuat gaya sangat tidak fleksibel dan hampir tidak mungkin untuk diterapkan pada situs responsif di mana lebar konten berubah.
Larutan:
( Lihat JSFiddle )
Alih-alih "menutupi" batas dengan
background-color
, gunakandisplay
properti Anda .HTML
CSS
Ubah ukuran teks Anda dengan menempatkan
font-size
properti Anda di.group
elemen.Keterbatasan:
top
properti pada.line
elemen harus setengah dariline-height
. Jadi, jika Anda memilikiline-height
dari1.5em
, makatop
harus-.75em
. Ini adalah batasan karena tidak otomatis, dan jika Anda menerapkan gaya ini pada elemen dengan ketinggian garis yang berbeda, maka Anda mungkin perlu menerapkan kembaliline-height
gaya Anda .Bagi saya, keterbatasan ini lebih besar daripada "masalah" yang saya catat di awal jawaban saya untuk sebagian besar implementasi.
sumber
Ini memberi Anda panjang tetap untuk garis, tetapi bekerja dengan baik. Panjang garis dikontrol dengan menambahkan atau mengambil '\ 00a0' (ruang unicode).
sumber
Jika ada yang bertanya-tanya bagaimana mengatur judul sehingga muncul dengan jarak tetap ke sisi kiri (dan tidak berpusat seperti yang disajikan di atas), saya mengetahuinya dengan memodifikasi kode @ Puigcerber.
Di sini JSFiddle .
sumber
ini akan membantu Anda
antara garis
sumber
Saya menggunakan tata letak tabel untuk mengisi sisi secara dinamis dan div posisi absolut 0-tinggi untuk pemosisian vertikal dinamis:
https://jsfiddle.net/eq5gz5xL/18/
Saya menemukan bahwa sedikit di bawah pusat benar terlihat paling baik dengan teks; ini dapat disesuaikan di mana
55%
ada (ketinggian lebih tinggi membuat bar lebih rendah). Tampilan garis dapat diubah di mana tempatnyaborder-bottom
.HTML:
CSS:
sumber
Bukan untuk mengalahkan kuda yang mati, tetapi saya sedang mencari solusi, berakhir di sini, dan saya sendiri tidak puas dengan pilihannya, paling tidak untuk beberapa alasan saya tidak bisa mendapatkan solusi yang disediakan di sini untuk bekerja dengan baik untuk saya. (Kemungkinan karena kesalahan pada bagian saya ...) Tapi saya sudah bermain dengan flexbox dan inilah sesuatu yang saya lakukan untuk bekerja sendiri.
Beberapa pengaturan terprogram, tetapi hanya untuk tujuan demonstrasi. Saya pikir solusi ini harus bekerja di hampir semua browser modern. Hapus / sesuaikan pengaturan tetap untuk kelas .flex-parent, sesuaikan warna / teks / barang dan (saya harap) Anda akan sama senangnya dengan pendekatan ini.
HTML:
Saya juga menyimpan solusi saya di sini: https://jsfiddle.net/Wellspring/wupj1y1a/1/
sumber
Kalau-kalau ada yang mau, IMHO solusi terbaik menggunakan CSS adalah dengan flexbox.
Berikut ini sebuah contoh:
Ini harus selalu menghasilkan konten selaras terpusat sempurna dengan garis ke kiri dan kanan, dengan margin kontrol yang mudah antara garis dan konten Anda.
Ini membuat elemen garis sebelum dan sesudah kontrol teratas Anda dan mengaturnya untuk memesan 1,3 dalam wadah fleksibel Anda sambil mengatur konten Anda sebagai pesanan 2 (masuk di tengah). memberi sebelum / sesudah pertumbuhan 1 akan membuat mereka mengonsumsi ruang paling kosong secara merata sambil menjaga konten Anda tetap terpusat.
Semoga ini membantu!
sumber
Saya tidak terlalu yakin, tetapi Anda bisa mencoba menggunakan aturan horizontal dan mendorong teks di atas margin atasnya. Anda akan membutuhkan lebar tetap pada tag paragraf dan latar belakang Anda juga. Ini sedikit hacky dan saya tidak tahu apakah itu akan berfungsi pada semua browser, dan Anda perlu mengatur margin negatif berdasarkan ukuran font. Bekerja pada chrome.
sumber
Saya telah mencoba sebagian besar cara yang disarankan tetapi diakhiri dengan beberapa masalah seperti lebar penuh, atau Tidak cocok untuk konten dinamis. Akhirnya saya memodifikasi kode, dan bekerja dengan sempurna. Kode contoh ini akan menggambar garis-garis itu sebelum dan sesudah, dan fleksibel dalam perubahan konten. Pusat juga disejajarkan.
HTML
CSS
Hasil: https://jsfiddle.net/fasilkk/vowqfnb9/
sumber
Bagi saya solusi ini berfungsi dengan baik ...
HTML
<h2 class="strikethough"><span>Testing Text</span></h2>
CSS
sumber
Orang yang menggunakan Bootstrap 4 dapat mencapainya dengan metode ini. kelas yang disebutkan dalam kode HTML berasal dari Bootstrap 4.
Dan tulis HTML Anda seperti ini
sumber
Garis horizontal dan vertikal dengan kata-kata di tengah
Ini juga dijawab dalam https://stackoverflow.com/a/57279326/6569224
sumber
Hasil:
sumber