超シンプルにCSSのflexで作らえれた、hoverで縦に割られた領域が拡大縮小するテクニック

PR
Flexbox outdatedbrowser.com style UI
ulにdisplay:flex;をつかって、要素を比率で並べるようにしてあります
liにはflex:1;として、マウスオーバーされていない状態では当分割した表示になるように
マウスオーバーされたときには flex:3; にすることで、割合を他の要素に比べて3倍の大きさにしています
また、その問の動作でtransitionでアニメーション化しています。
コード
HTML
<ul> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> <li>Five</li> </ul>
HTML側はとてもシンプル
CSS
body {
color: #fff;
font-family: sans-serif;
margin: 0;
padding: 0;
}
ul, li {
margin: 0;
padding: 0;
list-style: none;
}
ul {
display: flex;
height: 100vh;
}
li {
flex: 1;
transition: flex 300ms ease-out, color 200ms ease-out;
padding: 2%;
text-align: center;
color: rgba(255, 255, 255,0);
}
li:nth-child(1) {
background: #f2b635;
}
li:nth-child(2) {
background: #f19a2a ;
}
li:nth-child(3) {
background: #49b3e8 ;
}
li:nth-child(4) {
background: #00a0e6;
}
li:nth-child(5) {
background: #f25648;
}
li:hover {
flex: 3;
color: rgba(255, 255, 255, 1);
}
CSS側も、nth-childでそれぞれの色を指定するところを除けばとても、シンプル
コンテンツ数が限られている、WEBサイトのトップページとかにもちょくちょく使われたりするデザイン
CSSのみで簡単に実現出来るので試してみる価値あります
PR


COMMENT