Apa yang saya cari:
Cara untuk gaya satu SETENGAH karakter. (Dalam hal ini, setengah hurufnya transparan)
Apa yang saya cari dan coba saat ini (Tidak berhasil):
- Metode penataan setengah karakter / huruf
- Styling bagian dari karakter dengan CSS atau JavaScript
- Terapkan CSS ke 50% karakter
Di bawah ini adalah contoh dari apa yang saya coba dapatkan.
Apakah ada solusi CSS atau JavaScript untuk ini, atau apakah saya harus menggunakan gambar? Saya lebih suka untuk tidak pergi rute gambar karena teks ini akan berakhir secara dinamis.
MEMPERBARUI:
Karena banyak yang bertanya mengapa saya ingin menata setengah dari karakter, inilah sebabnya. Kota saya baru-baru ini menghabiskan $ 250.000 untuk mendefinisikan "merek" baru untuk dirinya sendiri. Ini logo adalah apa yang mereka datang dengan. Banyak orang mengeluh tentang kesederhanaan dan kurangnya kreativitas dan terus melakukannya. Tujuan saya adalah membuat situs web ini sebagai lelucon. Ketik 'Halifax' dan Anda akan melihat apa yang saya maksud.
sumber
Jawaban:
Sekarang di GitHub sebagai Plugin!
Jangan ragu untuk garpu dan tingkatkan.
Demo | Unduh Zip | Half-Style.com (Redirect ke GitHub)
Bagian 1: Solusi Dasar
Demo: http://jsfiddle.net/arbel/pd9yB/1694/
Ini berfungsi pada teks dinamis apa pun, atau satu karakter, dan semuanya otomatis. Yang perlu Anda lakukan adalah menambahkan kelas pada teks target dan sisanya diurus.
Juga, aksesibilitas teks asli dipertahankan untuk pembaca layar untuk tunanetra atau tunanetra.
Penjelasan untuk satu karakter:
CSS murni. Yang perlu Anda lakukan adalah menerapkan
.halfStyle
kelas ke setiap elemen yang berisi karakter yang Anda inginkan setengah gaya.Untuk setiap elemen rentang yang berisi karakter, Anda dapat membuat atribut data, misalnya di sini
data-content="X"
, dan pada elemen pseudo digunakancontent: attr(data-content);
sehingga.halfStyle:before
kelas akan dinamis dan Anda tidak perlu membuat kode keras untuk setiap contoh.Penjelasan untuk teks apa pun:
Cukup tambahkan
textToHalfStyle
kelas ke elemen yang berisi teks.( Demo JSFiddle )
Bagian 2: Solusi lanjutan - Bagian kiri dan kanan yang independen
Dengan solusi ini Anda dapat menata bagian kiri dan kanan, secara individual dan mandiri .
Semuanya sama, hanya CSS yang lebih maju yang melakukan keajaiban.
Tampilkan cuplikan kode
( Demo JSFiddle )
Bagian 3: Padukan dan Tingkatkan
Sekarang kita tahu apa yang mungkin, mari kita buat beberapa variasi.
Setengah Bagian Horisontal
Tanpa Bayangan Teks:
Kemungkinan Shadow Teks untuk setiap setengah bagian secara mandiri:
Tampilkan cuplikan kode
( Demo JSFiddle )
-Vertikal 1/3 Bagian
Tanpa Bayangan Teks:
Kemungkinan Shadow Teks untuk setiap 1/3 bagian secara independen:
Tampilkan cuplikan kode
( Demo JSFiddle )
-Horizontal 1/3 Bagian
Tanpa Bayangan Teks:
Kemungkinan Shadow Teks untuk setiap 1/3 bagian secara independen:
Tampilkan cuplikan kode
( Demo JSFiddle )
Peningkatan -HalfStyle Oleh @KevinGranger
Tampilkan cuplikan kode
( Demo JSFiddle )
Peningkatan -PeelingStyle dari HalfStyle oleh @SamTremaine
Tampilkan cuplikan kode
( Demo JSFiddle dan di samtremaine.co.uk )
Bagian 4: Siap untuk Produksi
Set gaya Setengah Gaya yang dapat disesuaikan dapat digunakan pada elemen yang diinginkan pada halaman yang sama. Anda dapat mendefinisikan beberapa set gaya dan memberi tahu plugin yang mana yang akan digunakan.
Plugin menggunakan atribut data
data-halfstyle="[-CustomClassName-]"
pada.textToHalfStyle
elemen target dan membuat semua perubahan yang diperlukan secara otomatis.Jadi, cukup pada elemen yang berisi teks tambahkan
textToHalfStyle
kelas dan atribut datadata-halfstyle="[-CustomClassName-]"
. Plugin akan melakukan sisa pekerjaan.Juga definisi kelas set-gaya CSS cocok dengan
[-CustomClassName-]
bagian yang disebutkan di atas dan dirantai.halfStyle
, jadi kita akan memilikinya.halfStyle.[-CustomClassName-]
( Demo JSFiddle )
sumber
Saya baru saja selesai mengembangkan plugin dan tersedia untuk digunakan semua orang! Semoga Anda menikmatinya.
Lihat Proyek di GitHub - Lihat Situs Web Proyek . (sehingga Anda dapat melihat semua gaya split)
Pemakaian
Pertama-tama, pastikan Anda memiliki
jQuery
perpustakaan yang disertakan. Cara terbaik untuk mendapatkan versi jQuery terbaru adalah memperbarui tag kepala Anda dengan:Setelah mengunduh file, pastikan Anda memasukkannya dalam proyek Anda:
Markup
Yang harus Anda lakukan adalah menetapkan kelas
splitchar
, diikuti dengan gaya yang diinginkan untuk elemen yang membungkus teks Anda. misalnyaSetelah semua ini selesai, pastikan Anda memanggil fungsi jQuery di file siap dokumen Anda seperti ini:
Menyesuaikan
Untuk membuat teks tampak persis seperti yang Anda inginkan, yang harus Anda lakukan adalah menerapkan desain Anda seperti ini:
Itu dia! Sekarang Anda sudah siap dengan
Splitchar
plugin. Info lebih lanjut tentang hal ini di http://razvanbalosin.com/Splitchar.js/ .sumber
Ya, Anda dapat melakukan ini hanya dengan satu karakter dan hanya CSS.
Hanya Webkit (dan Chrome), meskipun:
http://jsbin.com/rexoyice/1/
Secara visual, semua contoh yang menggunakan dua karakter (baik itu melalui JS, elemen pseudo CSS, atau hanya HTML) terlihat bagus, tetapi perhatikan bahwa semua menambahkan konten ke DOM yang dapat menyebabkan aksesibilitas - serta pemilihan teks / potong / rekatkan masalah.
sumber
background-clip: text
sangat luar biasa dan mereka harus mempertimbangkannya (atau sesuatu yang serupatext-decoration-background
) untuk modul level 4.JSFiddle DEMO
Kami akan melakukannya hanya menggunakan penyeleksi semu CSS!
Teknik ini akan bekerja dengan konten yang dihasilkan secara dinamis dan berbagai ukuran dan lebar font.
HTML:
CSS:
Untuk membungkus string yang dihasilkan secara dinamis, Anda dapat menggunakan fungsi seperti ini:
sumber
Mungkin tidak relevan, mungkin tidak, tetapi beberapa waktu yang lalu, saya membuat fungsi jQuery yang melakukan hal yang sama, tetapi secara horizontal.
Saya menyebutnya "Strippex" Untuk 'stripe' + 'teks', demo: http://cdpn.io/FcIBg
Saya tidak mengatakan ini adalah solusi dari masalah apa pun, tapi saya sudah mencoba menerapkan css ke setengah karakter, tetapi secara horizontal, Jadi idenya sama, realisasinya mungkin mengerikan, tetapi berhasil.
Ah, dan yang paling penting, saya senang membuatnya!
sumber
pointer-events:none
ke&:nth-child(2)
-&:nth-child(5)
. Ini membuatnya jadi teks hanya dapat disorot sekali dan Anda hanya mendapatkan satu salinannya. Anda dapat melihatnya di sini: codepen.io/anon/pen/upLajJika Anda tertarik pada ini, maka Lucas Bebber's Glitch adalah efek yang sangat mirip dan sangat keren:
Dibuat menggunakan Mixin SASS sederhana seperti
Lebih detail di Trik CSS Chris Coyer dan halaman Codepen Lucas Bebber
sumber
Di sini implementasi jelek di kanvas. Saya mencoba solusi ini, tetapi hasilnya lebih buruk dari yang saya harapkan, jadi ini dia.
sumber
0.5
untuk berhenti warna merah juga.Saya bisa mendapatkan terdekat:
Demo: http://jsfiddle.net/9wxfY/2/
Inilah versi yang hanya menggunakan satu rentang: http://jsfiddle.net/9wxfY/4/
sumber
$('span').width()
hanya mengembalikan lebar rentang pertama yang ditemukannya; itu harus menjadi sesuatu yang Anda lakukan untuk setiap pasangan. Yang memberi saya ide ...Saya baru saja bermain dengan solusi @ Arbel:
sumber
Solusi khusus CSS lainnya (meskipun atribut data diperlukan jika Anda tidak ingin menulis CSS khusus huruf). Yang ini bekerja lebih banyak di seluruh papan (Diuji IE 9/10, Chrome terbaru & FF terbaru)
sumber
Solusi CSS dan jQuery terbatas
Saya tidak yakin seberapa elegan solusi ini, tetapi memotong semuanya persis dua: http://jsfiddle.net/9wxfY/11/
Kalau tidak, saya telah membuat solusi yang bagus untuk Anda ... Yang perlu Anda lakukan hanyalah memiliki ini untuk HTML Anda:
Lihatlah yang terbaru ini, dan akurat, edit per 6/13/2016: http://jsfiddle.net/9wxfY/43/
Adapun CSS, itu sangat terbatas ... Anda hanya perlu menerapkannya
:nth-child(even)
sumber
http://experimental.samtremaine.co.uk/half-style/
Anda dapat linggis kode ini untuk melakukan segala macam hal menarik - ini hanya satu implementasi rekan saya dan saya datang dengan tadi malam.
sumber
Solusi khusus WebKit yang memanfaatkan
background-clip: text
dukungan: http://jsfiddle.net/sandro_paganotti/wLkVt/sumber
Bagaimana dengan yang seperti ini untuk teks yang lebih pendek?
Ini bahkan bisa berfungsi untuk teks yang lebih panjang jika Anda melakukan sesuatu dengan loop, mengulangi karakter dengan JavaScript. Bagaimanapun, hasilnya adalah seperti ini:
sumber
FWIW, inilah pendapat saya tentang melakukan ini hanya dengan CSS: http://codepen.io/ricardozea/pen/uFbts/
Beberapa catatan:
Alasan utama saya melakukan ini adalah untuk menguji diri saya dan melihat apakah saya dapat mencapai styling setengah dari karakter sambil benar-benar memberikan jawaban yang bermakna untuk OP.
Saya sadar bahwa ini bukan solusi ideal atau solusi yang paling dapat diskalakan dan solusi yang diajukan oleh orang-orang di sini jauh lebih baik untuk skenario "dunia nyata".
Kode CSS yang saya buat didasarkan pada pemikiran pertama yang muncul di pikiran saya dan pendekatan pribadi saya sendiri untuk masalah tersebut.
Solusi saya hanya bekerja pada karakter simetris, seperti X, A, O, M. ** Ini tidak bekerja pada karakter asimetris seperti B, C, F, K atau huruf kecil.
** NAMUN, pendekatan ini menciptakan 'bentuk' yang sangat menarik dengan karakter asimetris. Coba ubah X ke K atau ke huruf kecil seperti h atau p di CSS :)
HTML
SCSS
sumber
Anda juga dapat melakukannya menggunakan SVG, jika Anda ingin:
http://codepen.io/nicbell/pen/jGcbq
sumber
Ini dapat dicapai hanya dengan
:before
pemilih CSS dancontent property value
.>> Lihat di jsFiddle
sumber
Anda dapat menggunakan kode di bawah ini. Di sini, dalam contoh ini saya telah menggunakan
h1
tag dan menambahkan atributdata-title-text="Display Text"
yang akan muncul dengan teks warna berbeda padah1
elemen teks tag, yang memberikan efek teks setengah warna seperti yang ditunjukkan dalam contoh di bawah inisumber
Hanya sebagai catatan dalam sejarah!
Saya telah datang dengan solusi untuk pekerjaan saya sendiri 5-6 tahun yang lalu, yaitu Gradext (javascript murni dan css murni, tidak ada ketergantungan).
Penjelasan teknisnya adalah Anda dapat membuat elemen seperti ini:
sekarang jika Anda ingin membuat gradien pada teks, Anda perlu membuat beberapa layer, masing-masing berwarna secara individual dan spektrum yang dibuat akan menggambarkan efek gradien.
misalnya lihat ini adalah kata lorem di dalam a
<span>
dan akan menyebabkan efek gradien horizontal ( lihat contoh ):dan Anda dapat terus melakukan pola ini untuk waktu yang lama dan paragraf yang panjang juga.
Tapi!
Bagaimana jika Anda ingin membuat efek gradien vertikal pada teks?
Lalu ada solusi lain yang bisa membantu. Saya akan menjelaskan secara rinci.
Dengan asumsi pertama kita
<span>
lagi. tetapi isinya tidak boleh berupa huruf-huruf secara individual; konten harus seluruh teks, dan sekarang kita akan menyalin yang sama<span>
lagi dan lagi (menghitung bentang akan menentukan kualitas gradien Anda, lebih span, hasil yang lebih baik, namun kinerja yang buruk). Lihatlah ini:Lagi, Tapi!
bagaimana jika Anda ingin membuat efek gradien ini untuk bergerak dan membuat animasi?
well, ada solusi lain untuk itu juga. Anda pasti harus memeriksa
animation: true
atau bahkan.hoverable()
metode yang akan mengarah ke gradien untuk memulai berdasarkan posisi kursor! (terdengar keren xD)ini hanyalah cara kami membuat gradien (linear atau radial) pada teks. Jika Anda menyukai ide itu atau ingin tahu lebih banyak tentangnya, Anda harus memeriksa tautan yang disediakan.
Mungkin ini bukan opsi terbaik, mungkin bukan cara berkinerja terbaik untuk melakukan ini, tetapi ini akan membuka ruang untuk membuat animasi yang menarik dan menyenangkan untuk menginspirasi beberapa orang untuk solusi yang lebih baik.
Ini akan memungkinkan Anda untuk menggunakan gaya gradien pada teks, yang didukung oleh IE8!
Di sini Anda dapat menemukan demo langsung yang berfungsi dan repositori asli ada di sini di GitHub juga, open source dan siap untuk mendapatkan beberapa pembaruan (: D)
Ini adalah pertama kalinya saya (ya, setelah 5 tahun, Anda telah mendengarnya dengan benar) untuk menyebutkan repositori ini di mana saja di Internet, dan saya sangat senang tentang itu!
[Pembaruan - 2019 Agustus:] Github menghapus demo halaman github dari repositori itu karena saya dari Iran! Hanya kode sumber yang tersedia di sini ...
sumber