“& Nbsp;” arasındaki fark nedir ve " "?


147

Her ikisi de alan anlamına gelir, ancak herhangi bir fark var mı?

Yanıtlar:


196

Biri kırılmayan alan , diğeri düzenli bir alan. Kesintisiz boşluk, satırın bir kelimenin ortasına sarılmaması gerektiği gibi bu noktada sarılmaması gerektiği anlamına gelir.

Ayrıca, Svend'in yorumunda belirttiği gibi, kırılmayan alanlar daraltılmamıştır.


42
& nbsp; da çökmeyen, muhtemelen kullanımlarının en önemli yönü (en azından ben bunları kullanma eğilimindeyim, hızlı ve kolay bir şekilde pad pad çıkarıyorum)
Svend

48
Protip: Lütfen% 15 nbsp; kullanmayın. İnsanların bunu yaptığını gördüğümde beni deli ediyor. CSS dolgu veya kenar boşluğu kullanın.
Matthew Rapati

6
Microsoft Word'ün de bunu yaptığını gördüğümde beni delirtiyor ...
Josh Lee

@Amarghosh: Her zaman olmak istediğim türden bir guru ... :)
Brian Rasmussen

1
Ayrıca &hairsp      , [ jsfiddle.net/medmunds/4crt3c9j/]
Mark Gavagan

70

Varlık  , o konumda otomatik satır sonu istemediğinizde kullanılan, kesilmeyen bir alan üretir. Normal boşluk 32 karakter koduna, kırılmayan boşluk 160 karakter koduna sahiptir.

Örneğin, binlik ayırıcı olarak boşluklu sayıları görüntülediğinizde: 1 234 567, o zaman sayıları ayrı satırlara bölünemeyecek şekilde kesmeyen boşluklar kullanırsınız. Para birimini görüntülüyorsanız ve tutar ile para birimi arasında bir boşluk varsa: 42 SEK, o zaman bir satırda ve bir sonraki para biriminde parayı almamanız için kırılmaz bir alan kullanırsınız.


3
Nbsp kullanımına iyi örnekler. Kendimi arıyordum ama düşünemedim.
Pete

48

Buradaki diğer cevaplara ek olarak, kırılmayan alanlar normal boşluklar gibi "daraltılmayacaktır". Örneğin, her ikisi de

<p>Word1          Word2</p>

ve

<p>Word1 Word2</p>

aynısını herhangi bir tarayıcıda oluştururken

<p>Word1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Word2</p>

işlendiğinde boşlukları koruyacaktır.


Hayır, sonra & amp; boyunca. & Amp's yorumlamak değildi ama & nbsp's yorumladı.
Graeme Perrow

34

Örnekler kadar bir cevap değil ...

Örnek 1:

<div style="width:45px; height:45px; border: solid thin red; overflow: visible">
    Hello&nbsp;There
</div>  

Örnek 2 -

<div style="width:45px; height:45px; border: solid thin red; overflow: visible">
    Hello There
</div>

Ve kemanla bağlantı kur .


3
Başka cevaplara göz atmaya gerek yok IMHO. 9 yıl, hala geçerli.
snr

10

Burada çalışan bir örnek görebilirsiniz:

http://codepen.io/anon/pen/GJzBxo

ve

http://codepen.io/anon/pen/LVqBQo

Aynı div, aynı metin, farklı "boşluklar"

<div style="width: 500px; background: red"> [loooong text with spaces]</div>

vs

<div style="width: 500px; background: red"> [loooong text with &nbsp;]</div>

Lütfen açıklayabilir misiniz, neden bu cevabı küçümsersiniz?
alberto-bottarini

Onu iptal ettim. Bence bir şey açıklamıyor. Ancak, görsel olan faydalı bir şeye dikkat çekiyorsunuz.
Nishant

1
SO sorularının ve cevaplarının müstakil olması gerekiyordu. Codepen An dışında bağlantı olduğunu da izin eğer tam cevap olan da doğrudan görevde dahil. SO politikasına uymak için, edityayınınız ya yanıtın kodun çıktısını dahil etmesini ya da SO'nun kendi kodlanmış gömülü sürümünü eklemesini sağlar, böylece ziyaretçi kodları çalıştırabilir ve sonucu harici bir sayfaya gitmeden görebilir. Bağımsız politikanın nedeni, bağlantıya ulaşılamazsa, cevabın işe yaramaz hale gelmesidir. Ayrıca, kullanıcıların cevap vermesini istemek , sadece bir cevap almak için zayıf UX .
SherylHohman

6

Birden çok normal beyaz boşluk karakteri (boşluk, tablo ve satır sonu) tek bir boşluk karakteri olarak değerlendirilir :

PREBeyaz boşluk dizileri hariç tüm HTML öğeleri için "kelimeler" birbirinden ayrılır (burada "boşluk olmayan karakterlerin dizileri" anlamında "kelime" terimini kullanıyoruz). Metin biçimlendirilirken, kullanıcı aracıları bu sözcükleri tanımlamalı ve belirli bir yazılı dil (script) ve hedef ortamın kurallarına göre düzenlemelidir.

Yani

foo    bar

olarak görüntülenir

foo bar

Ancak aralıksız alan her zaman görüntülenir. Yani

foo&‍nbsp;&‍nbsp;&‍nbsp;bar

olarak görüntülenir

foo   bar

5

Daha önce de belirtildiği gibi, "kesintisiz alan" olan bir satır sonu almayacaksınız.

Ayrıca, yalnızca "" içeren öğelerin yanlış görünebileceğinden, & nbsp; çalışacak. Yani en az 6 (hatırladığım kadarıyla, IE7'de aynı sorun var), boş bir tablo öğeniz varsa, içerik yoksa veya yalnızca beyaz varsa öğeye stil, örneğin kenarlıklar uygulamaz. Uzay. Yani aşağıdakiler kenarlıklarla oluşturulmayacaktır:

<td></td>
<td> <td>

Halbuki bu örnekte sınırlar görünecektir:

<td>& nbsp;</td>

Hmm -burada doğru bir şekilde işlemek için kukla bir boşluk koymak zorunda kaldı


@Stewart - amp ile denedim ve metinde çalıştı, ama kod exmple değil - çünkü aynı zamanda "amp" kısmı yazdı
Pete

Çok ilginç. Açıkçası bir böcek.
Stewart

2

Birincisi HTML ayrıştırıcısı tarafından boşluk olarak değerlendirilmez, ikincisi. Sonuç olarak, "" öğesinin belirli HTML biçimlendirmesinde gösterilmesi garanti edilmezken, kesilemez alan her zaman görünür.


1

&nbsp; boşluk olarak ele alınmalıdır.

&nbsp;&nbsp; iki boşluk olarak ele alınmalıdır

'' ilginç olmayan bir boşluk olarak ele alınabilir

'' + '' tek olarak ele alınabilir ''


1

&nbsp; istiflenebilir, yani hep birlikte birden çok alan oluşturabilirsiniz.

HTML yalnızca bir alanı ayrıştırır '' ve gerisini bırakır ...

Beş boşluk istiyorsanız, 5 x &nbsp;


0

@Zoidberg haklı, örnek:

<h1>title</h1> <h2>date</h2>

başlık işaretlemesi arasında boşluk gösterilmeyecek

& nbsp ; 

yer yapacak :)


0

Satır kesmeleri olduğunda, $ bnsp kullandığınızda satır kesilmez; çünkü bu bir 'kırılmaz alan'. Bu, her zaman birlikte yazılacak belirli ürün adlarınız veya benzerleriniz varsa önemli olabilir.

Fransa'da 12 344 567 görüntülenen 12344567 gibi sayılarda sınırlayıcı olarak bir boşluk kullanmanız gerekirse ilginç olabilir. Çizgi olmadan sayının ortasında çok çirkin kırılır. Test: 12344567


0

TLDR; Kabul edilen cevaba ek olarak; Biri örtük, diğeri açık.

Bir uygulama / kütüphane / çerçeve tarafından yazdığınız veya oluşturduğunuz HTML tarayıcınız tarafından okunduğunda, HTML'nizin ne anlama geldiğini (tarayıcıdan tarayıcıya değişebilir) yorumlamak en iyisidir. HTML varlık kodlarını kullandığınızda, tarayıcıya daha açık olursunuz. Açıkça kullanıcıya bir karakter görüntülemek istediğinizi söylüyorsunuz (örneğin, geliştiricinin daha kolay okunabilmesi için HTML'nizi aralıklandırdığınızdan değil).

Daha somut olmak gerekirse, çıktı HTML'si şöyle olsaydı:

<html>
   <title>hello</title>
   <body>
       <p>
           Tell me and I will forget. Teach me and I
           may remember.  Involve me and I will learn.
       </p>
   </body>
</html>

Tarayıcı, tüm bu kelimeler arasında (geliştiricinin daha iyi okunabilmesi için girintili olanlar bile) yalnızca bir boşluk oluşturur.

Ancak, aynı şeyi koyduysanız ve <p>etiketi yalnızca şu şekilde değiştirdiyseniz :

<p>Hello&nbsp;&nbsp;&nbsp;There</p>

O zaman, daha açık bir şekilde talimat verdiğiniz gibi, boşlukları oluşturacaktır. Bu alanları şekillendirme için kullanmanın bir geçmişi var. CSS olgunlaştıkça bu kullanım bir miktar azalmıştır. Bununla birlikte, HTML karakter varlıklarının çoğu için hala geçerli kullanımlar vardır: beklenmedik / kasıtsız yorumlamadan kaçınmak (örneğin, kodu görüntülemek istiyorsanız). W3 diğer karakter kodlarını göstermek için harika bir sayfası vardır .


Deneyin: <p>Hello &nbsp; There</p>VEYA <p>Hello &nbsp; &nbsp; &nbsp; There</p>(Kırılma bir sorun değilse, önce ve sonra Düzenli boş alanı kullanarak bazı bitleri kaydedebilirsiniz &nbsp;).
Cyborg
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.