さりげないアニメーションがいい感じ、HTML/CSSでシンプルに実装するタブコンテンツ

スクリプト無し、HTMLとCSSで実装するシンプルなタブコンテンツを紹介します。

デモのアニメーション

コマ数を落としているから、アニメがうまく見えてないかも

タブコンテンツはシンプルながら、さりげないアニメーションが仕込まれておりいい感じです。上記はgifアニメーションで、実際のデモは下記ページで確認できます。

デモのキャプチャ

Pure CSS Tabs

タブ切替のトリックは、ラジオボタンです。タブとして表示されているラベルをクリックするとラジオボタンがチェック状態になり、コンテンツが表示されます。

HTML

タブとコンテンツは1セットでリスト要素で実装します。

<ul class="tabs">
    <li>
        <input type="radio" name="tabs" id="tab1" checked />
        <label for="tab1">タブ 1</label>
        <div id="tab-content1" class="tab-content">
          <p>コンテンツ 1</p>
        </div>
    </li>

    <li>
        <input type="radio" name="tabs" id="tab2" />
        <label for="tab2">タブ 2</label>
        <div id="tab-content2" class="tab-content">
          <p>コンテンツ 2</p>
        </div>
    </li>
</ul>

CSS

CSSはそのままコピペでいけますが、タブの配置を調整したい場合は「.tabs」「.tabs li」あたりを変更してください。

* {
  margin: 0;
  padding: 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

body {
  padding: 20px;
  text-align: left;
  font-family: Lato;
  color: #fff;
  background: #9b59b6;
}

.tabs {
  width: 650px;
  float: none;
  list-style: none;
  position: relative;
  margin: 80px 0 0 10px;
  text-align: left;
}
.tabs li {
  float: left;
  display: block;
}
.tabs input[type="radio"] {
  position: absolute;
  top: -9999px;
  left: -9999px;
}
.tabs label {
  display: block;
  padding: 14px 21px;
  border-radius: 2px 2px 0 0;
  font-size: 20px;
  font-weight: normal;
  text-transform: uppercase;
  background: #8e44ad;
  cursor: pointer;
  position: relative;
  top: 4px;
  -webkit-transition: all 0.2s ease-in-out;
  -moz-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
}
.tabs label:hover {
  background: #703688;
}
.tabs .tab-content {
  z-index: 2;
  display: none;
  overflow: hidden;
  width: 100%;
  font-size: 17px;
  line-height: 25px;
  padding: 25px;
  position: absolute;
  top: 53px;
  left: 0;
  background: #612e76;
}
.tabs [id^="tab"]:checked + label {
  top: 0;
  padding-top: 17px;
  background: #612e76;
}
.tabs [id^="tab"]:checked ~ [id^="tab-content"] {
  display: block;
}

実装すると、こんな感じです。
タブを左寄せにしてみました。

デモのキャプチャ

実装したデモ

top of page

©2017 coliss