Як би я вибрав усіх, крім останнього, за допомогою селекторів CSS3?
Наприклад, отримати лише останню дитину було б div:nth-last-child(1)
.
Як би я вибрав усіх, крім останнього, за допомогою селекторів CSS3?
Наприклад, отримати лише останню дитину було б div:nth-last-child(1)
.
Відповіді:
Ви можете використовувати заперечення псевдокласу:not()
проти :last-child
псевдокласу . Представляючи CSS Selectors 3 рівня, він не працює в IE8 або нижче:
:not(:last-child) { /* styles */ }
div
&:not(:last-child) { /* styles * }
всередині елемента, на який хочете вплинути.
Ви можете застосувати свій стиль до всіх div та повторно ініціалізувати останній за допомогою : last-child :
наприклад у CSS :
.yourclass{
border: 1px solid blue;
}
.yourclass:last-child{
border: 0;
}
або в SCSS :
.yourclass{
border: 1px solid rgba(255, 255, 255, 1);
&:last-child{
border: 0;
}
}
Рішення Ніка Крейвера працює, але ви також можете використовувати це:
:nth-last-child(n+2) { /* Your code here */ }
Кріс Койєр з CSS Tricks зробив хороший : n-й тестер для цього.
:not
псевдо дуже дорого. Тому може бути хорошою ідеєю спробувати уникнути цього, де це можливо.
Коли прийде IE9, буде простіше. Однак багато часу, ви можете переключити проблему на одну, яка потребує: перший дитина та накреслити протилежну сторону елемента (IE7 +).
Використання рішення нік-кравера з selectivizr дозволяє вирішувати крос-браузер (IE6 +)
щоб знайти елементи з останнього, використовуйте
<style>
ul li:nth-last-of-type(3n){ color:#a94442} /**/
</style>
Рішення Ніка Крейвера дало мені те, що мені потрібно, але зробити це явним для тих, хто використовує CSS-в-JS:
const styles = {
yourClass: {
/* Styles for all elements with this class */
'&:not(:last-child)': {
/* Styles for all EXCEPT the last element with this class */
},
},
};
.nav-menu li:not(:last-child){
// write some style here
}
цей код повинен застосовувати стиль до всіх