LoginSignup
5
5

More than 5 years have passed since last update.

立体的(立体風)なボタン表現のパターン

Last updated at Posted at 2013-06-09

button.png

こういうやつ。考えられるのは、

  • box-shadowを使う
  • borderを使う
  • 擬似要素を使う
  • border-imageを使う

今回はサンプルの見栄えを揃えるためにwidthを適用させたりしているが、実際にはボタンのラベルの長さに左右されないような、という前提でつくる。

box-shadowを使う

btn {
  box-shadow: 0 6px 0 #369;
}

ぼかしが0のbox-shadowにすることでそれっぽく見せる。 ただこれだとAndroid2.3(2.2かもしれない)以下では影が見えないので注意。

borderを使う

.btn {
  border-bottom-width: 8px;
}

これもそれっぽく対応できるが、border-radiusを使っている場合にはborderの外側部分にだけborder-radiusが適用されるので注意。

※もしかしたらブラウザによって違うかも。

擬似要素を使う

.btn{
  position: relative; 
}
.btn:after {
  display: block;
  content: "";
  position: absolute;
  left: -2px;
  right: -2px;
  bottom: -8px;
  z-index: -1;
  border-radius: inherit;
  height: 100%;
  background-color: #369;
}

擬似要素で影部分のオブジェクトをつくり、positionで配置を制御する。 もしサンプルのようにborderがある場合には、その分の値をleftrightで調整する。大きさはbottomで。

悪くはない感じもするが、少し大げさかもしれない。

border-imageを使う

.btn {
  /* box-sizing: border-box; */
  border-color: transparent;
  background-color: transparent;
  border-style: solid;
  border-width: 8px 8px 16px 8px;
  border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAsBAMAAAD2lqe8AAAAJ1BMVEUaZJwcZZ0lbaJJga1Lga5Tn7taqMCCp8eDqMiP5N6q/+/i6/L////KlPzsAAAAnUlEQVQoz+2SoRHCUBBE9zq4JYEME0UJlJASaAMXTToAg41H5Lso6CARWxQmZP5RAIrn9s3OmT1Ir4YL5VWCZmbcBDW7Pi0Mp1KYNmtOaTh0GPcp416jPefiUaHpczGUYArwL34hLM7gsDiUw+KUDo9jG2jb7B2coOcPYwQJ+0QHCX6BY8wF2igqjFHUmKLooHCkEBQqnSA9105xkd4swUbH0UjqRQAAAABJRU5ErkJggg==) 8 8 16 8 fill repeat;
}

border-imageも結構あり。ただborderなので、デザインによってはその太さ分見栄えが大きくなってしまうので、box-sizing: border-box のようなものも使うといいかもしれない。その場合はpaddingのことも考慮しないといけないけど。

今回のサンプルはCodePenに。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5