2013-08-30 51 views
29

Tôi đang gặp rắc rối bởi vì tôi có một div Tôi muốn tập trung và những gì tôi đã thường được cho biết để làm được điều này:Căn giữa div chiều rộng tự động?

width: 700px; 
margin-left: auto; 
margin-right: auto; 

những rắc rối là, này là dành cho bạn nếu muốn div được chiều rộng cố định. Tôi muốn div để điều chỉnh kích thước của nó dựa trên văn bản trong div và vẫn được căn giữa. Tôi đã thử:

width: auto; 
margin-left: auto; 
margin-right: auto; 

nhưng điều này không hiệu quả. Nó kéo dài div để lấp đầy màn hình khi tôi làm điều này.

Mọi người đều biết phải làm gì ở đây?

+0

cho div của bạn có chiều rộng nhất định và tốt hơn sắp xếp văn bản của bạn như bạn muốn !! div sẽ vẫn theo vị trí bạn đưa ra, văn bản sẽ nhận được ở giữa, nếu bạn căn chỉnh văn bản: trung tâm; –

+0

Đó là những gì tôi đang cố gắng tránh - cho div của tôi một chiều rộng cố định –

+0

@DanK bạn có thể dán html của bạn hay tạo một fiddle, điều này sẽ giúp dễ hiểu. –

Trả lời

1

Bạn có thể muốn thử CSS display:table-cell hoặc display:table

+0

Phải - Tôi đã thử hiển thị: thuộc tính bảng nhưng loại bỏ các cột mà tôi có trong div của mình ... –

0

EDITED:

sử dụng table, nó có thể được dễ dàng hơn để phong cách. Sau đó, thêm div vào số tr

+0

Tôi thực sự có các cột trong div của tôi, và các cột trải ra để lấp đầy màn hình vì chiều rộng: auto. Các cột có chiều rộng cố định - nhưng div cha là chiều rộng: auto –

+0

Tôi đã thử hiển thị: bảng - nhưng b/c Tôi có các cột trong div của tôi nó không hoạt động. Các cột được loại bỏ và chỉ có một cột xuất hiện ở giữa trang. –

36

cho khối hoặc nội dung chính - text-align:center; cho khối trung tâm- display:inline-block;

.center{display:inline-block;background:red} 
body{text-align:center} 

<div class="center"> 
    <p contenteditable="true">write text</p> 
</div> 

DEMO http://jsfiddle.net/RXP4F/

Content Editable MDN

+0

Thật không may đã không hoạt động - nhưng cảm ơn bạn! –

+2

Đã làm việc tuyệt vời! Cảm ơn! – tibelchior

+1

không hoạt động. những gì là contenteditable? và thẻ body không liên quan đến câu hỏi. –

3

Hãy thử cấu trúc này.

<div class="container"> 
    <div class="center_div"> 

    </div> 
</div> 



.container{ 
    float: left; 
    left: 50%; 
    position: relative; 
} 
.center_div{ 
    position: relative; 
    left: -50%; 
    float: left; 
} 
+0

Cảm ơn bạn - nhưng tôi nghĩ b/c Tôi có các cột trong "center_div" của tôi không hoạt động tốt với CSS đó. Div vùng chứa của tôi là #Body và div tôi đang cố gắng căn giữa với chiều rộng: auto là #Content của tôi. –

8

bạn đã thử phương pháp được hiển thị ở đây chưa? http://www.tightcss.com/centering/center_variable_width.htm

về cơ bản. đưa nội dung của bạn bên trong một nổi div đặt réo rắt phát div trong vòng một nổi div

đặt trái: 50%, vị trí tương đối trên div ngoài đặt trái: -50%, vị trí tương đối trên div bên trong

cuối cùng , tổ tất cả mọi thứ trong hơn một div với overflow: hidden

.outermost-div{ 
    background-color: blue; 
    overflow:hidden;  
} 

.inner-div{ 
    float:left; 
    left:50%; 
    background-color: yellow; 
    position: relative; 
} 

.centerthisdiv { 
    position:relative; 
    left: -50%; 
    background-color: green; 
    float:right; 
    width:auto; 
} 

đây là cuộc biểu tình jsfiddle tôi: http://jsfiddle.net/wbhyX/1/

+0

Đây phải là câu trả lời được chấp nhận cho tôi ^^ Cảm ơn bạn @shinjin –

0

.outer-container { vị trí: tương đối; còn lại: 50%; float: left; rõ ràng: cả hai; lề: 10px 0; căn chỉnh văn bản: bên trái; }

.inner-container { nền: đỏ; vị trí: tương đối; còn lại: -50%; căn chỉnh văn bản: bên trái; }

0

Căn giữa phần tử theo chiều ngang có thể hơi lạ, vì chức năng không trực quan lắm.Thực sự, bạn cần chơi trò chơi với text-align:center;margin:auto, và bạn sẽ cần phải biết khi nào nên sử dụng trò chơi nào.

Ví dụ: nếu tôi muốn căn giữa nội dung của phần tử (văn bản thô), bao gồm các nút và đầu vào, tôi có thể sử dụng text-align:center.

.text-center { 
 
    text-align:center; 
 
}
<div class="text-center" style="border:1px dashed blue;padding:6px;" > 
 
    My contents are centered! That includes my <input placeholder="inputs" /> and my <button>buttons.</button> 
 
</div>

Nếu chúng ta thêm các yếu tố khác để chứa chúng tôi, những yếu tố sẽ có chiều rộng của họ buộc phải 100%. Điều này giúp chúng ta mô phỏng rằng nó được căn giữa bởi vì về mặt kỹ thuật, ở 100%, nó là trung tâm! Silly, phải không?

.text-center { 
 
    text-align:center; 
 
}
<div class="text-center" style="border:1px dashed blue;padding:6px;" > 
 
    My contents are centered! That includes my <input placeholder="inputs" /> and my <button>buttons.</button> 
 
    <p style="background-color:orange;width:auto" >Even though my width is explicitly defined as "auto," I still have 100% width! What gives?!</p> 
 
</div>

Nếu sở hữu chiều rộng của bạn được xác định tuy nhiên, sau đó bạn có thể sử dụng margin: auto phong cách vào trung tâm nó trong phụ huynh.

<div style="margin:auto;border:1px solid black;width:300px;" > 
 
    I am centered! 
 
</div>

Bạn cần phải xác định giải pháp tốt nhất cho bạn. Tôi ước tôi có thể giúp đỡ nhiều hơn, nhưng thật khó để biết giải pháp nào phù hợp nhất với nhu cầu của bạn khi bạn chưa cung cấp HTML cho bạn!

Dù bằng cách nào, tôi hy vọng this JSFiddle sẽ giúp mọi thứ rõ ràng!

2

Sử dụng margin: 0px auto; and display: table; Có dụ: https://jsfiddle.net/da8p4zdr/

Các vấn đề liên quan