CSSだけでプレゼント箱を作ってみた

CSSだけでプレゼント箱を作ってみた

どうも7noteです。サンタクロースに何をお願いするか考えているところです。

以前CSSだけで直方体とリボンを作成したので、組み合わせてプレゼントボックスを作ってみました。
大きさの調整なども可能ですし、角度も自由自在です(リボンは角度調整難しいかも)。

CSSだけでリボンデザインじゃなくて、リボン結びを作ってみた
CSSでの立方体の作り方(サイコロも作れるよ)

クリスマス等の特設サイトなどに利用していただければ嬉しいです。

完成例


ソース

index.html
<div class="gift">
  <div class="box">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
  <div class="ribon">
    <div class="wakka left"></div>
    <div class="center"><span></span></div>
    <div class="wakka right"></div>
    <div class="ashi left"></div>
    <div class="ashi right"></div>
  </div>
</div>
style.css
.gift {
  position: relative;
  left: 100px;
  top: 100px;
}

.box {
  display:block;
  position: absolute;
  top: 0;
  left: 0;
  width:150px;
  height:150px;
  transform-style:preserve-3d;
  transform:rotateX(-25deg) rotateY(-45deg); /* ここで四角の角度を調整できる */
}

.box .item {
  position:absolute;
  left:0;
  right:0;
  box-sizing:border-box;
  background: #F8EF86;  /* プレゼント箱の色 */
  border:1px solid #333;
  width:100%;
  height:100%;
}

/* 上 */
.box .item:nth-child(1) {
  transform:translate3d(0, -75px, 0) rotateX(-90deg);
}

/* 左 */
.box .item:nth-child(2) {
  transform:translate3d(0, 0, 75px);
}

/* 右 */
.box .item:nth-child(3) {
  transform:translate3d(75px, 0, 0) rotateY(90deg);
}


.box .item::before {
  content: '';
  width: 20px;
  height: 100%;
  background: #DE0024;
  border-left: 2px solid #683733;
  border-right: 2px solid #683733;
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
}

.box .item:nth-child(1)::after {
  content: '';
  width: 100%;
  height: 20px;
  background: #DE0024;
  border-top: 2px solid #683733;
  border-bottom: 2px solid #683733;
  position: absolute;
  top: 50%;
  left: 0;
  transform: translateY(-50%);
}

/*--------リボン--------*/
.ribon {
  width: 100px;      /* ★リボンの大きさ */
  position: absolute;
  top: -5px;
  left: 25px;
  z-index: 10;
}

/*--------真ん中の結び目--------*/
.center {
  width: 10%;
  margin: 0 auto;
}
.center span {
  display: block;
  width: 100%;
  padding-top : 100%;
  background-color: #DE0024; /* ▲リボンの色 */
  border: 2px solid #683733; /* ■線の色 */
  box-sizing: border-box;
}


/*--------輪っかの部分--------*/
.wakka {
  width: 45%;
  height: 100%;
  position: absolute;
  top: 0;
}
.wakka.left {
  left: 0;
}
.wakka.right {
  right: 0;
}
.wakka::before {
  content: '';
  width: 100%;
  height: 180%;
  background-color: #DE0024; /* ▲リボンの色 */
  border: 2px solid #683733; /* ■線の色 */
  position: absolute;
  bottom: 0;
  box-sizing: border-box;
}
.wakka.left::before {
  border-radius: 30% 60% 0 10% / 30% 60% 0 10%;
  left: 2px;
}
.wakka.right::before {
  border-radius: 60% 30% 10% 0 / 60% 30% 10% 0;
  right: 2px;
}
.wakka::after {
  content: '';
  width: 100%;
  padding-top: 10%;
  background-color: #DE0024; /* ▲リボンの色 */
  border: 2px solid #683733; /* ■線の色 */
  border-radius: 100%;
  position: absolute;
  bottom: -2px;
  box-sizing: border-box;
}
.wakka.left::after {
  left: 2px;
}
.wakka.right::after {
  right: 2px;
}

/*--------足の部分--------*/
.ashi {
  width: 50%;
  padding-top: 10%; /* ★リボン足、太さ調整 */
  background: #DE0024; /* ▲リボンの色 */
  border: 2px solid #683733; /* ■線の色 */
  position: absolute;
  right: 0;
  bottom: 0;
  transform-origin: 0 100%;
  transform: rotate(45deg);
  z-index: -1;
}
.ashi.left {
  left: 0;
  transform-origin: 100% 100%;
  transform: rotate(-45deg);
}
.ashi.right {
  right: 0;
  transform-origin: 0 100%;
  transform: rotate(45deg);
}
.ashi::before {
  content: '';
  display: inline-block;
  width: 0;
  height: 0;
  position: absolute;
  top: -2px;
  width: 0;
  height: 0;
  border-style: solid;
}
.ashi.left::before {
  left: 0px;
  border-width: 7px 0 7px 7px; /* ★リボン端、三角の大きさ調整 */
  border-color: transparent transparent transparent #683733; /* ■線の色 */
}
.ashi.right::before {
  right: 0px;
  border-width: 7px 7px 7px 0; /* ★リボン端、三角の大きさ調整 */
  border-color: transparent #683733 transparent transparent ; /* ■線の色 */
}
.ashi::after {
  content: '';
  display: inline-block;
  width: 0;
  height: 0;
  position: absolute;
  top: -2px;
  width: 0;
  height: 0;
  border-style: solid;
}
.ashi.left::after {
  left: -3px;
  border-width: 7px 0 7px 7px; /* ★リボン端、三角の大きさ調整 */
  border-color: transparent transparent transparent #F8EF86;         /* プレゼント箱の色 */
}
.ashi.right::after {
  right: -3px;
  border-width: 7px 7px 7px 0; /* ★リボン端、三角の大きさ調整 */
  border-color: transparent #F8EF86 transparent transparent;         /* プレゼント箱の色 */
}

感想

Amaz〇nなどがかなり普及してきたので、現金を使わなくても1クリックで欲しいプレゼントが家に届くので便利ですね。

おそまつ!