Sự khác biệt giữa những gì & nbsp; và hoàng chí?


146

Cả hai đều có nghĩa là không gian, nhưng có sự khác biệt?

Câu trả lời:


195

Một là không gian không phá vỡ và hai là không gian thông thường. Một không gian không phá vỡ có nghĩa là dòng không nên được bọc tại điểm đó, giống như nó sẽ không được bọc ở giữa một từ.

Hơn nữa, như Svend chỉ ra trong nhận xét của mình, các không gian không phá vỡ không bị sụp đổ.


42
& nbsp; cũng không sụp đổ, đó có lẽ là khía cạnh quan trọng nhất trong việc sử dụng chúng (ít nhất, đó là cách tôi có xu hướng sử dụng chúng, bỏ đi, nhanh chóng và dễ dàng)
Svend

46
Protip: Vui lòng không sử dụng 15% nbsp; liên tiếp để tạo khoảng trống. Làm tôi phát điên khi thấy mọi người làm điều đó. Sử dụng đệm CSS hoặc lề.
Matthew Rapati

5
Nó khiến tôi phát điên khi thấy Microsoft Word làm điều đó, quá nữa
Josh Lee

@Amarghosh: Chỉ là loại đạo sư mà tôi luôn muốn trở thành ... :)
Brian Rasmussen

1
Ngoài ra còn có các kích thước khác của các thực thể giãn cách, như &hairsp      bạn có thể thấy và thử nghiệm tại [ jsfiddle.net/medmunds/4crt3c9j/]
Mark Gavagan 6/12/2016

70

Thực thể  tạo ra một không gian không phá vỡ, được sử dụng khi bạn không muốn ngắt dòng tự động tại vị trí đó. Không gian thông thường có mã ký tự 32, trong khi không gian không phá vỡ có mã ký tự 160.

Ví dụ: khi bạn hiển thị các số có khoảng trắng dưới dạng dấu phân cách hàng nghìn: 1 234 567, thì bạn sử dụng các khoảng trắng không phá vỡ để số đó không thể được chia trên các dòng riêng biệt. Nếu bạn hiển thị tiền tệ và có một khoảng cách giữa số tiền và tiền tệ: 42 SEK, thì bạn sử dụng khoảng trắng không phá vỡ để bạn không nhận được số tiền trên một dòng và loại tiền tiếp theo.


3
Ví dụ hay về việc sử dụng. Tôi đã tìm kiếm một số bản thân mình, nhưng không thể nghĩ về họ.
Pete

47

Ngoài các câu trả lời khác ở đây, các không gian không phá vỡ sẽ không bị "sụp đổ" như các không gian thông thường. Ví dụ: cả hai

<p>Word1          Word2</p>

<p>Word1 Word2</p>

sẽ hiển thị tương tự trên bất kỳ trình duyệt nào, trong khi

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

sẽ giữ khoảng trắng khi được hiển thị.


Không, sau đó tôi đã kết thúc với & amp; khắp. Nó không diễn giải & amp nhưng nó đã diễn giải & nbsp.
Graeme Perrow

33

Không phải là một câu trả lời nhiều như ví dụ ...

Ví dụ 1:

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

Ví dụ # 2:

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

Và liên kết đến các fiddle .


2
Không cần liếc qua câu trả lời khác IMHO. 9 năm, vẫn còn hiệu lực.
snr

10

Bạn có thể xem một ví dụ làm việc ở đây:

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

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

Cùng một div, cùng một văn bản, các "khoảng trắng" khác nhau

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

đấu với

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

Bạn có thể vui lòng giải thích cho tôi, tại sao downvote câu trả lời này?
alberto-Bottarini

Tôi đã nâng cấp nó. Tôi nghĩ nó không giải thích mọi thứ. Tuy nhiên, bạn đang chỉ ra một cái gì đó trực quan hữu ích.
Nishant

1
Các câu hỏi và câu trả lời SO được cho là khép kín. Một liên kết bên ngoài đến codepen cũng được cho phép, nếu câu trả lời đầy đủ cũng được bao gồm trong bài trực tiếp. Để tuân thủ chính sách SO, editbài đăng của bạn bao gồm đầu ra kết quả của mã trong câu trả lời của bạn hoặc để thêm phiên bản mã hóa nhúng của SO, để khách truy cập có thể chạy mã ans xem kết quả mà không cần rời khỏi trang bên ngoài. Lý do cho chính sách khép kín là nếu liên kết trở nên không thể truy cập được, câu trả lời sẽ trở nên vô dụng. Ngoài ra, đó là UX kém khi yêu cầu người dùng rời đi, chỉ để nhận được câu trả lời.
SherylHohman

6

Nhiều ký tự khoảng trắng bình thường (dấu cách, dấu cách và ngắt dòng) được coi là một ký tự khoảng trắng đơn :

Đối với tất cả các thành phần HTML ngoại trừ PRE, các chuỗi từ "khoảng trắng" riêng biệt (chúng tôi sử dụng thuật ngữ "từ" ở đây để có nghĩa là "chuỗi các ký tự không phải khoảng trắng"). Khi định dạng văn bản, tác nhân người dùng nên xác định các từ này và sắp xếp chúng theo các quy ước của ngôn ngữ viết cụ thể (tập lệnh) và phương tiện đích.

Vì thế

foo    bar

được hiển thị dưới dạng

foo bar

Nhưng không gian nghỉ luôn được hiển thị. Vì thế

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

được hiển thị dưới dạng

foo   bar

5

Như đã đề cập, bạn sẽ không nhận được ngắt dòng khi có "khoảng trống không ngắt".

Ngoài ra, hãy cảnh giác, các yếu tố chỉ chứa "" có thể hiển thị không chính xác, trong đó & nbsp; sẽ làm việc. Ít nhất là 6 (theo như tôi nhớ, IE7 có cùng một vấn đề), nếu bạn có một phần tử bảng trống, nó sẽ không áp dụng kiểu dáng, ví dụ như viền, cho phần tử, nếu không có nội dung hoặc chỉ có màu trắng không gian. Vì vậy, những điều sau đây sẽ không được hiển thị với viền:

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

Trong khi đó các đường viền sẽ hiển thị trong ví dụ này:

<td>& nbsp;</td>

Hmm -để đặt vào một không gian giả để khiến nó hiển thị chính xác ở đây


@Stewart - Tôi đã thử với amp, và nó hoạt động trong văn bản, nhưng không phải ở mã exmple - bởi vì nó cũng đã viết phần "amp" ra
Pete

Rất lạ. Rõ ràng là một lỗi.
Stewart

2

Cái đầu tiên không được coi là khoảng trắng bởi trình phân tích cú pháp HTML, cái thứ hai là. Do đó, "" không được đảm bảo hiển thị trong một số đánh dấu HTML nhất định, trong khi không gian không thể phá vỡ sẽ luôn hiển thị.


1

&nbsp; nên được xử lý như một khoảng trắng.

&nbsp;&nbsp; nên được xử lý như hai khoảng trắng

'' có thể được xử lý như một khoảng trắng không thú vị

'' + '' có thể được xử lý dưới dạng một ''


1

&nbsp; có thể xếp chồng lên nhau, nghĩa là bạn có thể tạo nhiều không gian cùng nhau.

HTML sẽ chỉ phân tích một dấu cách '' và nó bỏ phần còn lại ...

Nếu bạn muốn năm không gian, bạn sẽ đặt 5 x &nbsp;


0

@Zoidberg là đúng, ví dụ:

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

sẽ không hiển thị không gian giữa các đánh dấu tiêu đề, với

& nbsp ; 

sẽ làm không gian :)


0

Khi có ngắt dòng, dòng sẽ không bị vỡ khi bạn sử dụng $ bnsp; bởi vì đó là một "không gian không phá vỡ". Điều này có thể quan trọng nếu bạn có một số tên sản phẩm nhất định hoặc như vậy, luôn luôn được viết cùng nhau.

Có thể thú vị nếu bạn (phải) sử dụng khoảng trắng làm dấu phân cách trong các số, như 12344567, được hiển thị 12 344 567 ở Pháp. Không có dòng sẽ phá vỡ ở giữa số, rất xấu. Kiểm tra: 12 344 567


0

TLDR; Ngoài câu trả lời được chấp nhận; Một là ẩn và một là rõ ràng.

Khi HTML bạn đã viết hoặc đã tạo bởi ứng dụng / thư viện / khung được đọc bởi trình duyệt của bạn, sẽ tốt nhất là diễn giải ý nghĩa của HTML của bạn (có thể thay đổi từ trình duyệt này sang trình duyệt khác). Khi bạn sử dụng mã thực thể HTML, bạn sẽ cụ thể hơn đối với trình duyệt. Bạn đang nói rõ ràng rằng bạn muốn hiển thị một ký tự cho người dùng (và không phải là bạn chỉ cách nhau HTML của mình để dễ đọc hơn cho nhà phát triển chẳng hạn).

Để cụ thể hơn, nếu HTML đầu ra là:

<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>

Trình duyệt sẽ chỉ hiển thị một khoảng trắng giữa tất cả các từ này (ngay cả những từ đã được thụt lề để dễ đọc hơn cho nhà phát triển.

Tuy nhiên, nếu bạn đặt điều tương tự và chỉ thay đổi <p>thẻ thành:

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

Sau đó, nó sẽ hiển thị các khoảng trắng, như bạn đã hướng dẫn nó rõ ràng hơn. Có một số lịch sử sử dụng các không gian này để tạo kiểu. Việc sử dụng này đã phần nào được giảm bớt khi CSS đã hoàn thiện. Tuy nhiên, vẫn có những cách sử dụng hợp lệ cho nhiều thực thể ký tự HTML: tránh giải thích bất ngờ / vô ý (ví dụ: nếu bạn muốn hiển thị mã). Các w3 có một trang tuyệt vời để hiển thị các mã ký tự khác .


Hãy thử: <p>Hello &nbsp; There</p>HOẶC <p>Hello &nbsp; &nbsp; &nbsp; There</p>(Nếu phá vỡ không phải là vấn đề, bạn có thể lưu một số bit bằng cách sử dụng không gian trống thông thường trước và sau mỗi lần &nbsp;).
Cyborg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.