CSS içeriğini kullanarak HTML objeleri ekleme


1013

HTML objeleri eklemek için CSS content özelliğini nasıl kullanıyorsunuz ?

Bunun gibi bir şey kullanmak, sadece  kırılmayan alan yerine ekrana yazdırılır :

.breadcrumbs a:before {
    content: ' ';
}

5
Farklı bir anlamda, CSS kullanarak içerik eklemek endişelerin ayrılmasını ihlal eder, CSS sadece stil tanımları içindir. CSS'nin devre dışı bırakılması tüm işareti yukarı vidaladığı için erişilebilirlik açısından kaçınılması tercih edilir. Ancak, bu tekniği kullanarak görüntü eklemek güzeldir.
questzen

95
Değişir. Bu durumda sunum amaçlıdır. Html içinde ">" koymak "SoC" ihlal olurdu
mathieu

2
Sadece bir soru, bunun sıralı bir liste olarak daha iyi olacağını düşünüyor musunuz? Yani, sıralı bir liste değil mi?
alex

3
@questzen - Bence :after, örneğin sıralı bir sütundaki asc / desc sort göstergesini ayarlamak için CSS kullanmak mükemmel bir şekilde kabul edilebilir (ve iyi bir form) .
Josh M.

9
İnsanların SoC prensibi konusunda delirdiğini fark ettim. Gökyüzü, ne tür bir içerik senin için ">" işareti ?! Merhamet et! bu bağlamda sadece bir simge, bir widget, madde işareti, adını siz koyun. Bana göre içerik aranabilir olmak istediğim bir şey.
user776686

Yanıtlar:


1063

Kaçan unicode'u kullanmalısınız:

Sevmek

.breadcrumbs a:before {
    content: '\0000a0';
}

Daha fazla bilgi için: http://www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/


57
Baştaki sıfırlar gereksizdir, bkz. CSS 2.1: 4.3.7 Dizeler . '>\a0'yeterli.
PointedEars

18
@dlamblin Ayrıca, karakterlerin kaçış dizisinin bir parçası olarak güvenilir bir şekilde yorumlanmasını önlemek için , standart beyaz boşluk ekleyin: '>\a0 bc'görüntülenir > bc.
PointedEars

18
Aracım amp-what.com/#q=%3E bir "CSS" modu sağlar. Sayfanın altındaki "css" i seçin. Yukarıdaki CSS referansına göre, bunların belirsiz olduklarında alanla sınırlandırılması gerekir.
ndp

@mathieu Bunun yerine resim eklemek için 'içerik'i kullanabilir misiniz? Sadece merak ediyorum
weia tasarımı

1
@Adam, hayır, bir resim eklemek istiyorsanız, "arka plan resmi" kullanın ve display: inline-block; ve genişlik: 123 piksel; Yükseklik: 123px; (tam genişlik / yükseklik kullanın)
Nathan JB

177

CSS HTML değil. HTML'de  adlandırılmış bir karakter başvurusudur ; ondalık sayısal karakter referansına eşdeğerdir  . 160 ondalık bir kod noktası arasında NO-BREAK SPACEkarakter Unicode (veya UCS-2 , bakınız HTML 4.01 ). Bu kod noktasının onaltılı gösterimi U + 00A0'dır (160 = 10 × 16 1 + 0 × 16 0 ). Bunu Unicode Kod Grafikleri ve Karakter Veritabanında bulabilirsiniz .

CSS'de, bu tür karakterler için bir karakterin kod noktasının onaltılık değerine dayanan bir Unicode kaçış dizisi kullanmanız gerekir. Yani yazman gerek

.breadcrumbs a:before {
  content: '\a0';
}

Bu çıkış dizisi bir dize değerinde son geldiği sürece çalışır. Karakterler takip ederse, yanlış yorumlanmayı önlemenin iki yolu vardır:

a) (başkaları tarafından bahsedilen) Kaçış dizisi için tam olarak altı onaltılık basamak kullanın:

.breadcrumbs a:before {
  content: '\0000a0foo';
}

b) Kaçış dizisinden sonra bir boşluk (ör. boşluk) karakteri ekleyin:

.breadcrumbs a:before {
  content: '\a0 foo';
}

( fOnaltılık bir rakam olduğundan \a0f, aksi takdirde GURMUKHI LETTER EEburada veya uygun bir fontunuz varsa ਏ anlamına gelir .)

Sınırlayıcı beyaz boşluk göz ardı edilecek ve  fooburada görüntülenen alanın bir NO-BREAK SPACEkarakter olacağı yerlerde bu görüntülenecektir .

Beyaz boşluk yaklaşımı ( '\a0 foo'), altı basamaklı yaklaşıma ( '\0000a0foo') göre aşağıdaki avantajlara sahiptir :

  • yazmak daha kolaydır , çünkü önde gelen sıfırlar gerekli değildir ve rakamların sayılması gerekmez;
  • bu kolay okunur orada çıkış sırası aşağıdaki metin arasında beyaz boşluk olduğunu ve basamak sayılacak gerekmez, çünkü;
  • o daha az yer gerektirir lider sıfır gerekli değildir çünkü;
  • bunun yukarı doğru uyumlu , çünkü Unicode destek kodları gelecekte U + 10FFFF değerinin ötesinde CSS Spesifikasyonu'nda bir değişiklik yapılmasını gerektirecektir.

Böylece, çıkış karakterinden sonra boşluk görüntülemek için stil sayfasında iki boşluk kullanın -

.breadcrumbs a:before {
  content: '\a0  foo';
}

- veya açık bir şekilde belirtin:

.breadcrumbs a:before {
  content: '\a0\20 foo';
}

Ayrıntılar için bkz. CSS 2.1, "4.1.3 Karakterler ve büyük / küçük harf" bölümü .


"Kaçan bir karakterden sonra bir boşluk görüntülemek" hilesi için +1, ancak bir nbsp ve sonra bir boşluk
eklemenin nbsp'nin amacını bozduğundan bahsetmek zorundayız

@TWiStErRob Hayır, kesmeyen boşluk karakteri ve ardından boşluk karakteri (ya da tam tersi) birleşimi iki boşluk karakterinin genişliği hakkında bir boşluk görüntülerken , iki veya daha fazla kelimesi kelimesi boşluk karakteri yalnızca mizanpaj motorunun ayrıştırıcısı olarak bir boşluk karakterinin genişliği , white-spaceCSS özelliği aksini bildirmedikçe ardışık kesme boşluklarını (satırsonu dahil) bir boşluk karakterine daraltır .
PointedEars

evet, daraltma hakkında biliyorum, ama nbsp'nin amacı kırılmaz olması, kelime karakterlerinin de varsayılan olarak kırılmamasıdır, bu yüzden kırılmamış olanın yanına bir kırılma alanı eklemek mantıklı değildir, sonuçta son Dakika. Ben konuşuyorum white-space: normal.
TWiStErRob

@TWiStErRob Lütfen cevabımı daha dikkatli okuyun. “Kaçan karakterden sonra bir boşluk göstermek” için bir örnek . Orijinal kod bir NO-BREAK SPACEkarakter vardı , bu yüzden bunun için kaçış dizisi kullanılır. Başka bir kaçış dizisi seçebilirsiniz; Gerekirse de beyan edebilirsiniz white-space: nowrap.
PointedEars

81

Güncelleme : PointedEars,  tüm css durumlarında doğru duruşun
'\a0 ', alanın hex dizesine bir sonlandırıcı olduğunu ve kaçan dizi tarafından emildiğini ima edeceğinden bahseder . Ayrıca aşağıda tarif ettiğim ve çözdüğüm soruna iyi bir çözüm gibi görünen bu yetkili açıklamaya dikkat çekti .

Yapmanız gereken kaçan unicode'u kullanmak. Size söylenenlere rağmen CSS \00a0için mükemmel bir stand-in değil  ; o zaman dene:

content:'>\a0 ';          /* or */
content:'>\0000a0';       /* because you'll find: */
content:'No\a0 Break';    /* and */
content:'No\0000a0Break'; /* becomes No Break as opposed to below */

Özellikle \0000a0as  . Mathieu ve millikin tarafından önerildiği gibi denerseniz:

content:'No\00a0Break'   /* becomes No਋reak */

B'yi onaltılık karakterlerden alır. Aynı şey 0-9a-fA-F için de geçerlidir.


6
Sadece belirtildiği gibi kaçış dizisinden sonraki bir boşluk koymak gerekir: '\a0 Break'. '\0000a0Break'olduğu değil güvenilir.
PointedEars

@PointedEars İlginç, o zaman bu alan bir sonlandırıcı ve dizeye dahil değil mi?
dlamblin

2
Bkz. CSS 2.1, bölüm "4.1.3 Karakterler ve büyük / küçük harf" . Bu da yaklaşımınızın CSS 2.1 başına güvenilir olması gerektiğini gösterir. Ancak beyaz boşluk yaklaşımının daha temiz (yukarı uyumlu) olduğunu ve daha az yer kapladığını düşünüyorum.
PointedEars

47

CSS'de HTML Varlıkları yerine bir Unicode kaçış dizisi kullanmanız gerekir. Bu, bir karakterin onaltılı değerini temel alır.

Sembolü onaltılık eşdeğerine dönüştürmenin en kolay yolunun calculator ( ▾) 'den \25BEMicrosoft hesap makinesi =)

Evet. Programcılar modunu etkinleştirin, ondalık sistemi açın, girin 9662ve onaltılı olarak değiştirin 25BE. Sonra \başlangıca bir ters eğik çizgi ekleyin .


4
Tamamen yararlı olsa da, soruya gerçekten cevap vermiyor, bu yüzden bu soruya bir yorum olarak daha iyi olurdu.
dlamblin

1
Sağa bakan siyah küçük ok (▸ \25B8 ▸ ▸) ftw. Ayrıca daha fazla bilgi için en.wikipedia.org/wiki/Geometric_Shapes adresine bakın .
Joel Purra

2 Purel yapın, Wiki'yi daha fazla okuyun. sembolleri yanlış anladın.
netgoblin

@netgoblin: nasıl yani? Sadece siyah sağa bakan küçük oku seviyorum.
Joel Purra

1
Ondalık, Onaltılık ve benzerlerini alabileceğiniz bu graphemica.com'u kullanıyorum
Mike

34

Kesintisiz bir alan için hex kodunu kullanın. Bunun gibi bir şey:

.breadcrumbs a:before {
    content: '>\00a0';
}

17

nbspAçık bir CharMap yapıştırmanın ve 160 karakterini kopyalamanın bir yolu vardır . Ancak, bu durumda muhtemelen dolgu ile boşluk bırakıyorum, şöyle:

.breadcrumbs a:before { content: '>'; padding-right: .5em; }

display:inline-blockBununla birlikte , ekmek kırıntılarını veya başka bir şeyi ayarlamanız gerekebilir .


4
Nbsp'yi yapıştırmak yerine, bir varlığı kullanmaya devam edeceğim, böylece gelecekteki bakıcılara bir alandan farklı olduğu açık.
nickf

2
Öte yandan, olması gerektiği gibi ekmek kırıntıları yapmazsınız, yani:> sembolü sadece görsel bir stil değil, ekmek kırıntısı ile aynı hizada olmalıdır. en azından google'ın ekmek kırıntılarınızı görmesini ve arama motorundaki girişinizin altında listelemesini istiyorsanız.
Dementic

10

Örneğin :

http://character-code.com/arrows-html-codes.php

Örnek: Karakterinizi seçmek istiyorsanız, "& # 8620" "& # x21ac" seçtim ( HEX değerlerini kullanıyoruz)

.breadcrumbs a:before {
    content: '\0021ac';
}

Sonuç: ↬

Bu kadar :)


içerik kullandım: '\ 10095'; . Ancak çıktı gösterilmiyor. simge yerine, dikdörtgen gösteriyor.
kapil

0

Bu oldukça eski bir yazı olduğunu biliyorum, ama boşluk tüm senin peşinde ise, neden sadece:

.breadcrumbs a::before {
    content: '>';
    margin-left: 8px;
    margin-right: 8px;
}

Bu yöntemi daha önce kullandım. Benim test yan yana ">" ile diğer satırlara mükemmel ince sarar.


-2

İşte iki yol:

  • HTML'de:

    <div class="ics">&#9969;</div>

Bu, ⛱

  • Css cinsinden:

    .ics::before {content: "\9969;"}

HTML kodu ile <div class="ics"></div>

Bu ayrıca ⛱


Doğru cevap .ics :: önce {content: '\ 9969';}
Marco Scarnatto
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.