2013-06-18 19 views
8

Đây là giao dịch. Thay vì chỉ gạch dưới đoạn văn của tôi và sử dụng text-align, tôi muốn thêm một đường viền chấm chấm bên dưới và đặt nó vào bên trong của trang mẹ div. Đây là mã của tôi không hoạt động. (Nó cho biết thêm biên giới trên toàn bộ div thay vì chỉ là đoạn)Làm thế nào để đặt chiều rộng đoạn tự động trong CSS?

p { 
    border-bottom:1px dotted; 
    margin-left:auto; 
    margin-right:auto; 
    text-align:center; 
} 

Đoạn dường như được tham gia vào độ rộng của phụ huynh div. Có cách nào để thiết lập chiều rộng của đoạn văn bản của nó không? (Dường như margin:auto sẽ làm việc nếu có thể.)

Trả lời

28

khoản sẽ mở rộng sang chiều rộng của container của họ. Để làm cho nó không làm điều đó, bạn có thể thử:

p { display: inline-block; } 

Fiddle với ví dụ: http://jsfiddle.net/HuFZL/1/

Ngoài ra, bạn có thể muốn quấn p thẻ trong thêm một div, nếu bạn cần đến chúng để xóa đoạn văn khác/yếu tố.

+0

Chỉ là những gì tôi đang tìm kiếm, cảm ơn. – user2020058

+3

display: table hiệu quả hơn, và không cần phải đặt chúng làm inline-box và sau đó bọc chúng vào div –

+0

Tôi không biết về 'display: table' và sizing. Trước đây tôi đã nhắm mục tiêu IE7, vì vậy tôi là một chút không biết gì về nó. Cảm ơn! – SlightlyCuban

1

Hãy thử thêm một giá trị chiều rộng khoản của bạn, nếu không đoạn sẽ lấp đầy toàn bộ chiều rộng của vùng chứa mẹ và các giá trị biên độ sẽ không làm bất cứ điều gì:

p { 
    border-bottom:1px dotted; 
    margin-left:auto; 
    margin-right:auto; 
    text-align:center; 
    width: 100px; /* whatever width you want */ 
} 
+0

Cảm ơn bạn đã trả lời, nhưng đối với một đoạn nhỏ hơn mà sẽ để lại một biên giới dài hơn văn bản. Tôi đang tìm một cách để biên giới chỉ kéo dài chiều rộng của văn bản. – user2020058

+0

Giá trị chiều rộng tối đa thay vì chỉ định chiều rộng là bao nhiêu? Bạn có thể đăng tất cả mã của bạn hoặc tạo một Fiddle không? –

0

Đây là những gì tôi đã cố gắng ....

<html> 

<style> 
{ 
border-bottom:1px dotted; 
margin-left:auto; 
margin-right:auto; 
text-align:center; 
} 

#custom 
{ 
width : 10px; 
} 

</style> 

<div id="custom"><p>dddd</p></div> 

</html> 
4

nếu bạn muốn đoạn để giữ xếp chồng lên nhau và phát triển từ nội dung của họ, những gì bạn nên cần là:

p { 
     display: table; 
     margin:auto; 
     border-bottom:1px dotted; 
} 
0

Không, lề tự động sẽ không thay đổi kích thước của các yếu tố đoạn. Nó chỉ đơn giản là cố gắng tự động xác định kích thước lề thích hợp trên các mặt có kích thước tự động của phần tử. Về cơ bản, nếu bạn muốn đoạn văn nhỏ hơn div chứa nó, bạn có thể đặt chiều rộng tĩnh của đoạn văn là chiều rộng cụ thể hoặc phần trăm chiều rộng bên trong của phần tử gốc. Một tùy chọn khác nếu bạn không muốn thực hiện bất kỳ kích thước tĩnh nào của đoạn văn sẽ là đặt padding trên phần tử cha hoặc đặt lề tĩnh trên đoạn (s).

div.paragraph-container { 
    padding: 20px; /* or padding: 20px 20px 20px 20px; sets all the padding individually (top, right, bottom, left) */ 
} 

Điều này sẽ làm cho tất cả các đoạn văn trung tâm bên trong div và nhỏ hơn 40px giả định các đoạn không có lề.

div.paragraph-container p { 
    margin: 10px 20px; /* sets the margin on the paragraph(s) to 10px on top and bottom and 20px on left and right which does the same as the first example assuming that the div does not have padding. */ 
} 

Nếu bạn muốn biên giới để được chính xác độ rộng của văn bản thì:

div.paragraph-container p { 
    border-bottom: 1px dotted black; 
    padding: 0px 0px 5px 0px; 
    margin: 10px 20px; 
} 

div.paragraph-container { 
    padding: 0px; 
} 

Giả sử các văn bản lấp đầy các yếu tố đoạn thì đây sẽ làm việc. Nếu bạn có 2 từ trong đoạn văn thì nó sẽ không chỉ rộng bằng văn bản. Cách duy nhất để kéo điều đó sẽ là với một phần tử nội tuyến như một khoảng hoặc một phần tử đã được đặt thành display: inline;, nhưng các phần tử nội tuyến sẽ bị lộn xộn song song trừ khi bạn đặt một phần tử khối giữa chúng.

+0

Cảm ơn bạn đã thêm cú pháp tô sáng, @Hemerson. Bây giờ tôi biết làm thế nào để làm điều đó. – txpeaceofficer09

0

Bullet cách chứng minh

HTML

<div class="container"> 
<p><p> 
</div> 

CSS

.container { text-align:center; } 
.container p { 
    display: table; 
    margin:0 auto; 
    display: inline-block; 
    zoom: 1; 
    *display: inline; 
} 
+1

sẽ không ghi đè giá trị hiển thị thứ hai đầu tiên? – Izzy