SQLの窓

2015年11月16日


CSS だけで回る、実行中アイコン ( 但し IE9 は不可 ) の指定されたCSSの意味の解説

snowstorm.js という、雪を降らせるだけの スクリプトがあるのですが、少しカスタマイズして雪のキャラクタに ❄ を使って、一つ一つ廻すデモを作ってみました。

snowstorm の一つ一つを廻すデモ


▼ 以下本編

重要なのは、3つの部品に注目する事です。

@keyframes

これは、どのようなアニメーションをするかの定義で、根本的なものです。簡単な記述では、最初と最後を記述して( from to または 0% 100% ) としてその間を CSS に補完させます。

定義は、一つあればどこからでも参照できます。その際、コンテンツの animation で、@keyframes で指定した名前を指定します。

複数に変化を分割可能で、回転ですと 0% 100% でいいですが、複雑な変化を行う場合は、0% 20% 50% 100% のように変化の段階を指定できます。

animation

アニメーションする為の時間と、その時間をいくつに分割するかを指定します。また、名前を指定して、どのようなアニメーションをするかを決定します。ですから、@keyframes とはペアで記述する必要があります。

box-shadow

box-shadow を使って、回転している残像を一括で作成しています。丸く表示されているのは本体が border-radius: 50% で丸くなっているからで、本体は中心に描画されてその周りを複数の不透明度の違う円が並んでいます。それを回転する事によって、このようなアニメーションが実演されます。


<style type="text/css">
/*
  アニメーションの実体
  ※ フレームの最初と最後でどういう状態にするか
  ※ 同じアニメーションなら一つ定義して複数から参照する
*/
@-webkit-keyframes ajax-loader-rotate {
  0% { -webkit-transform: rotate(0deg); }
  100% { -webkit-transform: rotate(360deg); }
}
@-moz-keyframes ajax-loader-rotate {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@-o-keyframes ajax-loader-rotate {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@keyframes ajax-loader-rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* アイコン */
.ajax-loader-icon {

  /* 元の div の背景色( 意味が解るように着色/通常は指定しない ) */
  /* background-color: #e0e0e0; */

  /* テスト表示位置の調整 */
  margin: 20px;

  opacity: .8;		/* 単独では特に必要無い */
  display: block;	/* div はもともとブロック。他の要素用 */
  border-radius: 50%;	/* 元の形状を丸くする為 */

  font-size: 18px;	/* 位置指定を em でしているので、ここを変更すると半径変更 */
  width: 5px;		/* サイズ変更 */
  height: 5px;

  /* em を使うと、font-size にサイズを連動させる事ができる */
  /* width: .25em; height: .25em; */

  /* box-shadow による影の複数作成 : 位置と色と不透明度を指定 */
  box-shadow:
    0 -.4em       0 0 rgba(50,0,0,1),
    -.28em -.28em 0 0 rgba(50,0,0,.75),
    -.4em 0       0 0 rgba(50,0,0,.50),
    -.28em .28em  0 0 rgba(50,0,0,.25)
  ; 

/*
  アニメーションのフレームの秒数といくつに分解するか
  たまたま、8つに分解していい感じになっている様子
  0.85s も適当。一周するのに必要な時間
*/
  -webkit-animation: .85s ajax-loader-rotate steps(8) infinite;
  -moz-animation: .85s ajax-loader-rotate steps(8) infinite;
  -o-animation: .85s ajax-loader-rotate steps(8) infinite;
  animation: .85s ajax-loader-rotate steps(8) infinite;

}

/* テスト用の大きな DIV */
.ajax-loader {

  /* 元の div の背景色( 意味が解るように着色/通常は指定しない ) */
  /* background-color: #e0e0e0; */

  /* テスト表示位置の調整 */
  margin: 100px;

  opacity: .8;		/* 単独では特に必要無い */
  display: block;	/* div はもともとブロック。他の要素用 */
  border-radius: 50%;	/* 元の形状を丸くする為 */

  font-size: 150px;	/* 位置指定を em でしているので、ここを変更すると半径変更 */
  width: 40px;		/* サイズ変更 */
  height: 40px;

  /* em を使うと、font-size にサイズを連動させる事ができる */
  /* width: .25em; height: .25em; */

  /* box-shadow による影の複数作成 : 位置と色と不透明度を指定 */
  box-shadow:
    0 -.4em       0 0 rgba(50,0,0,1),
    -.28em -.28em 0 0 rgba(50,0,0,.75),
    -.4em 0       0 0 rgba(50,0,0,.50),
    -.28em .28em  0 0 rgba(50,0,0,.25)
  ; 

/*
  アニメーションのフレームの秒数といくつに分解するか
  たまたま、8つに分解していい感じになっている様子
  0.85s も適当。一周するのに必要な時間
  @keyframes と名前でリンク
*/
  -webkit-animation: .85s ajax-loader-rotate steps(8) infinite;
  -moz-animation: .85s ajax-loader-rotate steps(8) infinite;
  -o-animation: .85s ajax-loader-rotate steps(8) infinite;
  animation: .85s ajax-loader-rotate steps(8) infinite;

}
</style>

<div class="ajax-loader-icon"></div>
<div class="ajax-loader"></div>
box-shadow については、以下を参照

 CSS3 : box-shadow の影分身の解説

 jQuery のスライダーで box-shadow の影分身の効果をリアルタイムに確認する


IE10 の @keyframes

@keyframes rule (Internet Explorer)



タグ:CSS3
posted by lightbox at 2015-11-16 02:29 | CSS3 | このブログの読者になる | 更新情報をチェックする

2015年11月14日


IOS のようなスクロールバーインターフェイスを jQuery のプラグインとして実現する jQuery.NiceScroll

デモページ

▼ デモページのダウンロード



配布ページ(GitHub)

特徴その (1)

スクロールバーを非表示にして表示エリアをすっきりと。マウスが近づくとスクロールバーが現れます。スクロールは滑らかになり、キーボードからも操作できます( 矢印キー、pagup/down キー, home/end キー )

特徴その (2)

cdnjs.com でホスティングされているので、ダウンロードが必要ありません


特徴その (3)

DIV 等に指定する事によって、スクロール可能な表示エリアを容易に作る事ができます。また、オプションで最大表示するアイコンを表示して使う事もできます( その場合表示エリアをダブルクリックしても最大化されます )

▼ 最大化前


▼ 最大化後



特徴その (4)

とても簡単な設定
<script>
// jQuery 初期処理
$(function() {

	// DIV を固定サイズにして自動改行させています
	$( "#story,#story_box_zoom" )
		.css({
			width: "700px",
			height: "200px",
			whiteSpace: "pre-wrap"
		});

	// ページ全体( HTML ) と、DIV に対してデフォルトの実装
	$( "html,#story" ).niceScroll();

	// DIV に対して、最大化のオプション
	$( "#story_box_zoom" ).niceScroll( {boxzoom:true,scriptpath:''});
	

});
</script>

デモページ

※ 重要な注意事項
ホスティングされたものを使用する場合、最大化用のアイコンが使用できません。ダウンロードして手に入れるか、以下の画像を使って下さい。



この画像を使用するページと同じフォルダに置いて、scriptpath:'' とすると、カレントフォルダのものを使用します。URL を設定すれば固定位置の画像を使用できると思います( ソースを読んで確認しました )
その他 オリジナルサイトにたくさんのオプションが英語で書かれています。必要ならば、いろいろ調整できます( 例えば、scrollspeed ) Google 翻訳での表示 ライセンスは、MITライセンスです。 $("iframe") は、Google Chrome では動作しましたが、他のブラウザはうまく動かないかもしれません。IFRAME の内部で $("html") が無難です。
posted by lightbox at 2015-11-14 10:22 | IFRAME パッケージ | このブログの読者になる | 更新情報をチェックする

2015年11月13日


jQuery : 一つの 複数選択の SELECT 要素から二つのリストボックスを作成して、必要なグループ選択するプラグイン / multiselect.js と PHP との連携

multiselect.js ダウンロードページ



デモページ



jquery.multi-select.js の概要

画面からも解るとおり、全体の一覧より( この場合は右側 ) 必要なグループを作成する時に便利なコントロールです。HTML 上で作成するのは、一つの複数選択可能な SELECT 要素のみで、プラグインによって二つのリストボックスを横に並べたようなコントロールを作成してくれます。

OPTION 要素内に selected がある場合に、選択後のデータとして表示されます。それ以外はもう一つの一覧(残り全て)として表示されます。ですから、事前に選択データを用意するという事は、事前に OPTION 要素に selected を指定しておく事と同義です。

表示を JavaScript でリセットしたい場合は、jQuery 等で 元の SELECT 要素の内容を変更しておいて、プラグインの refresh メソッドを使用します
$('#select_item').multiSelect("refresh");
選択済みデータの処理 左側のタイトル部分にあるコンボボックスによって選択されたグループをサーバーから読み出して再表示するようになっています。コンボボックスのイベントでは、location.href に URL をセットしてリロードしています( キャッシュされないように、getTime を使用 )
	$("#syozoku").on("change", function(){

		location.href = "change.php?scode=" + $(this).val() + "&c="+ (new Date()).getTime();

	} );

カスタマイズ処理

クラスとして、ms-selectable と ms-selection があり、ms-selectable が選択するほうのリストボックスです。ですから、ここでは ms-selectable に float:right、ms-selection に float:left を設定して選択を右に持ってきています( デフォルトでは逆 )

また、このクラスを使って選択後のスクロールが表示される要素に対して、scrollTop( 10000 ) を実行して、選択後のスクロールを一番最後まで移動しています。選択後のリストボックスでは、一番最後にデータが追加されるので、デフォルトでは視認できないのでカスタマイズしています

change.php
<?php
require_once("../common.php");

session_start();
header( "Content-Type: text/html; Charset={$_SESSION["charset"]}" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );

require_once("dbsetting.php");

if ( $_GET['scode'] == '' ) {
	$_GET['scode'] = '0001';
}


?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="http://winofsql.jp/jquery/plugins/multiselect/jquery.multi-select.js"></script>
<link rel="stylesheet" href="http://winofsql.jp/jquery/plugins/multiselect/multi-select.css" type="text/css" />

<script>
$(function(){

	var option1 = "";
	var option2 = "";
	var option3 = "";

	if ( '<?= $_GET['scode'] ?>' == '0001' ) {
		option1 = '<option value="0001" selected>';
	}
	else {
		option1 = '<option value="0001">';
	}

	if ( '<?= $_GET['scode'] ?>' == '0002' ) {
		option2 = '<option value="0002" selected>';
	}
	else {
		option2 = '<option value="0002">';
	}

	if ( '<?= $_GET['scode'] ?>' == '0003' ) {
		option3 = '<option value="0003" selected>';
	}
	else {
		option3 = '<option value="0003">';
	}

	var syozoku = '<div class="header_item"><select id="syozoku" name="syozoku">'+ option1 +'営業部第一</option>'+ option2 +'営業部第ニ</option>'+ option3 +'営業部第三</option></select></div>';

	$('#select_item').multiSelect({
		cssClass: "select_item",
		keepOrder: true,
		selectableHeader: "<div class='header_item'>対象社員</div>",
		selectionHeader: syozoku,
		afterSelect: function(values){
			console.log( values[0] )
			console.log( "Select:" + $( "#select_item").children( "option[value='"+values+"']" ).text() )

			$("#ms-" + "select_item .ms-selection .ms-list").scrollTop(10000);
		},
		afterDeselect: function(values){
			console.log( values[0] )
			console.log( "Deselect:" + $( "#select_item").children( "option[value='"+values+"']" ).text() )
		}
	});

	$("#syozoku").on("change", function(){

		location.href = "change.php?scode=" + $(this).val() + "&c="+ (new Date()).getTime();

	} );

});
</script>

</head>
<body>
<style>
.header_item {
	padding: 5px;
	text-align: center;
	border: solid 1px #ccc;
	margin-bottom:2px;
	background-color: #eee;
}
.select_item {
	width: 600px;
}
.select_item .ms-selectable li.ms-elem-selectable, .select_item .ms-selection li.ms-elem-selection {
	padding: 10px;;
}
.select_item ul.ms-list{
  height: 300px;
}
/* 左右入れ替え */
.select_item .ms-selectable {
	float: right;
}
.select_item .ms-selection {
	float: left;
}

select {
	font-size: 16px;
}
</style>
<form
	method="get"
	id="target_form"
	target="my_ferame"
	action="change_update.php"
	accept-charset="utf-8">

	<input
		type="submit"
		name="send"
		id="send_check"
		value="更新"
		style='padding:5px;width:600px;margin-bottom:16px;'>

	<select 
		multiple
		id="select_item"
		name="select_item[]">

<?php

	// -------------------------------------
	// コンボボックス内容
	// -------------------------------------
	$query = <<< QUERY
select * from `社員マスタ`
QUERY;

	$result = $connect->query($query); 
	if ( !$result ) {
		die('クエリーに誤りがあります : ' . $connect->error );
	}
	
	while ($row = $result->fetch_array(MYSQLI_BOTH)) {
	
		$sentaku = "";
		if ( $row["所属"] == $_GET['scode'] ) {
			$sentaku = "selected";
		}

		print <<<DISPLAY
		<option value="{$row["社員コード"]}" $sentaku>{$row["氏名"]}</option>
DISPLAY;
	
	}

?>

	</select>

</form>

<br>
<iframe
	name="my_ferame"
	frameborder="1"
	scrolling="yes"
	width="600"
	height="200"></iframe>

</body>
</html>



change_update.php
<?php
session_start();
header( "Content-Type: text/html; Charset={$_SESSION["charset"]}" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );

require_once("dbsetting.php");

$list = "";
foreach ($_GET['select_item'] as $scode ) {

	if ( $list != "" ) {
		$list .= ",";
	}
	$list .= "'$scode'";

}

$query = <<< QUERY
update `社員マスタ` set 
	`所属` = '{$_GET['syozoku']}'
	,`更新日` = now()
 where
 `社員コード` in ({$GLOBALS['list']})
QUERY;

//$connect->query($query);

print "<pre>";
print $query;

print "\n---------------------------------\n";

print_r($_GET);
print "</pre>";


?>


関連する記事

jQuery プラグイン : multiselect.js の使用方法とカスタマイズ



posted by lightbox at 2015-11-13 15:09 | IFRAME パッケージ | このブログの読者になる | 更新情報をチェックする

jQuery プラグイン mmenu( 左右からスライドインするメニュー ) を F1 キーと F2 キーに割り当てて、左右から二つのメニューを開く

リンクが間違っていてたので訂正しました(2015/11/13)
デモページ

デモページ内の薄い灰色の部分は、IFRAME です。
jQuery で、ページ内で F1 キー(HELP) を起動させないようにする / IFRAME 内も同時対応 で、F1 キーのヘルプ機能を抑制したので、かわりに jQuery プラグイン の mmenu でメニューを開くようにしています。( 開いている状態で F1 キーを押すと、メニューは閉じるようになっています )

mmenu は、本体のページに実装されるので、IFRAME の上に重なる形で開いたり閉じたりします。本来は、単一のページ上で使われる為か、メニューのリンクをクリックしてもメニューが閉じないので、後からメニューに対して処理できるように、mmenu の API を取得して使用しますF1 キーで、左側のメニューを開いた後、F2 で右側のメニューを開くと、自動的に左側のメニーは閉じます。これはもともとの動作ですが、通常とは違う形で元のページもスライドします。そして、メニーを閉じると元に戻るのですが、これも全て元々の動作です。

ライブラリは、CDN(cdnjs.com) でホスティングされているので、ダウンロードする事無く実装する事ができます。ダウンロードする場合は、配布ページよりダウンロード可能です。

▼ 配布ページ


ライセンスは、MIT ライセンスが使われていますが、『if you are going to use it in a commercial project, please donate.』とあって、商用の場合は寄付(donationware)をお願いしますとの事です。いわゆる、『カンパウェア』のようです
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=<?= $_SESSION["charset"] ?>">
<title>PHPテンプレート</title>

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/jquery-ui.css">
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>

<?php
// *************************************
// mmenu 用の CDN ホスディング
// *************************************
?>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery.mmenu/5.5.3/core/js/jquery.mmenu.min.all.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jQuery.mmenu/5.5.3/core/css/jquery.mmenu.all.css">

<link rel="stylesheet" href="css.php">

<link rel="stylesheet" href="iframe_css.php">
<script src="iframe_js.php"></script>

<style>
<?php
// *************************************
// mmenu 用のスタイルのカスタマイズ
// *************************************
?>
.mm-title {
	color: black!important;
}
.mm_user_title {
	padding: 20px!important;
}
</style>
<script>
// mmenu に対しての処理用
var mmenu_api_left;
var mmenu_api_right;

$(function() {

	$("#mmenu_left").mmenu({
		navbar: {
			title: "オプションメニュー 左"
		},
		offCanvas: {
			position  : "left",
			zposition : "front"
		}
	});

	// mmenu に対して処理を行うオブジェクトを取得
	mmenu_api_left = $("#mmenu_left").data( "mmenu" );

	// メニューをクリックした時に、メニューを閉じる
	$(".mm_link_left").on("click",function(){
		mmenu_api_left.close();
	});


	$("#mmenu_right").mmenu({
		navbar: {
			title: "オプションメニュー 右"
		},
		offCanvas: {
			position  : "right",
			zposition : "front"
		}
	});

	// mmenu に対して処理を行うオブジェクトを取得
	mmenu_api_right = $("#mmenu_right").data( "mmenu" );

	// メニューをクリックした時に、メニューを閉じる
	$(".mm_link_right").on("click",function(){
		mmenu_api_right.close();
	});


// F1 キーで HELP を起動させないようにする
// ※ document のかわりに window でも動作するはずです(IFRAME内は window です)
// ※ $( "body" ) は不可です
	$( [document,$( "iframe" ).get(0).contentWindow] )
		// IE 用
		.on( "help", false )
		// IE 以外の一般処理用
		.on( "keydown", function(e){
			if ( e.keyCode == 0x70 ) {

				// F1 キーでメニューを開いたり閉じたりします
				if($('#mmenu_left').is(':visible')) {
					mmenu_api_left.close();
				}
				else {
					mmenu_api_left.open();
				}

				return false;
			}
			if ( e.keyCode == 0x71 ) {

				// F2 キーでメニューを開いたり閉じたりします
				if($('#mmenu_right').is(':visible')) {
					mmenu_api_right.close();
				}
				else {
					mmenu_api_right.open();
				}

				return false;
			}
		});

});

</script>
</head>
<body>
<div id="wrapper">
	<div id="head_unit">
		<form
			method="get"
			target="target_accept"
			action="accept_r.php">

			<input
				type="text" 
				name="tx1">

			<input
				type="button"
				value="リセット"
				style="background-color:white;"
				onclick="location.reload(true);">

			<input
				 type="submit"
				name="send"
				value="送信">

		</form>
	</div>
	<iframe
		src="accept_r.php"
		id="<?= $_SESSION["iframe_id"] ?>"
		name="target_accept"
		frameborder="0"
	></iframe>
</div>

<div id="mmenu_left">
<ul>
	<li class="mm_user_title">jQuery mmenu</li>
	<li><a class="mm_link_left" href="http://winofsql.jp/if_skeleton/lightbox99/pdf/pdf_out.php" target="target_accept">PDF</a></li>
	<li><a class="mm_link_left" href="#" target="target_accept">メニュー2</a></li>
	<li><a class="mm_link_left" href="#" target="target_accept">メニュー3</a></li>
	<li><a class="mm_link_left" href="#" target="target_accept">メニュー4</a></li>
	<li><a class="mm_link_left" href="#" target="target_accept">メニュー5</a></li>
	<li><a class="mm_link_left" href="#" target="target_accept">メニュー6</a></li>
	<li><a class="mm_link_left" href="accept_r.php" target="target_accept">初期ページ</a></li>
</ul>
</div>

<div id="mmenu_right">
<ul>
	<li class="mm_user_title">jQuery mmenu</li>
	<li><a class="mm_link_right" href="http://winofsql.jp/if_skeleton/lightbox99/pdf/pdf_out.php" target="target_accept">PDF</a></li>
	<li><a class="mm_link_right" href="#" target="target_accept">メニュー2</a></li>
	<li><a class="mm_link_right" href="#" target="target_accept">メニュー3</a></li>
	<li><a class="mm_link_right" href="#" target="target_accept">メニュー4</a></li>
	<li><a class="mm_link_right" href="#" target="target_accept">メニュー5</a></li>
	<li><a class="mm_link_right" href="#" target="target_accept">メニュー6</a></li>
	<li><a class="mm_link_right" href="accept_r.php" target="target_accept">初期ページ</a></li>
</ul>
</div>

</body>
</html>




posted by lightbox at 2015-11-13 14:56 | IFRAME パッケージ | このブログの読者になる | 更新情報をチェックする

2015年11月12日


jQuery で、ページ内で F1 キー(HELP) を起動させないようにする / IFRAME 内も同時対応



デモページ

デモページ内の薄い灰色の部分は、IFRAME です。jQuery のセレクタで、本体のページと、IFRAME 内を同時に設定します。
<script>
$(function() {

// F1 キーで HELP を起動させないようにする
// ※ document のかわりに window でも動作するはずです(IFRAME内は window です)
// ※ $( "body" ) は不可です
	$( [document,$( "iframe" ).get(0).contentWindow] )
		// IE 用
		.on( "help", false )
		// IE 以外の一般処理用
		.on( "keydown", function(e){
			if ( e.keyCode == 0x70 ) {
				return false;
			}
		});

});

</script>

Firefox では F1 では何も起こりませんが、F1 キーを押せばイベントは発生します。

keyCode は仮想キーコードで、Windows API で定義されているものです。
F1 VK_F1 0x70
F2 VK_F2 0x71
F3 VK_F3 0x72
F4 VK_F4 0x73
F5 VK_F5 0x74
F6 VK_F6 0x75
F7 VK_F7 0x76
F8 VK_F8 0x77
F9 VK_F9 0x78
F10 VK_F10 0x79
F11 VK_F11 0x7A
F12 VK_F12 0x7B



タグ:jquery
posted by lightbox at 2015-11-12 03:18 | IFRAME パッケージ | このブログの読者になる | 更新情報をチェックする

2015年11月10日


FRAME の代替として使う IFRAME パッケージ



デモページ

IFRAME を FRAME に見立てて、JavaScript で、ブラウザ全体で表示できるようにコントロールしています。FRAME と違って、IFRAME は元々のウインドウ上の一つのコンテンツなので、IFRAME の上に jQuery のコンテンツを表示する事ができます。また、PHP としては、送信結果を IFRAME 内で表示するように送信できるので、元のコンテンツの書き換えが必要無くなります。

index.php
<?php
session_start();
$_SESSION["charset"] = "utf-8";
$_SESSION["iframe_id"] = "target";

header( "Content-Type: text/html; Charset={$_SESSION["charset"]}" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "x-ua-compatible: IE=11" );

// *************************************
// 画面
// *************************************
require_once("view.php");
?>


view.php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=<?= $_SESSION["charset"] ?>">
<title>PHPテンプレート</title>

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/jquery-ui.css">
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>

<link rel="stylesheet" href="css.php">

<link rel="stylesheet" href="iframe_css.php">
<script src="iframe_js.php"></script>

<style>
</style>
<script>
$(function() {


});

</script>
</head>
<body>
<div id="wrapper">
	<div id="head_unit">
		<form
			method="get"
			target="target_accept"
			action="accept_r.php">

			<input
				type="text" 
				name="tx1">

			<input
				type="button"
				value="リセット"
				style="background-color:white;"
				onclick="location.reload(true);">

			<input
				 type="submit"
				name="send"
				value="送信">

		</form>
	</div>
	<iframe
		src="accept_r.php"
		id="<?= $_SESSION["iframe_id"] ?>"
		name="target_accept"
		frameborder="0"
	></iframe>
</div>

</body>
</html>


view_iframe.php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=<?= $_SESSION["charset"] ?>">

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/jquery-ui.css">
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>

<link rel="stylesheet" href="css.php">

<style>
</style>
<script>
// jQuery 初期処理
$(function() {


});
</script>
</head>
<body>

<div>
<img src="cs.jpg" style="border: solid 1px #000000">
</div>

<pre>
<?= print_r($_GET,true) ?>
</pre>

</body>
</html>


iframe_js.php

iframe の主なコントールを行います。( 横幅は css で設定 )
<?php
session_start();
header( "Content-Type: text/javascript; Charset={$_SESSION["charset"]}" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
?>
// IFRAME フィット
function control_page_iframe(iframe_id) {
	var height = Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
	var head_height = $( "#head_unit" ).get(0).clientHeight;

	// -7 は、場合によっては調整が必要になるかもしれません
	$("#" + iframe_id ).css("height", (height - parseInt(head_height)-7) + "px");
}

// jQuery 初期処理
$(function() {

	var iframe_id = "<?= $_SESSION["iframe_id"] ?>";

	// IFRAME フィット用
	$(window).on("resize", function(){

		$("#" + iframe_id ).hide();
		control_page_iframe(iframe_id);
		$("#" + iframe_id ).show();

	});

	// 初期 IFRAME フィット
	control_page_iframe(iframe_id);

});


iframe_css.php
<?php
session_start();
header( "Content-Type: text/css; Charset={$_SESSION["charset"]}" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
?>
@charset <?= $_SESSION["charset"] ?>;

body {
	margin: 0;
}
#wrapper {
	background-color: #ffffff;
}
#head_unit {
	padding: 15px 0 10px 15px;
}
#<?= $_SESSION["iframe_id"] ?> {
	/* IFRAME の横調整は、ブラウザに任せます */
	width: 100%;
}


accept_r.php

本体の FORM から呼び出される(action 属性) PHP です。
<?php
session_start();
header( "Content-Type: text/html; Charset={$_SESSION["charset"]}" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "x-ua-compatible: IE=11" );

// *************************************
// 画面
// *************************************
require_once("view_iframe.php");
?>




タグ:PHP iframe
posted by lightbox at 2015-11-10 00:22 | IFRAME パッケージ | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり