ページの要素に基づいて列を自動的にスタイル設定する 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をそれぞれ使用すると、レイアウトの正しい組み合わせ (つまり、articlethenasideまたは an articlebetween 2asideのいずれか) が見つかりますが、それは一番右のものをターゲットにしておりaside、 のスタイルを変更することはできませんarticle。
CSSの兄弟セレクターを使用してDOMのターゲット要素の前にあるかどうかにかかわらず、すべての兄弟を考慮に入れる方法はありますか? または、JavaScriptを使用せずにこれを回避できる「創造的な」方法を誰かが考えられますか?
ありがとう!