Little Strange Software

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

ちょっとCSSの実験

 どうも!LSSです!!

 

ちょっとCSSでなにか(ってなに?w)を作るにあたり、試してみたい事があったので試してみました。

 

 

縦横比3:4とoverflow:hidden;を試してみました

呼ばれて飛び出てじゃじゃじゃじゃーん

 

 コード

<style><!--
@keyframes tbds{
0%{top:-20%;left:100%;}
30%{top:0%;left:0%;}
70%{top:0%;left:0%;}
100%{top:20%;left:-100%;}
}
--></style>
<div style="position: relative; width: 100%; padding-bottom: 75%; overflow: hidden; background-color: #ddddee;">
<div style="position: absolute; width: 100%; height: 100%; overflow: hidden; background-color: lightgreen; animation: tbds 5s linear 0s infinite; padding: 1em;">呼ばれて飛び出てじゃじゃじゃじゃーん</div>
</div>

 

 

外側のdivについて

divタグを入れ子にしています。(divタグをdivタグで囲んでいる、の意) 

そして外側のdivタグに、

width: 100%; padding-bottom: 75%; 

を設定しています。

 

widthは幅。100%はその親要素(この記事の例の場合、記事の表示部分)の幅いっぱいに表示する、という指定ですね。

そしてpadding-bottomは下からの余白で、75%と指定していますが、縦方向の余白なのにこの%は「幅に対しての」比率となります。

 

そのdivの中には別のdivが入っていますが、内側の方は「position:absolute;」を指定しているため「浮いた存在」となり、実質的に「外のdivの中に高さをとるようなものが何もない」事から、外のdivの高さはpadding-bottomで指定した通り「幅の75%」ジャストとなります。

 

そのため、「外側のdiv」で作った枠は幅4:高さ3の比率になります。

 

 

内側のdivについて

内側のdivは「浮いた存在」とは言え、外側のdivの中身である事に変わりはないので、

width: 100%; height: 100%;

の指定により「外側のdivと同じサイズ」の枠、という事になります。

 

このサンプルではアニメーションで「最初は外側の枠の右端を超えたところにいて、左端を超えたところまで移動する」という動きを指定しています。

 

本来なら、枠からはみ出した部分もはみだして表示される事になりますが、外側のdivに、

overflow: hidden;

を指定しているため、「はみ出した部分は表示しない」という事になっています。

 

 

知っていたはずなんですがw

overflowプロパティの存在は知っていたはずで、過去にも使っているのですが、こういう事ができるんですね。

「右にはみ出させたくない!」って時にどうしたものかと思いましたが、これを使う事で防げそうです^^

 

 

 

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

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