Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

CSSパズル 第三問!

 どうも!LSSです!!

 

CSSを知らなくてもなんとなく遊べる(?)、CSSパズル第三問です!

CSSパズル カテゴリーの記事一覧 - Little Strange Software

 

 

CSSパズル 第三問!

2つの写真があります。


上が「お手本」で、下が「回答」です。
そのさらに下に、赤い枠線で囲んだコードがあり、その中にいくつかの選択肢が入っています。

 

選択肢を変更すると「回答」の表示がそのコードで生成したものに変化するので、「回答」を「お手本」と同じものになるよう、正しい選択肢を選ぶ、という出題です。

 

なお、選択肢を変更した際に、さらにその下にある「現在のコード」がその選択肢の場合のコードとなります。(つまり、その時点で表示されている「回答」のコードですね)

 

全ての選択肢が正しいものになり、「お手本」と「回答」が同じになった時、「正解です!!」という文字が現れます。

 

 
<style>
.photo{
position:relative;
display:inline-block;
padding:;
}
.photo img{
display:block;
}
.photo div{
position:;
width:100%;
height:100%;
top:0;
left:0;
pointer-events:none;
background:
linear-gradient(,5%,5.25%,),
linear-gradient(315deg,#ffffff 5%,#000000 5.25%,transparent 5.5%);
}
</style>
<div class="photo">
<img src=中略 />
<div> </div>
</div>

 

 

現在のコード

 

 

「現在のコード」について

正解かそうでないかに関わらず、ご自由にコピペして使っていただけます。

ただ、出題時に

<img src=中略 />

としている箇所は使いたい画像ファイルを指定したimgタグに置き換える必要があります。

例えば、はてなブログで画像を挿入すると、

<img src="https://cdn-ak.f.st-hatena.com/images/fotolife/l/little_strange/20221016/20221016232258.jpg" width="992" height="744" loading="lazy" title="" class="hatena-fotolife" itemprop="image" />

のようなimgタグが生成されますので、こちらに貼り替える必要があります。

 

 

やっている事と言えば…

HTMLの構成は次にようになっています。

<div class="photo">
<img src=中略 />
<div> </div>
</div>

「photo」というクラス名を持つdivタグ(<div class="photo">から</div>まで)の中に、imgタグがひとつ、空のdivタグがひとつ入っている状態です。
※空のdivタグがimgタグより後ろにあるところがポイント

 

photoクラスを持つdivタグには「position:relative;」を指定し、その中のdivタグには「position:absolute;」と「top:0;」「left:0;」を指定しています。

relativeの中に、absoluteと位置指定をつけた要素があると、absoluteを指定した要素は「relativeな親要素」の中での「absolute(絶対位置指定)」をされた事になり、他の要素と平気で重なったりもします。
今回の例では、imgタグ(画像)に重なって表示されていますね。

 

この時、imgタグよりもコード上 後に書かれた空のdivタグの方が手前に表示される事になります。

 

よりシンプルな実例を挙げると、

 

あいうえお
かきくけこ

 

<div style="border: 1px solid pink;">
<div>あいうえお</div>
<div>かきくけこ</div>
</div>

 

あいうえお
かきくけこ

 

<div style="border: 1px solid pink; position: relative;">
<div>あいうえお</div>
<div style="position: absolute; top: 0; left: 0;">かきくけこ</div>
</div>

 

という感じで、写真とその上の要素(backgroundで描いた透過つきgradient)を重ねています。

 

 

応用例

ちょっとふざけた効果ですが…

例えばこんな事もできますね。

 

コード

<style>
.photo2{
position:relative;
display:inline-block;
}
.photo2 img{
display:block;
}
.photo2 div{
position:absolute;
width:100%;
height:100%;
top:0;
left:0;
pointer-events:none;
padding:10px;
background: radial-gradient(#ffff4400 80%,#ffff40 91%) 0 0/150px 150px,radial-gradient(#ffff4400 85%,#ffff40 96%) 75px 75px/150px 150px;
}
</style>
<div class="photo2"><img src="画像ファイルのURL" />
<div>例えばこんな事もできますね。</div>
</div>

 

 

 

ってなとこで、今回はこのへんで!

次回もまた、よろしくお願いします^^