2012-11-03 19 views
54

thể trùng lặp:
How do I select the “last child” with a specific class name in CSS?CSS: Làm thế nào để nói .class:-of last-loại [lớp học, chứ không phải yếu tố!]

Như tiêu đề nói, tôi muốn địa chỉ css quy tắc để các yếu tố cuối cùng của một loại nhất định trong đó có một lớp nhất định. Các mã sau hoạt động hoàn hảo:

div:last-of-type { margin-right:0; } 

nhưng tôi muốn một cái gì đó giống như

div.class:last-of-type { margin-right:0; } 

Làm thế nào để làm điều này?

+2

Điều này có thể được thực hiện bằng một selector thuộc tính: [ class = 'class']: last-of-type {margin-right: 0;} Xem ví dụ làm việc tại đây http://codepen.io/chasebank/pen/ZYyeab Đọc thêm về các bộ chọn thuộc tính ở đây http: // css- tricks.com/attribute-selectors/ – Chase

+2

Không, bộ chọn không hoạt động ở đây: [class = 'class']: last-of-type được hiểu là "cuối cùng của loại miễn là nó có lớp này ", không phải là" cuối cùng của những người có lớp này ". –

Trả lời

55

Rất tiếc, không thể tìm thấy .class cuối cùng với last-of-type.

Sửa: Để thực sự thêm một cái gì đó mang tính xây dựng để câu trả lời này, bạn có thể dự phòng để hoạt Javascript để xác định vị trí chọn này, hoặc sửa đổi đánh dấu của bạn/CSS. Trong khi tôi đã tìm thấy chính mình trong tình huống mà last-of-type cho một bộ chọn lớp sẽ hữu ích, nó không có gì mà không thể được làm việc xung quanh với một chút suy nghĩ nhiều hơn nữa.

+0

Có, sử dụng ': last-of-type' chỉ với một bộ chọn lớp là rất không trực quan; nó được sử dụng tốt nhất với bộ chọn loại trừ khi bạn thực sự muốn loại cuối cùng của bất kỳ loại nào có lớp đó. – BoltClock

+3

Dự phòng jQuery có thể xảy ra nếu bạn thực sự không muốn thêm các lớp thừa theo cách thủ công: '$ ('. Class'). Last(). AddClass ('last');' – fncombo

+3

@amustill Tôi hoàn toàn đồng ý, nhưng trong một số trường hợp bạn không có khả năng thay đổi đánh dấu (thêm một lớp, đặt một div xung quanh một cái gì đó) bởi vì khách hàng của bạn làm việc với một CMS shitty mà không có khả năng tạo hoặc thay đổi công cụ DOM. Đây là thực tế độc ác. – Sliq

1

Tận dụng tối nomargin một lớp css, và bạn có thể thay đổi nó một cách dễ dàng:

var items = document.getElementsByClassName('nomargin'); 
items[items.length-1].style.color = 'black'; 
items[items.length-1].style.background = 'white'; 

hoặc nếu doesn't have enough jQuery đó, bạn có thể sử dụng:

jQuery('div.nomargin:last').css({ 
    color:'black', 
    background:'white'}) 
+33

jQuery không phải là CSS. –

+1

@ JukkaK.Korpela Vâng, nhưng trong thực tế, đó là giải pháp có thể phù hợp với nhu cầu của khách hàng của bạn. Tôi thích giải pháp. – Sliq

+0

@Panique Nếu bạn đang tìm kiếm các giải pháp jQuery, thì bạn nên ** không ** đặt câu hỏi về công nghệ * hoàn toàn * khác nhau (CSS trong trường hợp này). –

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