2015-05-06 13 views
9

Vì vậy, tôi có phần tử cha mẹ của tôi được định vị tương đối, để cho phép một phần tử tooltip được định vị tuyệt đối bên trong, ở trên cùng của nó. Tôi biết rằng bạn được yêu cầu thêm "left: 0, right: 0", để độ rộng của phần tử vẫn có thể được đặt thành tự động, mà tôi đã thực hiện. Tuy nhiên, phần tử cha của tôi có chiều rộng cố định, mà chú giải công cụ sẽ bị hạn chế, vì vậy chiều rộng tự động không thể đi ra ngoài nó, có cách nào xung quanh điều này không?Phần tử tuyệt đối định vị CSS, chiều rộng tự động bên ngoài giới hạn của cha mẹ?

CSS:

.parent { 
    position: relative; 
    width: 100px; 
    height: 100px; 
} 

.tooltip { 
    position: absolute; 
    top: 0; 
    left: 0; 
    right: 0; 
    margin: 0 auto; 
    text-align: center; 
    width: auto; 
    padding: 5px 10px; 
} 

Elements:

<div class="parent"> 
    <div class="tooltip">Text goes here</div> 
</div> 

Không JS xin, tìm kiếm một giải pháp CSS, cảm ơn!

+0

'{đúng: -20px} ' – isherwood

+0

Hình như css của bạn cần' .tooltip' thay vì' .child' ... –

+0

@HonoreDoktorr Đó chỉ là một sai lầm khi thay đổi tên lớp ở đây. – Danny

Trả lời

25

Không đặt cả leftright trên .tooltip, và thiết lập white-space: nowrap nên làm điều đó:

.tooltip { 
    position: absolute; 
    top: 0; 
    left: 0; 
    margin: 0 auto; 
    text-align: center; 
    width: auto; 
    padding: 5px 10px; 
    white-space: nowrap; 
} 

Working example.

Bạn cần sử dụng this solution để căn giữa phần tử tuyệt đối. Nó đòi hỏi một yếu tố bổ sung, mặc dù. Demo

+0

Cảm ơn bạn, điều này hoạt động các điều khoản về chiều rộng, nhưng bây giờ phần tử của tôi không còn được căn giữa bên trong bố mẹ nữa! – Danny

+1

Bạn có thể sử dụng 'margin-left: -50%' cho điều đó (và không làm 'margin: 0 auto', mà sẽ không tập trung các khối vị trí hoàn toàn), mặc dù có các vấn đề cắt khi' .parent' nằm trên bên trái của trang. Xem http://jsfiddle.net/xkok9v4p/2/ để biết ví dụ. –

+0

@isherwood thực sự là đúng, ví dụ thứ hai của tôi chỉ * có vẻ * để làm việc b/c của chiều dài của tooltip ví dụ của tôi nhưng điều này không: http://jsfiddle.net/xkok9v4p/4/ –

1

Tôi chưa từng gặp vấn đề này trước đây, nhưng những gì tôi nghĩ đang diễn ra, là width: auto; sẽ tự động kế thừa các thuộc tính của cha mẹ. Vì vậy, hoặc bạn phải đặt một số trong (width: 50px;) hoặc một tỷ lệ phần trăm (width: 50%).

+0

Tôi muốn chiều rộng là chất lỏng dựa trên nội dung của nó, tại thời điểm nó không thể đi bất kỳ lớn hơn 100px của phụ huynh, văn bản mang trên tràn bên ngoài của nó nhưng chiều rộng phần tử thực tế chỉ là 100px – Danny

2

Nếu .parent thể được thực hiện nội tuyến, bạn có thể làm .tooltip render như một bảng và nó sẽ AutoSize để phù hợp với nội dung của nó, nhưng không giống với việc sử dụng white-space:nowrap, nó cũng sẽ hỗ trợ một max-width.

.parent { 
    display: inline; 
    position: relative; 
} 

.tooltip { 
    position: absolute; 
    display: table; 
    top: 0; 
    left: 0; 
    text-align: center; 
    padding: 5px 10px; 
    max-width: 200px; 
} 
+1

Đây phải là câu trả lời được chấp nhận. – StephenRios

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