コピペでできる!cssとhtmlのみのクリックでソーシャルリンクが出てくるボタン

CSS HTML
 
 

画面の左や右などに固定設置されたソーシャルリンクのボタンタイプをご紹介。
よく見かけるあのボタンを押すとピロピロッと隠れたソーシャルリンクが出てくるアレです。
固定する場所に「position: relative;」の設定が必要ですのでご注意ください。

各種SNSのブランドロゴについては、公式ドキュメントをご確認ください。

browser:  ✔︎ ✔︎ ✔︎ 

画面固定されたボタン型のソーシャルリンクメニュー

左上固定でクリックすると下にアイコンが出る

ニャン易度
<div class="contents">text</div>
<div class="cp_snslink09">
  <div class="cp_link_list">
  <input type="checkbox" id="cp_toggle" />
  <label for="cp_toggle" class="share"></label>
  <ul class="cp_link">
  <li class="twitter"><a href="#" title="Twitter"></a></li>
  <li class="facebook"><a href="#" title="Facebook"></a></li>
  <li class="instagram"><a href="#" title="Instagram"></a></li>
  </ul>
  </div>
</div>
body {
/*設置する親要素ページ全体ならbodyなど*/
  position: relative;
  height: 100vh;
  margin: 0;
  padding: 0;
}
.contents {
/*サンプルはfixedの確認のためにheight指定しています。*/
  height: 2000px;
}
.cp_snslink09 {
  position: fixed;
  top: 4%;
  left: 1%;
  display: block;
  margin: 0;
  transform: translateY(-50%);
  width: 40%;
}
.cp_snslink09 .cp_link_list{
  position: relative;
  perspective: 1000px;
}
.cp_snslink09 .cp_link_list input{
  display: none;
}
/*シェアボタン*/
.cp_snslink09 .cp_link_list label.share {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 50px;
  height: 50px;
  background: #4DB6AC;
  border-radius: 50%;
  cursor: pointer;
  transition: all 0.3s;
}
.cp_snslink09 .cp_link_list label.share::before{
  position: absolute;
  content: '';
  background-image: url(share_icon_white.svg);
  background-size: contain;
  background-repeat: no-repeat;
  width: 25px;
  height: 25px;
}
/*各種SNSリンク*/
.cp_snslink09 .cp_link_list .cp_link li {
  position: absolute;
  top: 0;/*最初の位置*/
  left: 0;
  opacity: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  list-style: none;
  margin: 0 0 10px 0;
  padding: 0;
  width: 50px;
  height: 50px;
  background: #4DB6AC;
  border-radius: 50%;
  cursor: pointer;
  transition: all 0.5s;
  z-index: -1;
}
/*SNS各種ロゴ*/
.cp_snslink09 .cp_link .facebook::before,
.cp_snslink09 .cp_link .twitter::before,
.cp_snslink09 .cp_link .instagram::before {
  position: absolute;
  content: '';
  background-size: contain;
  background-repeat: no-repeat;
  width: 25px;
  height: 25px;
}
/*facebook*/
.cp_snslink09 .cp_link .facebook::before {
  background-image: url(facebook_logo_secondary.svg);
}
/*twitter*/
.cp_snslink09 .cp_link .twitter::before {
  background-image: url(x-logo.svg);
}
/*instagram*/
.cp_snslink09 .cp_link .instagram::before {
  background-image: url(instagram_glyph_white.svg);
}
/* hover時の動きの設定 */
.cp_snslink09 .cp_link_list .cp_link li a {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  transition: all 0.3s;
}
.cp_snslink09 .cp_link_list .cp_link li:hover a {
  background: #F57C00;
  color: #ffffff;
}
/* シェアボタンクリック時の動きの設定 */
.cp_snslink09 .cp_link_list input:checked ~ label {
  background: #009688;
}
.cp_snslink09 .cp_link_list input:checked ~ .cp_link li{
  opacity: 1;
  transform: translateY(0) rotate(360deg);
  transition: all 0.3s;
}
.cp_snslink09 .cp_link_list input:checked ~ .cp_link li.twitter{
  top: 60px;
  transition-delay: 0;
  z-index: 4;
}
.cp_snslink09 .cp_link_list input:checked ~ .cp_link li.facebook{
  top: 120px;
  transition-delay: 0.3s;
  z-index: 3;
}
.cp_snslink09 .cp_link_list input:checked ~ .cp_link li.instagram{
  top: 180px;
  transition-delay: .6s;
  z-index: 2;
}

左上固定でクリックすると横にアイコンが出る

ニャン易度
<div class="contents">text</div>
<div class="cp_snslink10">
  <div class="cp_link_list">
  <input type="checkbox" id="cp_toggle" />
  <label for="cp_toggle" class="share"></label>
  <ul class="cp_link">
  <li class="twitter"><a href="#" title="Twitter"></a></li>
  <li class="facebook"><a href="#" title="Facebook"></a></li>
  <li class="instagram"><a href="#" title="Instagram"></a></li>
  </ul>
  </div>
</div>
body {
/*設置する親要素ページ全体ならbodyなど*/
  position: relative;
  height: 100vh;
  margin: 0;
  padding: 0;
}
.contents {
/*サンプルはfixedの確認のためにheight指定しています。*/
  height: 2000px;
}
.cp_snslink10 {
  position: fixed;
  top: 4%;
  left: 1%;
  display: block;
  margin: 0;
  transform: translateY(-50%);
  width: 40%;
}
.cp_snslink10 .cp_link_list{
  position: relative;
  perspective: 1000px;
}
.cp_snslink10 .cp_link_list input{
  display: none;
}
/*シェアボタン*/
.cp_snslink10 .cp_link_list label.share {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 50px;
  height: 50px;
  background: #4DB6AC;
  border-radius: 50%;
  cursor: pointer;
  transition: all 0.3s;
}
.cp_snslink10 .cp_link_list label.share::before{
  position: absolute;
  content: '';
  background-image: url(https://copypet.jp/demo/sns/share_icon_white.svg);
  background-size: contain;
  background-repeat: no-repeat;
  width: 25px;
  height: 25px;
}
/*各種SNSリンク*/
.cp_snslink10 .cp_link_list .cp_link li {
  position: absolute;
  top: 0;/*最初の位置*/
  left: 0;
  opacity: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  list-style: none;
  margin: 0 0 10px 0;
  padding: 0;
  width: 50px;
  height: 50px;
  background: #F48FB1;
  border-radius: 50%;
  cursor: pointer;
  transition: all 0.5s;
  z-index: -1;
}
/*SNS各種ロゴ*/
.cp_snslink10 .cp_link .facebook::before,
.cp_snslink10 .cp_link .twitter::before,
.cp_snslink10 .cp_link .instagram::before {
  position: absolute;
  content: '';
  background-size: contain;
  background-repeat: no-repeat;
  width: 25px;
  height: 25px;
}
/*facebook*/
.cp_snslink10 .cp_link .facebook::before {
  background-image: url(facebook_logo_secondary.svg);
}
/*twitter*/
.cp_snslink10 .cp_link .twitter::before {
  background-image: url(x-logo.svg);
}
/*instagram*/
.cp_snslink10 .cp_link .instagram::before {
  background-image: url(instagram_glyph_white.svg);
}
/* hover時の動きの設定 */
.cp_snslink10 .cp_link_list .cp_link li a {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  transition: all 0.3s;
}
.cp_snslink10 .cp_link_list .cp_link li:hover a {
  background: #42A5F5;
}
/* シェアボタンクリック時の動きの設定 */
.cp_snslink10 .cp_link_list input:checked ~ label {
  background: #EC407A;
}
.cp_snslink10 .cp_link_list input:checked ~ .cp_link li{
  opacity: 1;
  transform: translateY(0) rotate(360deg);
  transition: all 0.3s;
}
.cp_snslink10 .cp_link_list input:checked ~ .cp_link li.twitter{
  left: 60px;
  transition-delay: 0;
  z-index: 4;
}
.cp_snslink10 .cp_link_list input:checked ~ .cp_link li.facebook{
  left: 120px;
  transition-delay: 0.3s;
  z-index: 3;
}
.cp_snslink10 .cp_link_list input:checked ~ .cp_link li.instagram{
  left: 180px;
  transition-delay: .6s;
  z-index: 2;
}

右下固定でクリックすると上にアイコンが出る

ニャン易度
<div class="contents">text</div>
<div class="cp_snslink11">
  <div class="cp_link_list">
  <input type="checkbox" id="cp_toggle" />
  <label for="cp_toggle" class="share"></label>
  <ul class="cp_link">
  <li class="twitter"><a href="#" title="Twitter"></a></li>
  <li class="facebook"><a href="#" title="Facebook"></a></li>
  <li class="instagram"><a href="#" title="Instagram"></a></li>
  </ul>
  </div>
</div>
body {
/*設置する親要素ページ全体ならbodyなど*/
  position: relative;
  height: 100vh;
  margin: 0;
  padding: 0;
}
.contents {
/*サンプルはfixedの確認のためにheight指定しています。*/
  height: 2000px;
}
.cp_snslink11 {
  position: fixed;
  bottom: 0;
  right: 20px;
  display: block;
  margin: 0;
}
.cp_snslink11 .cp_link_list{
  position: relative;
  perspective: 1000px;
}
.cp_snslink11 .cp_link_list input{
  display: none;
}
/*シェアボタン*/
.cp_snslink11 .cp_link_list label.share {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 50px;
  height: 50px;
  background: #eeeeee;
  border-radius: 50%;
  cursor: pointer;
  transition: all 0.3s;
}
.cp_snslink11 .cp_link_list label.share::before{
  position: absolute;
  content: '';
  background-image: url(share_icon_black.svg);
  background-size: contain;
  background-repeat: no-repeat;
  width: 25px;
  height: 25px;
}
/*各種SNSリンク*/
.cp_snslink11 .cp_link_list .cp_link li {
  position: absolute;
  bottom: 0;/*最初の位置*/
  right: 0;
  opacity: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  list-style: none;
  margin: 0 0 0 0;
  padding: 0;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  cursor: pointer;
  transition: all 0.5s;
  z-index: -1;
}
.cp_snslink11 .cp_link_list .cp_link li.twitter {
  background: #000000;
}
.cp_snslink11 .cp_link_list .cp_link li.facebook {
  background: #0866ff;
}
.cp_snslink11 .cp_link_list .cp_link li.instagram {
  background: linear-gradient(45deg, #FF7A00 0%, #FF0169 50.06%, #D300C5 99.36%);
}
/*SNS各種ロゴ*/
.cp_snslink11 .cp_link .facebook::before,
.cp_snslink11 .cp_link .twitter::before,
.cp_snslink11 .cp_link .instagram::before {
  position: absolute;
  content: '';
  background-size: contain;
  background-repeat: no-repeat;
  width: 25px;
  height: 25px;
}
/*facebook*/
.cp_snslink11 .cp_link .facebook::before {
  background-image: url(facebook_logo_secondary.svg);
}
/*twitter*/
.cp_snslink11 .cp_link .twitter::before {
  background-image: url(x-logo.svg);
}
/*instagram*/
.cp_snslink11 .cp_link .instagram::before {
  background-image: url(instagram_glyph_white.svg);
}
/* シェアボタンクリック時の動きの設定 */
.cp_snslink11 .cp_link_list input:checked ~ label {
  transform: scale(0.8, 0.8);
}
.cp_snslink11 .cp_link_list input:checked ~ .cp_link li{
  opacity: 1;
  transform: translateY(0) rotate(360deg);
  transition: all 0.3s;
  opacity: 0.7;
}
.cp_snslink11 .cp_link_list input:checked ~ .cp_link li.twitter{
  bottom: 60px;
  transition-delay: 0;
  z-index: 4;
}
.cp_snslink11 .cp_link_list input:checked ~ .cp_link li.facebook{
  bottom: 120px;
  transition-delay: 0.1s;
  z-index: 3;
}
.cp_snslink11 .cp_link_list input:checked ~ .cp_link li.instagram{
  bottom: 180px;
  transition-delay: 0.2s;
  z-index: 2;
}
.cp_snslink11 .cp_link_list input:checked ~ .cp_link li:hover {
  opacity: 1;
  transform: scale(1.1, 1.1);
}

copypet.jp

CSS3などで新たに追加された要素・装飾方法など、日々コードを書いていないと忘れてしまったり、ささっとプロトタイプを作る時などちょっとしたことに時間をかけている暇はない。そんな時に「あ〜、あれストックしときゃよかったなぁ」って困った自分用のストックブログです。カスタマイズなどがしやすいよう、昨今のweb制作に取り入れられる一般的なコードを中心に掲載しています。

More Info

こんな記事はいかがですか?