2017-03-25 16 views
6

同じ行にある画像の数に基づいて、CSSを使用して画像をサイズ変更しようとしています。たとえば、同じpに4つのimg要素がある場合、それらは特定の方法でスタイルされます。隣接する兄弟の子供にスタイルを適用する

HTML::

<p> 
    <img src="preview.png"> 
    <img src="preview.png"> 
    <img src="preview.png"> 
    <img src="preview.png"> 
</p> 

CSS:

.post-content p img:first-child:nth-last-child(4), 
.post-content p img:first-child:nth-last-child(4) ~ img { 
    width: 25%; /* fallback for browsers that don't support calc */ 
    width: calc((100%/4) - 0.8%); 
    margin-left: calc(1%); 
} 

.post-content p img:first-child:nth-last-child(4) { /* First image in group of four */ 
    margin-left: 0; 
} 

結果は次のようになります。

enter image description here

ここ this answerに基づいて作業コードは、あります

しかし、これはaタグに包まれたイメージのために動作しませんが、書式設定、同一の残りの部分で、次のように:

<p> 
    <a href="#"><img src="preview.png"></a> 
    <a href="#"><img src="preview.png"></a> 
    <a href="#"><img src="preview.png"></a> 
    <a href="#"><img src="preview.png"></a> 
</p> 

私はこのケースで解決策を見つけることができません。どんな助けでも大歓迎です。

答えて

4

ある:nth-child()年代、:first-child年代、及び兄弟セレクタはaタグのオフに基づいてする必要が、それらは、子供や兄弟であるため、その後のセレクタは、標的にimgで終わるべきです画像のCSSプロパティ。

p a:first-child:nth-last-child(4) img, 
 
p a:first-child:nth-last-child(4) ~ a img { 
 
    width: 25%; 
 
    width: calc((100%/4) - 0.8%); 
 
    margin-left: calc(1%); 
 
} 
 

 
p a:first-child:nth-last-child(4) img { 
 
    margin-left: 0; 
 
}
<p> 
 
    <a href="#"><img src="http://kenwheeler.github.io/slick/img/fonz1.png"></a><a href="#"><img src="http://kenwheeler.github.io/slick/img/fonz1.png"></a><a href="#"><img src="http://kenwheeler.github.io/slick/img/fonz1.png"></a><a href="#"><img src="http://kenwheeler.github.io/slick/img/fonz1.png"></a> 
 
</p>

+0

ありがとう、これは働いた! – user2255592

+0

@ user2255592 awesome np :) –

0

CSSのfirst-childの前にimgaに置き換えてみましたか?すなわち、

.post-content p a:first-child:nth-last-child(4) img, 
.post-content p a:first-child:nth-last-child(4) ~ a img { 
    width: 25%; 
    width: calc((100%/4) - 0.8%); 
    margin-left: calc(1%); 
} 

.post-content p a:first-child:nth-last-child(4) img { 
    margin-left: 0; 
} 
関連する問題