ウインドウの幅に応じてタグを追加したり内容を変更したりする方法について考えていきます。12月10日記事

目次





横幅で表示内容を変えたい

PC画面ではたくさんの情報を表示したいのに対し、スマートフォンではそんなに情報を表示したくない時があります。 そんなとき、状況応じて色々と処理を変えていく場合を考えていきます。

参考になりそうなnicepaper記事

  1. HTMLタグをデバイスごとに、javascriptとjQueryで振り分け
  2. jQueryとCSSでメニューなどのスクロールしたらついてくるエリアを作る2

ウインドウの幅を取得

ウインドウ幅を取得するメソッドは$(window).width();で取得できます。それを変数に入れて、その変数をif文で判定して、タグやphpの処理内容を変えていきたいと思います。

コード

<!DOCTYPE HTML>
<html>

<head>
	<meta charset="utf-8">
	<link rel="stylesheet" type="text/css" href="../reset.css">
	<link rel="stylesheet" type="text/css" href="style.css">
	<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
	<script>
		$(function() {

			//$(window).resize(function() {//これだと変更した時にしか表示されないので、loadしたときにも表示されるように以下のように変更する。
			$(window).on('load resize', function() {

				var win_width = $(window).width();
				//console.log(win_width);

				if (win_width >= 600) {
					$('#WidthArea').html('<span>600px以上ですよ。<?php echo 6; ?></span>');
				} else if (win_width >= 400) {
					$('#WidthArea').html('<span>400px以上600pxより小さいですよ。<?php echo 4;?></span>');

				} else {
					$('#WidthArea').html('<span>400pxより小さいですよ。<?php echo 3;?></span>');

				}
			});
		});

	</script>
	<title>jQueryで画面サイズの幅毎にタグを表示や非表示</title>
</head>

<body>
	<div>
		<p>ここは横幅がどんな風でも表示</p>
	</div>
	<div id="WidthArea"></div><!--ここだけ幅に応じて変えていきたい。 -->
	<div>
		<p>ここも横幅がどんな風でも表示</p>
	</div>
</body>

</html>



解説

onメソッドを使って、ロード(load)したときと、横幅を変更したとき(resize)の関数(function)を実行させます。 ※この記事と関係はないですが、スクロールしたときは(scroll)と書きます。 まず、横幅を取得し、win_widthという変数に代入し、その値に応じてif文を書いていきます。

以上

最終更新:2015年12月09日 13:19