2013-08-21 57 views
5

Một số ô trong bảng của tôi có số lượng nội dung thực sự lớn. Tôi không muốn hiển thị tất cả chúng cho đến khi người dùng di chuyển trên các tế bào, nhưng tôi muốn đặt một mũi tên ở góc để cho biết nó có thể được lơ lửng - giống như trong bình luận excel. Làm thế nào tôi có thể làm điều này bằng cách sử dụng CSS?vẽ một mũi tên bên trong ô bảng bằng cách sử dụng CSS

an arrow in the corner indicating can be hovered

+0

Làm thế nào để bạn hiển thị nội dung thêm vào lơ lửng? –

+0

@MrLister Tôi đang sử dụng plugin công cụ, nhưng thành thật mà nói, tôi đã thử một vài, nhưng tất cả đều không lý tưởng. Lý do là 1). nội dung bổ sung chứa các đánh dấu kiểu 2). nội dung bổ sung có thể thực sự lớn và đầu công cụ có vị trí thực sự kỳ lạ. 3). mẹo công cụ không thể chọn được. Tôi hoan nghênh bất kỳ lựa chọn thay thế tốt hơn so với công cụ-tip. – Sawyer

+1

Bạn có thể sử dụng thuộc tính data nếu bạn muốn và hiển thị nó với phần tử giả ... Điều đó có thể thật tuyệt. Tôi nghĩ rằng tôi có một ví dụ ở đâu đó - đi đến câu trả lời trước đây của tôi ... Edit: Tìm thấy nó - http://stackoverflow.com/a/17819100/1150613 – brbcoding

Trả lời

10

Sử dụng CSS Shapes và pseudo-yếu tố:

HTML

<table> 
    <tr><td class="comment">Foo</td></tr> 
</table> 

CSS

* { margin: 0; padding: 0;} 
td { border: 1px solid black; } 
.comment:after { 
    content: ""; 
    position: relative; 
    top: 0.5em; 
    border-left: 0.5em solid transparent; 
    border-top: 0.5em solid red; 
} 

DEMO

câu trả lời Cập nhật để sửa chữa gói:

/* add relative positioning to the td */ 
td { border: 1px solid black; position: relative; } 
/* and absolute positioning for the triangle */ 

.comment:after { 
    content: ""; 
    position: absolute; 
    /* left: calc(100% - 0.5em); */ 
    /* use right: 0; instead */ 
    right: 0; 
    top: 0; 
    border-left: 0.5em solid transparent; 
    border-top: 0.5em solid red; 
} 

Fixed Demo

+0

Thực ra tôi gặp vấn đề nhỏ với câu trả lời này, khi văn bản kết thúc tốt đẹp trong ô, mũi tên thay vì ở góc trên bên phải của ô, nó xuất hiện tại phần trên của từ cuối cùng. Tôi đã di chuyển mũi tên sang góc trên bên trái như một giải pháp. – Sawyer

+0

Ah, điểm xấu --- tốt của tôi ... Cập nhật để sửa lỗi đó. – brbcoding

+2

Cần lưu ý rằng vị trí tuyệt đối trong ô bảng với 'vị trí: tương đối' [không hoạt động trong Firefox] (https://bugzilla.mozilla.org/show_bug.cgi?id=63895). Vì vậy, một wrapper thêm với 'display: block; vị trí: relative' có thể là cần thiết để làm cho giải pháp này qua trình duyệt. –

1

Chỉ cần thay thế 100 với chiều rộng và chiều cao của bạn, và thêm một vị trí ở một nơi ngay

.triangle-topright { 
    width: 0; 
    height: 0; 
    border-top: 100px solid red; 
    border-left: 100px solid transparent; 
} 
2

Bạn có thể sử dụng hình dạng CSS và định vị tuyệt đối để thực hiện điều này.

Dưới đây là một fiddle: http://jsfiddle.net/pNmQg/

table td { position: relative; } 
table td span.arrow { 
    position: absolute; 
    top: 0; 
    right: 0; 
    border-top: 5px solid red; 
    border-left: 5px solid transparent; 
} 
+0

Dấu tích đó ở trên cùng bên phải cửa sổ chứ không phải ô cho tôi. (FF22, Linux) –

+0

@Cobra_Fast - Bạn phải có 'vị trí: tương đối' trên' td', nếu không thì khoảng thời gian sẽ chuyển đến phụ huynh kế tiếp không tĩnh hoặc chính cửa sổ đó. – Shauna

+0

@Shauna Tôi đang nói về fiddle liên kết. –

0

tôi tìm thấy một giải pháp phù hợp cho tất cả các trình duyệt --- Tested.

  .arrow-right-1 { 
 
      position: absolute; 
 
      top: -1px; 
 
      right: -5px; 
 
      float: right; 
 
      width: 0; 
 
      height: 0; 
 
      border-left: 10px solid transparent; 
 
      border-right: 10px solid transparent; 
 
      border-bottom: 10px solid red; 
 
      
 
      transform: rotate(45deg); 
 
      } 
 
      
 
      
 
      
 
      td { 
 
      border: solid 1px blue; 
 
      width: 220px; 
 
      height: 100px; 
 
      /* padding: 0px !important; */ 
 
      /* vertical-align: top; */ 
 
      position: relative; 
 
      }
<table class="table"> 
 

 
    <tbody> 
 
    <tr> 
 
     <td> 
 
     <div class="arrow-right-1"></div>you can increase or decrease the size td's width/height or can put more text 
 
     </td> 
 

 
    </tr> 
 

 
    </tbody> 
 
</table>

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