WEBサイト制作の勉強

WEBサイト制作の勉強の為の解説ブログです。

フェリカテクニカルアカデミー

レスポンシブイメージをpicture要素で作成する

img要素を画面幅によって切り替えたい場合、以前はJavascript等でwindow幅によって画像のファイル名を変える、などの方法が取られていましたが、html5.1,で策定された「レスポンシブイメージ」を使う事で手間のかかるCSSJavaScriptを必要とせず、htmlのみでデバイスによって適切なimgが表示させられます。

レスポンシブイメージの特徴
  • CSSJavaScriptを使わず、HTMLのみでレスポンシブな画像を取り扱える
  • バイスに応じた最適な「大きさ」の画像を表示できる
  • バイスに応じた最適な「見た目」の画像を出し分けでできる

picture要素

picture要素を使うと、画面解像度や画面幅、画像形式等に基づいて、開発者が任意の画像を出し分けることが可能です。
pictureタグは複数のsourceタグと一つのimgタグで構成されます。sourceタグには3つの属性を指定します。

  • media属性(メディアクエリ)
  • srcset属性
  • sizes属性
srcset属性

画像ファイルのパスと横幅は、imgタグのsrcset属性に記述します。「画像ファイルの横幅」は、「画像をウェブページ上で表示する際の横幅」では無く画像自体の横幅です。


sizes属性

表示する画像の横幅はsizes属性に記述します。メディアクエリーと組み合わせて複数の横幅を指定可能です。
例:ディスプレイ1200px以下の時は画面幅、それ以外では1200pxで画像を表示したい場合は次のように記述します。

sizes="(max-width:1280px) 100vw, 1280px"
レスポンシブイメージのソース

今回の仕様は

  • バイスの横幅が960px以上の場合は960px幅のpc用画像を画面中央に表示
  • バイスの横幅が959px〜641pxの場合は960px幅のタブレット用画像を画面一杯にフルードで表示。
  • バイスの横幅が640px以下の場合は640px幅のsp用画像を画面一杯にフルードで表示。

※imgにフルードイメージの設定を必ずする

<body>
<picture>
<!--960px以上の時に表示したい画像の指定-->
<source media="(min-width:960px)" srcset="https://placehold.jp/2f90a8/ffffff/960x350.jpg?text=pc 960w" sizes="960px">
<!--641~959pxの時に表示したい画像の指定-->
<source media="(min-width:641px)" srcset="https://placehold.jp/db4ca2/ffffff/960x450.jpg?text=tablet 960w" sizes="100vw">
<!--640px以下の時に表示したい画像の指定-->
<img srcset="https://placehold.jp/6edb4c/ffffff/640x450.jpg?text=sp 640w" sizes="100vw" alt="">
</picture>
</body>



レスポンシブイメージは便利な機能ですがIE11では非対応なので、IE対応必須という要件ではポリフィルを用います。


ics.media

cssだけで作るドロワーメニュー

css3のUI疑似クラス「E:checked」を使うことでcssのみでクリックイベントの指定が可能になります。
UI疑似クラス「E:checked」はフォームの部品である「ラジオボタン」「チェックボックス」の2つで使用可能です。

さらに「~」や「+」などのセレクターを使う事でcssのみでハンバーガー部分のアニメーションなども制作が可能です。

「+」で同じ階層のすぐ後の要素にのみ適用
「~」で同じ階層の後ろに並ぶ要素に適用



pushStateとajaxを使ってSEOに強い無限スクロールページを作成する

SEOに適した無限スクロールの導入

FacebookTwitterPinterestなどのソーシャルメディアサイトが使っている事で一躍有名になった無限スクロール(英: Infinite Scrolling)ですが、今でもシングルページを利用したウェブサイト、特にコンテンツの量が豊富なギャラリー的なサイトではよく見かけます。
しかし、よく見られるjQueryを使ったシンプルな無限スクロールはコンテンツをすべて1つのHTMLファイル上に記述しておいて、スクロールするたびに「display:block」と「display:none」を使って表示させていく、というものです。人が見る分にはこの形でも良いでしょうが、Googlebot に対してとなると話が変わってきます。

ご自身のサイトのニュース フィードやピンボードで、ユーザーの利便性を考えて無限スクロール(英語)を使用している方もいらっしゃるでしょう。しかし、Googlebot に対してとなると話が変わってきます。無限スクロールでは、クローラーがユーザーの行動(スクロールやボタンを押してさらにアイテムを読み込むなど)を常にエミュレートできるとは限らないため、フィードやギャラリー内のすべてのアイテムにアクセスできないことがあります。クローラーがアクセスできないコンテンツは、検索結果に表示されることもないでしょう。

無限スクロール ページからリンクされている個別のアイテムを検索エンジンがクロールできるようにするには、無限スクロールを分割した一連のページ群を生成するようにしましょう。

f:id:yachin29:20160216192134p:plain

Google ウェブマスター向け公式ブログ [JA]: 検索エンジンとの相性を考慮した無限スクロールのベストプラクティス


pushStateによるブラウザの履歴の更新

pushStateとは?

pushStateとは、HTML5でサポートされるAPIです。
ページを遷移せずHTML(の一部)を変えた場合でもブラウザに履歴を残し、また一意のURLを割り当てることが可能です。

HTMLの中身が変わってもAjaxはページを遷移しないのでURLが同じままです(#以下が入れ替わるだけで一意のURLとして処理しない)。

ブラウザの戻るボタンを押しても前のコンテンツを再び表示させることはできません。
本当に前のページに戻ってしまいます。

なのでGoogleは、クロール・インデックスできるように特殊な仕様をサポートしてくれたわけです。

しかしpushStateを使えば、Ajaxで変化させたそれぞれのコンテンツに対してユニークなURLを割り当てられるのです。

つまり検索エンジンにとってクロール・インデックスしやすくなります。

Googleの記事では、無限スクロールは次々にページを捲っていく事と同じとしている。そのため、無限スクロールで新しいコンテンツが表示される度にブラウザの履歴(URL)を更新しなければいけない。さらにスクロールでページを進んだり戻ったりする度にURLを更新させる必要があります。


さらにJavaScriptが切れている状態でも手動でページ遷移出来るような設定も取り入れ、検索エンジンとの相性を考慮した無限スクロールにカスタマイズしましょう。


www.suzukikenichi.com

digiday.jp


以上の内容を踏まえて、今回は検索エンジンが処理しやすい無限スクロールを作っていきましょう。

今回のポイント
  • ajaxを使ったシームレスなページ遷移
  • HTML5APIを使い、各ページにユニークなURLやタイトルを最適化する事が出来る
  • 無限スクロールページを、JavaScript が無効でもアクセス可能な形にする。
  • 各コンテンツページにはトップページに自動的に戻るリダイレクト機能を実装
  • 相対パスはNGなのでルートパス、もしくは絶対パスを使用すること
  • 各コンテンツ毎にユニークなタイトルの設定が可能

特にページのタイトルの最適化は非常に大事です。通常の無限スクロールは1枚のhtmlファイルに無数のコンテンツが記述されていますが、今回のようにhtmlファイルを細分化する事で、コンテンツに応じたより細かいタイトルやURLの設定が可能になります。


github.com

<script>
		$('#container').cleverInfiniteScroll({
			contentsWrapperSelector: '#container',
			contentSelector: '.wrapper',
			nextSelector: '#next',
		});
	</script>

デモページ

Javascriptによるリダイレクト

今回の無限スクロールはコンテンツページから入ってしまうとページの挙動がおかしくなってしまうので、コンテンツページに直接アクセス出来ないように、コンテンツページに直接アクセスした場合はトップページにリダイレクトする機能を付けます。
今回は前回のように「.htaccess」によるリダイレクトでは無く、Javascriptによるリダイレクトを試してみます。

setTimeout("redirect()", 0);
function redirect(){
    location.href='../index.html';
}

スマホで見た時にjQueryを無効・有効にする(ユーザーエージェントで判別する方法)

前回の授業では

if($(window).innerWidth() <= 767){
  
  };

のようにwindowの横幅を基準に条件分岐させるパターンをやりました。

今回のやり方はユーザーエージェントでスマホかPCか判別してやる方法です。

ユーザーエージェント

ユーザーエージェント(UserAgent)とはウェブサイトに訪問する際「Google Chromeからアクセスしています」「iPhoneからアクセスしています」などのどんな環境でアクセスしているのかの利用者の情報のことを言います。
ウェブサイトにアクセスする際にはこのユーザーエージェントを必ず送ることになっています。


今回のパターンはPC・タブレットであればjQueryを有効に。スマホiPhoneAndroid)であればjQueryを無効にします。
「!」エクスクラメーションマーク (exclamation mark)とは、Javascriptでは否定の意味で使われます。

if(!navigator.userAgent.match(/(iPhone|Android)/)){
$(function(){
//ここにjQueryの記述
});
}


逆にPC・タブレットであればjQueryを無効に。スマホiPhoneAndroid)であればjQueryを有効の場合

if(navigator.userAgent.match(/(iPhone|Android)/)){
$(function(){
//ここにjQueryの記述
});
}

また、PCであればjQueryを無効に。スマホiPhoneAndroid)とタブレットiPad)であればjQueryを有効の場合

if(navigator.userAgent.match(/(iPhone|iPad|Android)/)){
$(function(){
//ここにjQueryの記述
});
}


このように「|」で区切って自身でユーザーエージェントを追加する事も出来ます。


さらに場合によってはプラグイン用のcssも不要になる事もあります。その時はメディアクエリーを該当するcssファイル内に記述しましょう。

例:640px以上の時だけ「style.css」を適用させる

<link rel="stylesheet" href="style.css" media="screen and (min-width:640px)">

フィルタリング機能とモーダルウィンドウを使ったギャラリー

複数のjQueryプラグインを使って、フィルタリング機能とモーダルウィンドウを使ったギャラリーを作成しましょう。
複数のプラグインを使うことで、管理すべきファイルの数が多くなるので、気を付けましょう。


参考サイト
chiyo-katsumasa.com


フィルタリング
www.kunkalabs.com


フィルタリング
vestride.github.io


モーダルウィンドウ
lokeshdhakar.com



高機能モーダルウィンドウ
fancyapps.com




lightboxは「date-title機能」を使うとテキストを挿入する事は出来ますが、文字以外を入れるとエラーになってしまうので、文字をリンク扱いにしたい場合、リンクの記述を変換する必要があります。

tech-unlimited.com

プラグインを使ったwordpressのデプロイ

以前、バックアップを取って、sql文を使ってwordpressのデータを移動させましたが、今回はプラグインを使ってデプロイさせます。

ja.wordpress.org


このプラグインは検索 & 置換操作中に発生する、あらゆるシリアライゼーションの問題も解決します。
とても簡単にデプロイ出来てしまうので、本当におすすめです。

最新版は小規模なシングルサイトであれば無料で問題なく利用できますが、最大アップロードサイズが「512MB」を超える場合、容量制限を増やす有料エクステンション(拡張機能)があります。

wordpressのデプロイ作業

ステップ1
本サーバー(スターサーバー)に新しいwordpressを作る。

ステップ2
開発サーバー(xampp)と本サーバーの両方に上記の「all-in-one-wp-migration」プラグインをインストールする。

ステップ3
開発サーバーのwordpressのデータをエクスポート。
「エクスポート先」と書かれた箇所をクリックして内容を展開し、「ファイル」を選択。
f:id:yachin29:20190808124218p:plain

しばらく待ち時間が発生しますが、その後、「DOWNLOAD XXX.COM」といった感じのボタンがぼよぉ〜んとアニメーション付きで表示されるので、クリックしてファイルをエクスポートします。
f:id:yachin29:20190808124434p:plain


ステップ4
ステップ3でエクスポートしたファイルを本サーバーにインポートします。ダッシュボード → All-in-One WP Migration → インポート画面を開き、エクスポートしたファイルをドラッグ&ドロップでアップロードするかファイル選択でアップロードしてインポートします。
その後、「PROCEED >」ボタンをクリックすることでファイルの内容が反映され、ログイン画面に戻され流ので、再度ログインして表示を確認しましょう。




www.vektor-inc.co.jp

https://downloads.wordpress.org/plugin/all-in-one-wp-migration.6.74.zip

既存サイトのトレース|ポカリスエット

index.html

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>既存サイトのトレース|ポカリスエット</title>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/slick.css">
<link rel="stylesheet" href="css/slick-theme.css">
<style>
/*カルーセルのボダン*/
/*前に戻るボタン*/
.pick-up-slide .slick-prev{
left: -60px;
top:-20px;
bottom:0;
margin:auto;
z-index:9999;
}
.pick-up-slide .slick-prev:before{
content: '';
display:block;
width:30px;
height:30px;
background:url(img/home_arw_04.png) no-repeat center center/contain;
}
/*次に行くボタン*/
.pick-up-slide .slick-next{
right: -46px;
top:-20px;
bottom:0;
margin:auto;
z-index:9999;
}
.pick-up-slide .slick-next:before{
content: '';
display:block;
width:30px;
height:30px;
background:url(img/home_arw_03.png) no-repeat center center/contain;
}
@media (max-width:764px){
.pick-up-slide .slick-prev{
left: 20px;
}
.pick-up-slide .slick-next{
right: 30px;
}
}
</style>
</head>

<body>
<div class="container">
<header>
<h1><img src="img/header_logo_01.gif" alt=""></h1>
<nav class="g-nav">
<ul>
<li><span>ボタン1</span>
<div class="drop-menu">
<ul class="menu-inner">
<li class="size-l">
<a href="#">
<p class="menu-photo"><img src="img/gnav_img_products_01.png" alt=""></p>
<p class="menu-txt">ポカリスエット基本情報</p>
</a>
</li>
<li class="size-l">
<a href="#">
<p class="menu-photo"><img src="img/gnav_img_products_02.png" alt=""></p>
<p class="menu-txt">イオンウォーター基本情報</p>
</a>
</li>
<li>
<a href="#">
<p class="menu-photo"><img src="img/gnav_img_products_03.jpg" alt=""></p>
<p class="menu-txt">ポカリスエットの歴史</p>
</a>
</li>
<li>
<a href="#">
<p class="menu-photo"><img src="img/gnav_img_products_04.jpg" alt=""></p>
<p class="menu-txt">ポカリスエット誕生秘話</p>
</a>
</li>
<li>
<a href="#">
<p class="menu-photo"><img src="img/gnav_img_products_07.jpg" alt=""></p>
<p class="menu-txt">日常生活にイオンウォーター
</p>
</a>
</li>
<li>
<a href="#">
<p class="menu-photo"><img src="img/gnav_img_products_08.jpg" alt=""></p>
<p class="menu-txt">イオンウォーター<br>パウダータイプ</p>
</a>
</li>
<li>
<a href="#">
<p class="menu-photo"><img src="img/gnav_img_products_09.jpg" alt=""></p>
<p class="menu-txt">ポカリスエット ゼリー</p>
</a>
</li>
<li>
<a href="#">
<p class="menu-photo"><img src="img/gnav_img_products_06.jpg" alt=""></p>
<p class="menu-txt">よくあるQ&A</p>
</a>
</li>
</ul>
</div>
</li>
<li><span>ボタン2</span>
<div class="drop-menu"></div>
</li>
<li><span>ボタン3</span>
<div class="drop-menu"></div>
</li>
<li><span>ボタン4</span>
<div class="drop-menu"></div>
</li>
<li><span>ボタン5</span>
<div class="drop-menu"></div>
</li>
<li><span>ボタン6</span>
<div class="drop-menu"></div>
</li>
<li><a href="https://www.facebook.com/pocarisweat.jp" target="_blank">ボタン7</a></li>
</ul>
</nav>
<div class="news">
<p>NEWS<span>2019 ⁄ 6 ⁄ 6</span>新CM「母娘の揺れる想い」篇を公開しました</p>
</div>
<nav class="sp-nav">
<ul>
<li>
<a href="#">ボタン1<span class="plus"></span></a>
<div class="sp-nav-box">
<p>あああああ</p>
</div>
</li>
<li><a href="#">ボタン2<span class="plus"></span></a>
<div class="sp-nav-box"></div>
</li>
<li><a href="#">ボタン3</a>
<div class="sp-nav-box"></div>
</li>
<li><a href="#">ボタン4</a></li>
<li><a href="#">ボタン5</a></li>
<li><a href="#">ボタン6</a></li>
<li><a href="#">ボタン7</a></li>
</ul>
</nav>
<p class="hum" id="btn"><span class="hum-bar"></span></p>
</header>

<div class="keyvisual slider fade">
<div class="main-photo1"></div>
<div class="main-photo2"></div>
<div class="main-photo3"></div>
</div>
</div><!--/.container-->
<div class="pick-up">
<h2><img src="img/home_ttl_01.gif" alt=""></h2>
<ul class="slider pick-up-slide">
<li><a href="#"><img src="img/home_img_pickup_15.jpg" alt="">
<span>ポカリスエット イオンウォーター リニューアル。より一層おいしくなりました。</span>
</a></li>
<li><a href="#"><img src="img/home_img_pickup_37.jpg" alt="">
<span>未来へ向かって前向きな行動を起こす人たちを応援する「EVERY SWEAT」公開中!</span>
</a></li>
<li><a href="#"><img src="img/home_img_pickup_39.png" alt="">
<span>夏のCM出演者が決定!オーディションドキュメンタリーはこちらから</span>
</a></li>
<li><a href="#"><img src="img/home_img_pickup_33.jpg" alt="">
<span>サウナといえばイオンウォーター</span>
</a></li>
<li><a href="#"><img src="img/home_img_pickup_28.jpg" alt="">
<span>ウォーキングをもっと楽しく!<br>「STEPMAP」公開中</span>
</a></li>
</ul>
</div><!--/.pick-up-->
<div class="tab-wrapper">
<ul id="tab">
<li class="tab-about"><a href="#about">About</a></li>
<li class="tab-scene active"><a href="#scene">Scene</a></li>
</ul>
<div class="tab-box" id="about">
About
</div>
<div class="tab-box active" id="scene">
Scene
</div>
</div><!--/.tab-wrapper-->
<div class="col3">
<div class="hydration">
<div class="hydration-header">
</div>
<h2><img src="img/home_ttl_02_pc.gif" alt=""></h2>
<ul>
<li><a href="#">身体と水の深い関係</a></li>
<li><a href="#">どうして汗をかくの?</a></li>
<li><a href="#">“シーン別”汗をかく量は?</a></li>
<li><a href="#">自発的脱水とは?</a></li>
<li><a href="#">運動しなくても渇いている</a></li>
<li><a href="#">水分補給のタイミング</a></li>
<li><a href="#">子どもの水分補給の大切さ</a></li>
<li><a href="#">高齢者の水分補給の大切さ</a></li>
<li><a href="#">働く人の熱中症対策</a></li>
</ul>
</div>
<div class="action">
<div class="action-header">
</div>
<h2><img src="img/home_ttl_03_pc.gif" alt=""></h2>
</div>
<div class="products">
<div class="products-header">
</div>
<h2><img src="img/home_ttl_04_pc.gif" alt=""></h2>
</div>
</div><!--/.col3-->
<footer>
<ul class="footer-nav">
<li><a href="#"><img src="img/footmenu01.png" alt=""></a></li>
<li><a href="#"><img src="img/footmenu02.png" alt=""></a></li>
<li><a href="#"><img src="img/footmenu03.png" alt=""></a></li>
<li><a href="#"><img src="img/footmenu04.png" alt=""></a></li>
<li><a href="#"><img src="img/footlogo.png" alt=""></a></li>
</ul>
<div class="footer-inner">
<ul class="footer-list">
<li><a href="#">大塚製薬ホームページ</a></li>
<li><a href="#">サイトのご利用にあたって</a></li>
<li><a href="#">個人情報保護への取り組み</a></li>
<li><a href="#">お問い合わせ</a></li>
</ul>
<p class="copy"><small>&copy; Felica Co., Ltd.</small></p>
</div>
</footer>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="js/slick.js"></script>
<script>
$('.fade').slick({
  dots: true,
  infinite: true,
  autoplay: true,
  autoplaySpeed: 3000,
  fade: true,
  pauseOnHover:false,
  pauseOnFocus: false,
  cssEase: 'linear'
});

//カルーセル
$(".pick-up-slide").slick({
dots: false,
infinite: true,
slidesToShow: 3,
slidesToScroll: 1,
responsive: [
{
breakpoint: 764,
settings: {
centerMode: true,
slidesToShow: 1,
centerPadding:'0'
}
}
]
});
</script>
<script>
$(function(){
//ハンバーガー部分
//#btnをクリックしたらその要素に「.click」が付いたり外れたりする
$('.sp-nav').hide();
$('#btn').on('click',function(){
$(this).toggleClass('click');
$('.sp-nav').slideToggle(200);
});

//sp-nav-boxを展開させる
//「.sp-nav a」をクリックしたら
$('.sp-nav a').on('click',function(){
//クリックした要素のすぐ下の弟の「.sp-nav-box」をslideToggleさせる、同時に親要素の他の兄弟要素の子要素の「.sp-nav-box」をslideUp
$(this).next('.sp-nav-box').slideToggle().parent('li').siblings('li').children('.sp-nav-box').slideUp();
$(this).children('.plus').toggleClass('minus').parents('li').siblings('li').find('.plus').removeClass('minus');
});

//タブパネル
//#tabの子孫のa要素をクリックしたら
$('#tab a').on('click',function(){
//クリックしたその要素の親要素「li」に「.active」をaddする。さらにクリックしていない方のa要素の「.active」をremoveする
$(this).parent('li').addClass('active').siblings('li').removeClass('active');
//クリックしたa要素のhref属性の値を変数targetに代入する
var target = $(this).attr('href');
console.log(target);
//変数target(#aboutか#scene)に「.active」をaddする。さらにクリックしていない方の「.tab-box」の「.active」をremoveする
$(target).addClass('active').siblings('.tab-box').removeClass('active');

return false;
});
});
</script>
</body>
</html>


スタイルシート

@charset "utf-8";
/* CSS Document */

* ress.css • v1.2.2
 * MIT License
 * github.com/filipelinhares/ress
 * 全ての要素にbox-sizing: border-box;.
 * 全ての背景画像にbackground-repeat: no-repeat.
 */html{box-sizing:border-box;-webkit-text-size-adjust:100%}*,:after,:before{background-repeat:no-repeat;box-sizing:inherit}:after,:before{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0}audio:not([controls]){display:none;height:0}hr{overflow:visible}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}summary{display:list-item}small{font-size:80%}[hidden],template{display:none}abbr[title]{border-bottom:1px dotted;text-decoration:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}input{border-radius:0}[role=button],[type=button],[type=reset],[type=submit],button{cursor:pointer}[disabled]{cursor:default}[type=number]{width:auto}[type=search]{-webkit-appearance:textfield}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:0;padding:0}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button:-moz-focusring{outline:1px dotted ButtonText}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}button,select{text-transform:none}button,input,select,textarea{background-color:transparent;border-style:none;color:inherit}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;max-width:100%;white-space:normal}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}img{border-style:none}progress{vertical-align:baseline}svg:not(:root){overflow:hidden}audio,canvas,progress,video{display:inline-block}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled]{cursor:default}::-moz-selection{background-color:#b3d4fc;color:#000;text-shadow:none}::selection{background-color:#b3d4fc;color:#000;text-shadow:none}ul,ol{list-style:none;}a{text-decoration:none;}.wrapper{overflow:hidden;}body{overflow-y:scroll;}
*{box-sizing:border-box;}
a{color:#222;}
img{
vertical-align:bottom;
}
/*PCレイアウト*/
.container {
width:100%;
height:100vh;
position:relative;
}
header{
width:100%;
height:120px;
display:flex;
flex-wrap:wrap;
position:absolute;
bottom:0;
left:0;
z-index:9999;
}
h1{
width:30%;
height:80px;
background:#015db2;
text-align:right;
padding:10px 60px 0 0;
}
.g-nav{
width:70%;
height:80px;
padding-left:40px;
background:#FFF;
}
.g-nav>ul{
display:flex;
}
.g-nav>ul>li{
width:112px;
height:80px;
cursor:pointer;
background:url(../img/header_gnav_pc_01.gif) no-repeat 0 0;
}
.g-nav>ul>li>span{
display:block;
white-space:nowrap;
text-indent:100%;
overflow:hidden;
}
.g-nav>ul>li:nth-child(2){
background:url(../img/header_gnav_pc_01.gif) no-repeat -112px 0;
}
.g-nav>ul>li:nth-child(3){
background:url(../img/header_gnav_pc_01.gif) no-repeat -224px 0;
}
.g-nav>ul>li:nth-child(4){
background:url(../img/header_gnav_pc_01.gif) no-repeat -336px 0;
}
.g-nav>ul>li:nth-child(5){
background:url(../img/header_gnav_pc_01.gif) no-repeat -448px 0;
}
.g-nav>ul>li:nth-child(6){
background:url(../img/header_gnav_pc_01.gif) no-repeat -560px 0;
}
.g-nav>ul>li:nth-child(7){
background:url(../img/header_gnav_pc_01.gif) no-repeat -672px 0;
}
.g-nav>ul>li:hover{
background:url(../img/header_gnav_pc_01.gif) no-repeat 0 -80px;
}
.g-nav>ul>li:nth-child(2):hover{
background:url(../img/header_gnav_pc_01.gif) no-repeat -112px -80px;
}
.g-nav>ul>li:nth-child(3):hover{
background:url(../img/header_gnav_pc_01.gif) no-repeat -224px -80px;
}
.g-nav>ul>li:nth-child(4):hover{
background:url(../img/header_gnav_pc_01.gif) no-repeat -336px -80px;
}
.g-nav>ul>li:nth-child(5):hover{
background:url(../img/header_gnav_pc_01.gif) no-repeat -448px -80px;
}
.g-nav>ul>li:nth-child(6):hover{
background:url(../img/header_gnav_pc_01.gif) no-repeat -560px -80px;
}
.g-nav>ul>li:nth-child(7):hover{
background:url(../img/header_gnav_pc_01.gif) no-repeat -672px -80px;
}
.g-nav>ul>li>a{
display:block;
height:80px;
white-space:nowrap;
text-indent:100%;
overflow:hidden;
}
.news{
width:100%;
height:40px;
background:rgba(1,93,178,0.7);
}
/*ドロップダウンメニュー*/
.drop-menu{
width:100%;
height:422px;
background:#FFF url(../img/gnav_bg_megaMenu_01.gif) repeat-x left bottom;
position:absolute;
bottom:120px;
left:0;
display:none;
}
.g-nav>ul>li:hover>.drop-menu{
display:block;
}
.keyvisual {
width:100%;
height:100vh;
}
.main-photo1{
width:100%;
height:100vh;
background:url(../img/home_img_slider_05_pc.jpg) no-repeat center center/cover;
}
.main-photo2{
width:100%;
height:100vh;
background:url(../img/home_img_slider_06_pc.jpg) no-repeat center center/cover;
}
.main-photo3{
width:100%;
height:100vh;
background:url(../img/home_img_slider_03_pc.jpg) no-repeat center center/cover;
}
.menu-inner{
width:840px;
margin:0 auto;
padding-top:20px;
overflow:hidden;
}
.menu-inner>li{
width:190px;
height:120px;
float:left;
margin:10px;
background:#B04C4E;
}
.menu-inner>li.size-l{
width:190px;
height:260px;
}
.menu-photo{
margin-bottom:6px;
}
.menu-txt{
font-size:14px;
background:url(../img/mod_ico_arwR_01.png) no-repeat left 3px;
padding-left:1em;
}
.menu-inner>li>img{
max-width:100%;
}
.news>p{
font-size:13px;
color:#FFF;
margin-left:30%;
padding-top:8px;
}
.news>p>span{
padding:2px;
background:#7C7A7B;
margin:0 10px;
}
/*ピックアップ部分*/
.pick-up{
background:#FFF;
}
.pick-up>h2{
width:116px;
margin:0 auto;
padding-top:100px;
}
.pick-up img{
max-width:100%;
}
.pick-up-slide {
max-width:820px;
margin:100px auto;
display:flex;
justify-content:space-between;
}
.pick-up-slide li{
width:260px!important;
}
.pick-up-slide li>a>span{
display:block;
font-size:12px;
background:url(../img/mod_ico_arwR_01.png)no-repeat left 2px;
padding-left:1.4em;
margin-top:10px;
}

/*タブパネル部分*/
.tab-wrapper{
width:100%;
background:url(../img/home_bg_01.jpg) no-repeat left top/cover;
padding:50px 0;
}
#tab{
max-width:1080px;
height:80px;
margin:0 auto;
background:#FFFFFF;
display:flex;
}
#tab>li{
width:50%;
height:80px;
position:relative;
}
#tab>li>a{
display:block;
height:80px;
white-space:nowrap;
text-indent:100%;
overflow:hidden;
}
#tab>li.tab-about>a {
background:url(../img/home_btn_tab_01_pc_off.png) no-repeat 0 0/cover;
}
#tab>li.tab-scene>a {
background:url(../img/home_btn_tab_02_pc_off.png) no-repeat 0 0/cover;
}
#tab>li.tab-about.active>a{
background:url(../img/home_btn_tab_01_pc_on.png) no-repeat 0 0/cover;
}
#tab>li.tab-scene.active>a{
background:url(../img/home_btn_tab_02_pc_on.png) no-repeat 0 0/cover;
}
#tab>li.active::after{
display:block;
content:"";
width:0;
height:0;
border:12px solid transparent;
border-top:16px solid #015db2;
position:absolute;
right:0;
left:0;
bottom:-24px;
margin:auto;
z-index:1000;
}
.tab-box{
width:100%;
margin:0 auto;
height:500px;
background:rgba(255,255,255,0.80);
display:none;
}
.tab-box.active{
display:block;
}


/*3カラム部分*/
.col3{
width:100%;
display:flex;
padding:50px 0;
}
.col3>div{
width:33.33%;
background:#f6f8f9;
font-size:14px;
}
.col3>div>h2{
padding:40px 60px;
}
.col3>div>ul{
padding:0 60px;
}
.col3>div>ul>li{
margin-bottom:20px;
}
.col3>div>ul>li>a{
display:block;
background:url(../img/mod_ico_arwR_01.png) no-repeat left 3px;
padding-left:16px;
}
.col3>div>ul>li>a:hover{
text-decoration:underline;
}
.col3>div:nth-of-type(2){
background:#FFF;
padding:0 10px;
}
.hydration-header{
height:0;
padding-bottom:32.8%;/*210x100÷640=32.8125....を切り捨て*/
background:url(../img/home_img_01.jpg) no-repeat center center/cover;
}
.action-header{
height:0;
padding-bottom:32.8%;
background:url(../img/home_img_02_pc.jpg) no-repeat center center/cover;
}
.products-header{
height:0;
padding-bottom:32.8%;
background:url(../img/home_img_03.jpg) no-repeat center center/cover;
}

/*footer部分*/
.footer-nav{
max-width:960px;
margin:0 auto;
display:flex;
}
.footer-nav>li{
margin-right:20px;
}
.footer-nav>li:last-child{
margin:0 0 0 auto;
}
.footer-inner{
width:100%;
padding:5px 0;
display:flex;
justify-content:space-between;
font-size:12px;
background:#EBEBEB;
}
.footer-list{
display:flex;
}
.footer-list>li{
margin-right:10px;
}
.sp-nav{
display:none;
}
@media (max-width:764px){
/*PCナビを非表示*/
.g-nav{
display:none;
}
/*SPナビを表示*/
.sp-nav{
display:block;
width:100%;
position:absolute;
top:50px;
left:0;
z-index:99999;
border-bottom:10px solid #1153ae;
}
.sp-nav li{
width:100%;
}
.sp-nav li>a{
display:block;
width:100%;
height:60px;
position:relative;
background:#FFF url(../img/header_gnav_sp_01.gif) no-repeat 0 0/320px auto;
border-top:1px solid #ccc;
white-space:nowrap;
text-indent:100%;
overflow:hidden;
}
.sp-nav li:nth-of-type(2)>a{
background:#FFF url(../img/header_gnav_sp_01.gif) no-repeat 0 -60px/320px auto;
}
.sp-nav li:nth-of-type(3)>a{
background:#FFF url(../img/header_gnav_sp_01.gif) no-repeat 0 -120px/320px auto;
}
.sp-nav li:nth-of-type(4)>a{
background:#FFF url(../img/header_gnav_sp_01.gif) no-repeat 0 -180px/320px auto;
}
.sp-nav li:nth-of-type(5)>a{
background:#FFF url(../img/header_gnav_sp_01.gif) no-repeat 0 -240px/320px auto;
}
.sp-nav li:nth-of-type(6)>a{
background:#FFF url(../img/header_gnav_sp_01.gif) no-repeat 0 -300px/320px auto;
}
.sp-nav li:nth-of-type(7)>a{
background:#FFF url(../img/header_gnav_sp_01.gif) no-repeat 0 -360px/320px auto;
}

/*プラスマーク*/
.plus{
display:block;
width:20px;
height:2px;
background:#A3A3A3;
position:absolute;
top:0;
bottom:0;
right:20px;
margin:auto;
}
.plus::before{
display:block;
content:"";
width:20px;
height:2px;
background:#A3A3A3;
position:absolute;
top:0;
bottom:0;
right:0;
margin:auto;
transform:rotate(90deg);
}
.plus.minus::before{
background:transparent;
}


.sp-nav-box{
width:100%;
height:200px;
background:#52CBC1;
display:none;
}






header{
width:100%;
height:50px;
display:flex;
flex-wrap:wrap;
position:static;
justify-content:space-between;
}
.news{
display:none;
}
/*ハンバーガー部分*/
.hum{
width:56px;
height:50px;
border-left:1px solid #1153ae;
position:relative;
}
.hum-bar{
display:block;
width:34px;
height:3px;
background:#1153ae;
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
margin:auto;
}
.hum-bar::before{
display:block;
content:"";
width:34px;
height:3px;
background:#1153ae;
position:absolute;
top:-22px;
right:0;
bottom:0;
left:0;
margin:auto;
}
.hum-bar::after{
display:block;
content:"";
width:34px;
height:3px;
background:#1153ae;
position:absolute;
top:0;
right:0;
bottom:-22px;
left:0;
margin:auto;
}
.hum.click{
background:#1153ae;
}
.click>.hum-bar{
background:transparent;
}
.click>.hum-bar::before{
top:0;
transform:rotate(45deg);
background:#FFF;
}
.click>.hum-bar::after{
bottom:0;
transform:rotate(-45deg);
background:#FFF;
}


h1{
width:100px;
height:50px;
text-align:center;
padding:0;
}
h1>img{
max-width:100%;
width:52px;
height:30px;
margin-bottom:10px;
}
/*キービジュアル部分*/
.container {
width:100%;
height:60vh;
position:relative;
}
.keyvisual {
width:100%;
height:60vh;
}
.main-photo1{
width:100%;
height:60vh;
background:url(../img/home_img_slider_05_sp.jpg) no-repeat center center/cover;
}
.main-photo2{
width:100%;
height:60vh;
background:url(../img/home_img_slider_06_sp.jpg) no-repeat center center/cover;
}
.main-photo3{
width:100%;
height:60vh;
background:url(../img/home_img_slider_03_sp.jpg) no-repeat center center/cover;
}


/*pick-up部分*/
.pick-up-slide li{
margin:0 auto;
}

/*3カラム部分*/
.col3{
width:100%;
display:block;
padding:50px 0;
}
.col3>div{
width:100%;
background:#f6f8f9;
font-size:14px;
}

/*footer部分*/
.footer-nav{
display:none;
}


}