Chiều rộng CSS của thẻ <span>


81

Tôi sử dụng <span>thẻ trong tiêu đề mô-đun của mình, ví dụ:

<span>Categories</span>.

Tôi chỉ định màu nền / hình ảnh, chiều rộng và chiều cao của span trong css.

Nhưng chiều rộng của span phụ thuộc vào nội dung / văn bản của nó.

Vì vậy, nếu tôi làm vậy <span></span>, chỉ với một hình ảnh / màu nền trong css, không có gì xuất hiện.

Tất nhiên, tôi muốn một cái gì đó xuất hiện.

Làm cách nào để giải quyết vấn đề này?


4
Tôi chỉ muốn chỉ ra rằng đây không phải là cách sử dụng span rất tốt. Nó có nghĩa là để đánh dấu các phạm vi nội dung ngắn trong một tổng thể lớn hơn, vì vậy nó cố ý không phải là một phần tử khối theo mặc định. Đối với tiêu đề, một trong các thẻ h # sẽ là tốt nhất. Không đạt được điều đó, một div vẫn tốt hơn một nhịp.
Chuck

cảm ơn vì câu trả lời của bạn ..: D Tôi thấy đây là một điều ngớ ngẩn khi bắt đầu. =))
mars-o

Câu trả lời:


114

Bạn có thể đặt thuộc tính hiển thị thành "block" một cách rõ ràng để nó hoạt động giống như một phần tử cấp khối, nhưng trong trường hợp đó, bạn có thể chỉ nên sử dụng div để thay thế.

<span style="display:block; background-color:red; width:100px;"></span>

cảm ơn, tôi hiểu. điều đó xảy ra bởi vì span là nội tuyến. bây giờ tôi thấy sự khác biệt đặt cược. nội dòng & hiển thị khối. vâng, div là phù hợp
D..cảm ơn

4
Sử dụng DIV bên trong các đoạn văn, tiêu đề (h1, h2, v.v.) sẽ phá vỡ xác thực nếu bạn quan tâm đến điều đó. Một cách xử lý khác có thể xảy ra là sử dụng span, display: block; và float: left; :)
Arve Systad

cảm ơn, và câu trả lời dưới đây là rất quan trọng để có được làm việc rộng
Timothy T.

3
nó là tốt hơn để sử dụng inline-blockthay vìblock
Eugen Konkov

125

nhịp mặc định thành kiểu nội tuyến, mà bạn không thể chỉ định chiều rộng của.

display: inline-block;

sẽ là một cách tốt, ngoại trừ IE không hỗ trợ nó

tuy nhiên, bạn có thể hack nhiều giải pháp trình duyệt


2
Tôi tin rằng IE hỗ trợ khối nội tuyến kể từ ít nhất là phiên bản 6. Tôi nghĩ rằng nó chỉ hỗ trợ khối nội tuyến nếu phần tử được áp dụng cho nó là nội tuyến tự nhiên (mà <span> là).
Ken Browning

3
Đúng, IE không hỗ trợ khối nội tuyến. Hỗ trợ của nó là khác nhau một cách tinh tế, nhưng nó sẽ hoạt động trong trường hợp này.
thomasrutter

Tuyệt vời! Bắt đầu hiểu sự khác biệt thực sự trong màn hình:
Dean Meehan

6

Bạn không thể chỉ định chiều rộng của một phần tử có nội tuyến hiển thị. Bạn có thể đặt một cái gì đó vào nó như một khoảng trắng không ngắt () và sau đó đặt phần đệm để tạo thêm chiều rộng cho nó nhưng bạn không thể kiểm soát nó trực tiếp.

Bạn có thể sử dụng khối nội tuyến hiển thị nhưng điều đó không được hỗ trợ rộng rãi.

Một cuộc tấn công thực sự sẽ là đặt một hình ảnh bên trong và sau đó thiết lập chiều rộng của hình ảnh đó. Một cái gì đó giống như GIF 1 pixel trong suốt. Tuy nhiên, không phải là cách tiếp cận được khuyến nghị.


3

Tôi sẽ sử dụng paddingthuộc tính. Điều này sẽ cho phép bạn thêm một số lượng pixel đã đặt vào một trong hai bên của phần tử mà phần tử không làm mất chất lượng nhịp của nó:

  • Nó sẽ không trở thành một khối
  • Nó sẽ trôi như bạn mong đợi

Tuy nhiên, phương pháp này sẽ chỉ thêm vào phần đệm, vì vậy nếu bạn thay đổi độ dài của nội dung (ví dụ: từ Danh mục thành Thẻ) thì kích thước của nội dung sẽ thay đổi và kích thước tổng thể của phần tử cũng sẽ thay đổi. Nhưng nếu bạn thực sự muốn đặt một kích thước cứng nhắc, bạn nên làm như đã đề cập ở trên và sử dụng một div.

Xem mô hình hộp để biết thêm chi tiết về mô hình hộp, nội dung, phần đệm, lề, v.v.


3

Giống như trong các câu trả lời khác, hãy bắt đầu các thuộc tính span của bạn với điều này:

display:inline-block;  

Bây giờ bạn có thể sử dụng padding nhiều hơn chiều rộng:

padding-left:6%;
padding-right:6%;

Khi bạn sử dụng padding, màu của bạn sẽ mở rộng sang cả hai bên (phải và trái), không chỉ sang phải (như trong widht).


2

Sử dụng thuộc tính 'display' như trong ví dụ:

<span style="background: gray; width: 100px; display:block;">hello</span>
<span style="background: gray; width: 200px; display:block;">world</span>

1

Sau khi cố định chiều cao và chiều rộng, bạn sẽ cho biết cách xử lý nếu văn bản bên trong nó tràn ra khỏi khu vực của nó. Vì vậy, hãy thêm vào css

tràn: tự động;

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.