我正在尝试编写 css 以根据页面上的元素自动设置我的列的样式。列有几种组合:
aside
- article
-aside
aside
-article
article
-aside
article
每个aside
都有左或右的类别,具体取决于它在屏幕的哪一侧。aside
无论布局如何, s 始终是恒定宽度,但'article
宽度会根据布局而变化。
我想使用 CSS(最好没有任何 javascript)来设置article
. 我一直在玩 CSS 兄弟姐妹,但我不能让它工作。这就是我理论上希望代码工作的方式:
article{
/* just article */
width: some width;
}
.left~article{
/* aside-article */
width: some width;
}
.right~article{
/* article-aside */
width: some width; /* (this can be the same as the previous;
I don't know if it's easier to define
them together or separately) */
}
.left~.right~article{
/* aside-article-aside */
width: some-width;
}
前两种布局有效,但后两种无效。问题是我总是想为article
. 分别使用选择器article~.right
和.left~.article~.right
最后两个布局找到正确的布局组合(即 an article
then anaside
或 an article
between two aside
s),但它针对最右边aside
,我无法更改article
.
有没有办法考虑所有兄弟姐妹是否在 DOM 中的目标元素之前使用 CSS 中的兄弟姐妹选择器?或者任何人都可以想到任何“创造性”的方法,我可以在不使用 javascript 的情况下解决这个问题?
谢谢!