Як би я вибрав усіх, крім останнього, за допомогою селекторів 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
}
цей код повинен застосовувати стиль до всіх