Câu trả lời:
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 đổ.
&hairsp      
bạn có thể thấy và thử nghiệm tại [ jsfiddle.net/medmunds/4crt3c9j/]
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.
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>
và
<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 Word2</p>
sẽ giữ khoảng trắng khi được hiển thị.
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 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 .
Bạn có thể xem một ví dụ làm việc ở đây:
http://codepen.io/anon/pen/GJzBxo
và
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 ]</div>
edit
bà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.
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   bar
được hiển thị dưới dạng
foo bar
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
nên được xử lý như một khoảng trắng.
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 ''
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
@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 :)
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
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 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 .
<p>Hello There</p>
HOẶC <p>Hello 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
).