スマホサイトで使えるcss「position: sticky;」

Filed under: css,スマートフォン関係 — kdcs @ 19年9月22日 日曜日

前記事の「疑似要素「::before」を利用した画像固定」はスマホでも使えるが、1か所限定。
1枚の画像をずっと固定したままで動きがない。

今回試したのは「position: sticky;」スティッキー
例によってIEでは機能しないがスマホで使える。

Safariやios対策 -webkit-sticky display: blockまたはflexは必須
css

.inner { max-width: 1080px; margin: 0 auto; }

#content {
    margin: 0 auto;
    text-align: center;
}

.block {
  width: 100%;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  position: -webkit-sticky;
  position: sticky;
  bottom: 0;
}
p {
  display: inline-block;
  font-size: 60px;
  font-family: 'Great Vibes', cursive;
  padding: 0;
  margin: 0;
}
img {
  width: 100%;
  height: auto;
}
.block-one {
  background: #212E32;
  color: #fff;
  z-index: 500;
}
.block-two {
  background: #85937A;
  z-index: 400;
}
.block-three {
  background: #212E32;
  color: #fff;
  z-index: 300;
}
.block-four {
  background: #85937A;
  z-index: 200;
}
.block-five {
  background: #212E32;
  color: #fff;
  z-index: 100;
}

html

<section>
<div id="content">
<div id="contentArea" class="inner clearfix">

  <div class="block block-one">
    <p>One</p>
  </div>
  <div class="block block-two">
    <div>Two<br><img src="./images/sample.jpg"></div>
  </div>
  <div class="block block-three">
    <p>Three</p>
  </div>
  <div class="block block-four">
    <p>Four</p>
  </div>
  <div class="block block-five">
    <p>Five</p>
  </div>

</div><!--/contentArea-->
</div><!--/content-->
</section>

パララックスのios対応方法(未検証)

Filed under: css,スマートフォン関係 — kdcs @ 19年9月20日 金曜日

背景固定のパララックス効果は「background-attachment:fixed;background-size: cover」で背景画像を固定することで実装できるが、iPhoneなどios機ではこの方法が使えない。そこで背景画像固定用のブロック要素を用意してブロック要素自体を固定するという手段。
固定する要素には疑似要素「::before」を使い、z-indexで位置を下位にする。

div.hoge::before{
  display:block;
  content:"";
  position:fixed;
  top:0;
  left:0;
  z-index:-1;
  width:100%;
  height:100vh;
  background:url(./images/bg-image.jpg) center no-repeat;
  background-size:cover;
}

googleカレンダーをレスポンシブ対応にする

Filed under: css,レスポンシブデザイン — kdcs @ 18年3月2日 金曜日

ネット上にあるレスポンシブ化の手順ではiPhoneでカレンダーを表示させた場合、
縦表示では「はみ出る」横にすると「カレンダーが伸び始める」
という訳で色々探した結果、iPhoneにも対応する手法が見つかったのでメモ

スマホのように横幅が狭い画面ではカレンダーの余計なタブ(印刷・週・月・予定リスト)を非表示にする
以下はPC用とモバイル用で切り替える記述
※googleカレンダーから取得するコード「width」の部分を100%に変更する
html

<div class="cal_wrapper">
<div class="googlecal googlecal-4x3">
<iframe class="pc_block" src="https://www.google.com/calendar/embed?height=400&amp;wkst=1&amp;bgcolor=%23FFFFFF&amp;src=support%40seitai-rakuya.com&amp;color=%238C500B&amp;ctz=Asia%2FTokyo" style=" border-width:0 " width="100%" height="400" frameborder="0" scrolling="no"></iframe>
<iframe class="sp_block" src="https://www.google.com/calendar/embed?showPrint=0&amp;showTabs=0&amp;showTz=0&amp;showCalendars=0&amp;height=400&amp;wkst=1&amp;bgcolor=%23FFFFFF&amp;src=support%40seitai-rakuya.com&amp;color=%238C500B&amp;ctz=Asia%2FTokyo" style=" border-width:0 " width="100%" height="400" frameborder="0" scrolling="no"></iframe>
</div><!--/.googlecal-->
</div><!--/.cal_wrapper-->

css

.cal_wrapper {
  max-width: 800px; /* 最大幅 */
  min-width: 300px; /* 最小幅 */
}
.googlecal {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
}
 .googlecal iframe,
.googlecal object,
.googlecal embed {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  border: 0;
}
.googlecal-4x3 {
  padding-bottom: 30em;
}

※iframe内のstyleからwidthとheightを外した場合の記述(こちらを採用)
html

<div class="cal_wrapper">
<div class="googlecal googlecal-4x3">
<iframe class="pc_block" src="https://www.google.com/calendar/embed?height=400&amp;wkst=1&amp;bgcolor=%23FFFFFF&amp;src=support%40seitai-rakuya.com&amp;color=%238C500B&amp;ctz=Asia%2FTokyo" style=" border-width:0 " frameborder="0" scrolling="no"></iframe>
<iframe class="sp_block" src="https://www.google.com/calendar/embed?showPrint=0&amp;showTabs=0&amp;showTz=0&amp;showCalendars=0&amp;height=400&amp;wkst=1&amp;bgcolor=%23FFFFFF&amp;src=support%40seitai-rakuya.com&amp;color=%238C500B&amp;ctz=Asia%2FTokyo" style=" border-width:0 " frameborder="0" scrolling="no"></iframe>
</div><!--/.googlecal-->
</div><!--/.cal_wrapper-->

css(css内.googlecal iframeにwidthとheightを追加する)

.cal_wrapper {
  max-width: 800px; /* 最大幅 */
  min-width: 300px; /* 最小幅 */
}
.googlecal {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
}
 .googlecal iframe,
.googlecal object,
.googlecal embed {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  border: 0;
  width: 100%;
  height: 400px;
}
.googlecal-4x3 {
  padding-bottom: 30em;
}

スマホでカレンダーを表示し、予定をタップするとポップアップウインドウが現れるが、横幅が400pxに指定されているためスマホ縦画面で見た場合に横にはみ出てしまう。
カレンダーのデザインをカスタマイズできる「gcalendar-wrapper.php」を使うとcssで横幅をカスタマイズできる。

htmlのカレンダー埋め込みコードを書き換える
ダウンロードしたgcalendar-wrapper.phpのcss記述部分に以下を追加

div.bubble { max-width:100% !important; }

gcalendar-wrapper.phpをthemesフォルダ内にアップロード

「src=”https://calender.google.com/calendar/embed?」 の部分を
「アップロードした場所へのパス/gcalendar-wrapper.php?」 に書き換える

スクロールしてもグローバルナビを上部で固定する(レスポンシブ)

Filed under: css,JavaScript,レスポンシブデザイン — kdcs @ 18年2月9日 金曜日

スクロールしてもグローバルナビを上部で固定する(jQuery使用)
pcで表示の場合のみ固定し、モバイル表示の時はslicknavを表示する

ページhtml
※ナビ固定分の縦幅の起点のため空のdivタグ#navFixedを入れる
モバイル表示の際は、このdivタグは非表示処理(display: none;)する

<div id="nav">
ナビ記述・・・
</div><!--/#nav-->

<div id="navFixed"></div>
<div id="main">
メインコンテンツ・・・
</div><!--/#main-->

css

#nav { text-align: center; background: #2f62c5; }
.is-fixed {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 2;
  width: 100%;
}

/* スマホ対応
---------------------------------------------*/
@media only screen and (max-width: 780px) {
#nav {
  display: none;
  }
div#navFixed { display: none; }
}

javascript

//ナビ スクロール固定 --------------------------------------
$(function() {
  var $win = $(window),
      $main = $('#navFixed'),
      $nav = $('#nav'),
      navHeight = $nav.outerHeight(),
      navPos = $nav.offset().top,
      fixedClass = 'is-fixed';

  $win.on('load scroll', function() {
    var value = $(this).scrollTop();
    if ( value > navPos ) {
      $nav.addClass(fixedClass);
      $main.css('margin-top', navHeight);
    } else {
      $nav.removeClass(fixedClass);
      $main.css('margin-top', '0');
    }
  });
});

IE8で背景色を透過させる

Filed under: css — kdcs @ 17年5月3日 水曜日

通常はrgbaで指定するがIE8以下にも適用させたい場合は

#page-top-js{
    background-color: rgba(0,0,0,0.6);
    /* ie8以下 */
    filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#77000000,EndColorStr=#77000000);
    -ms-filter: "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#77000000,EndColorStr=#77000000)";
}

透過率と色の指定は「#99ffffff」の部分で、グラデーションをかける場合はStartとEndの色を変える
透過については以下参照
g-color

サイト内検索

カテゴリー

最近の投稿

↑上に戻る