ページの要素に基づいて列を自動的にスタイル設定する css を作成しようとしています。列にはいくつかの組み合わせがあります。
aside
- article
-aside
aside
-article
article
-aside
article
画面のどちら側にあるかに応じて、それぞれaside
に左または右のクラスがあります。sはaside
レイアウトに関係なく常に一定の幅ですが、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;
}
最初の 2 つのレイアウトは機能しますが、次の 2 つのレイアウトは機能しません。article
問題は、DOM のそのセクションの最後でなくても、常にスタイルを設定したいということです。最後の 2 つのレイアウトに対してセレクターarticle~.right
と.left~.article~.right
をそれぞれ使用すると、レイアウトの正しい組み合わせ (つまり、article
thenaside
または an article
between 2aside
のいずれか) が見つかりますが、それは一番右のものをターゲットにしておりaside
、 のスタイルを変更することはできませんarticle
。
CSSの兄弟セレクターを使用してDOMのターゲット要素の前にあるかどうかにかかわらず、すべての兄弟を考慮に入れる方法はありますか? または、JavaScriptを使用せずにこれを回避できる「創造的な」方法を誰かが考えられますか?
ありがとう!