2016年4月15日金曜日

(jQueryの学習)CSS:スクロール位置を操作する/scrollLeftメソッド/横スクロール位置を設定する
CSSのスクロール位置を操作する方法の4回目です。

本日は「4.要素の横スクロール位置(X座標)を設定する」を学びます。

4.要素の横スクロール位置(X座標)を設定する

4-1.scrollLeftメソッド【返却値(jQueryオブジェクト) = 要素.scrollLeft(数値)】で要素の横スクロール位置(X座標)を設定する

次に要素の横スクロール位置(X座標)を変更します。

以下のサンプルのラジオボタンを操作することで、横スクロールすることがわかります。

なお、ブラウザの横スクロールも可能だが、このサイトの体裁の都合で省略します。

サンプルソース

// HTML
横スクロール位置(X座標): 
0px<INPUT type="radio" name="y-scroll5-4-1" value="0" checked="checked">
50px<INPUT type="radio" name="y-scroll5-4-1" value="50">
100px<INPUT type="radio" name="y-scroll5-4-1" value="100">
150px<INPUT type="radio" name="y-scroll5-4-1" value="150">
200px<INPUT type="radio" name="y-scroll5-4-1" value="200"><br>
<div class="box-inline">
  <b>テストエリア3</b>
  <div class="box-css-test-area-3">・・・略・・・</div>
  <div>scrollTop: <span id="st">0</span></div>
</div>

// CSS
/* テストエリア3 */
.box-css-test-area-3 {overflow:scroll; background: #F5EEFF; border:5px solid #44f; margin: 5px; padding: 5px; max-height:100px; max-width:200px; float:right;}

// jQuery
$(function() {
  // ラジオボタンの変更イベントに応じて縦スクロール位置を変更する
  $("input[type=radio]").change(function(){
    // 【構文】返却値(jQueryオブジェクト) = 要素.scrollLeft(数値)
    $(".box-css-test-area-3").scrollLeft($("input:radio:checked").val());
  });
  // 変更位置を捉える処理
  $(".box-css-test-area-3").scroll(function(){
    $("span #st").text($(this).scrollLeft());
  });
});

実装例

指定した位置に縦スクロールします。

横スクロール位置(X座標): 0px 50px 100px 150px 200px
テストエリア3
【List】
1.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
2.xxxxx
3.xxxxx
4.xxxxx
5.xxxxx
6.xxxxx
7.xxxxx
8.xxxxx
scrollLeft: 0

縦スクロールと同様にブラウザに対する横スクロール位置も設定できますが、
ページの都合により割愛します。

いかがでしたか?
scrollTopメソッドやscrollLeftメソッドによる
スクロール位置の取得・設定方法が分かったと思います。

それでは、また。

2016年4月11日月曜日

(jQueryの学習)CSS:スクロール位置を操作する/scrollLeftメソッド/横スクロール位置を取得する
CSSのスクロール位置を操作する方法の3回目です。

本日は「3.要素の横スクロール位置(X座標)を取得する」を学びます。

3.要素の横スクロール位置(X座標)を取得する

3-1.scrollLeftメソッド【返却値(数値) = 要素.scrollLeft( )】で1つの要素の横スクロール位置(X座標)を取得する
要素の横スクロール位置(X座標)を取得するためにはscrollLeftメソッドを利用します。

スクロールバーを左右に動かしたときの対象要素に対する横位置(X座標)が取得できます。

なお、ブラウザの横スクロールも可能だが、このサイトの体裁の都合で省略します。
サンプルソース
// HTML
<div class="box-inline">
  <b>テストエリア3</b>
  <div class="box-css-test-area-3">・・・略・・・</div>
  <div>scrollLeft: <span id="st">0</span></div>
</div>

// CSS
/* テストエリア3 */
.box-css-test-area-3 {overflow:scroll; background: #F5EEFF; border:5px solid #44f; margin: 5px; padding: 5px; max-height:100px; max-width:200px; float:right;}

// jQuery
$(function() {
  // サンプル:「テストエリア3」の横スクロール位置(X座標)を取得する
  $(".box-css-test-area-3").scroll(function(){  // スクロールイベントを捕捉
    // 【構文】返却値(数値) = 要素.scrollLeft()
    var st = $(this).scrollLeft();
    // スクロール位置をセット
    $("span #st").text(st);
  });
});
実装例
要素の横スクロール位置(X座標)を取得します。

テストエリア3
【List】
1.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
2.xxxxx
3.xxxxx
4.xxxxx
5.xxxxx
6.xxxxx
7.xxxxx
8.xxxxx
scrollLeft: 0

縦スクロールと同様にブラウザに対する横スクロール位置も取得できますが、
ページの都合により割愛します。

いかがでしたか?
次回は「4.要素の横スクロール位置(X座標)を設定する」を学びます。

それでは、また。

2016年4月8日金曜日

(jQueryの学習)CSS:スクロール位置を操作する/scrollTopメソッド/縦スクロール位置を設定する(その2)
引き続き、縦スクロール位置を変更する方法を学びます。

次はブラウザに対する縦スクロール位置を変更します。

2-2.scrollTopメソッド【返却値(jQueryオブジェクト) = 要素.scrollTop(数値)】でブラウザの縦スクロール位置(Y座標)を設定する
1-1.では要素に対する縦スクロール位置(Y座標)を設定しましたが、
1-2.ではブラウザ(window)の縦スクロール位置(Y座標)を設定します。
サンプルソース
// HTML
縦スクロール位置(Y座標): 
ページ最上部へ<INPUT type="radio" name="y-scroll5-2-2" value="0">
1/3ページへ<INPUT type="radio" name="y-scroll5-2-2" value="0.3333333">
1/2ページへ<INPUT type="radio" name="y-scroll5-2-2" value="0.5">
2/3ページへ<INPUT type="radio" name="y-scroll5-2-2" value="0.6666666">
ページ最下部へ<INPUT type="radio" name="y-scroll5-2-2" value="1">

// jQuery
$(function() {
  // ラジオボタンの変更イベントに応じて縦スクロール位置を変更する
  $("input[type=radio]").change(function(){
    var st = $("body").height() * $("input:radio:checked").val();
    // 【構文】返却値(jQueryオブジェクト) = 要素.scrollTop(数値)
    $(window).scrollTop(st);
  });
});
実装例
ブラウザを指定した位置に縦スクロールします。

縦スクロール位置(Y座標): ページ最上部へ 1/3ページへ 1/2ページへ 2/3ページへ ページ最下部へ

いかがでしたか?
次回は「3.要素の横スクロール位置(X座標)を取得する」を学びます。

それでは、また。

2016年4月4日月曜日

(jQueryの学習)CSS:スクロール位置を操作する/scrollTopメソッド/縦スクロール位置を設定する(その1)
CSSのスクロール位置を操作する方法の2回目です。

本日は「2.要素の縦スクロール位置(Y座標)を設定する」を学びます。

まずは要素に対する縦スクロール位置を変更します。

2.要素の縦スクロール位置(Y座標)を設定する

2-1.scrollTopメソッド【返却値(jQueryオブジェクト) = 要素.scrollTop(数値)】で要素の縦スクロール位置(Y座標)を設定する
次に要素の縦スクロール位置(Y座標)を変更します。

以下のサンプルのラジオボタンを操作することで、縦スクロールすることがわかります。
サンプルソース
// HTML
縦スクロール位置(Y座標): 
0px<INPUT type="radio" name="y-scroll5-2-1" value="0" checked="checked">
20px<INPUT type="radio" name="y-scroll5-2-1" value="20">
40px<INPUT type="radio" name="y-scroll5-2-1" value="40">
60px<INPUT type="radio" name="y-scroll5-2-1" value="60"><br>
<div class="box-inline">
  <b>テストエリア3</b>
  <div class="box-css-test-area-3">・・・略・・・</div>
  <div>scrollTop: <span id="st">0</span></div>
</div>

// CSS
/* テストエリア3 */
.box-css-test-area-3 {overflow:scroll; background: #F5EEFF; border:5px solid #44f; margin: 5px; padding: 5px; max-height:100px; max-width:200px; float:right;}

// jQuery
$(function() {
  // ラジオボタンの変更イベントに応じて縦スクロール位置を変更する
  $("input[type=radio]").change(function(){
    // 【構文】返却値(jQueryオブジェクト) = 要素.scrollTop(数値)
    $(".box-css-test-area-3").scrollTop($("input:radio:checked").val());
  });
  // 変更位置を捉える処理
  $(".box-css-test-area-3").scroll(function(){
    $("span #st").text($(this).scrollTop());
  });
});
実装例
指定した位置に縦スクロールします。

縦スクロール位置(Y座標): 0px 20px 40px 60px
テストエリア3
【List】
1.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
2.xxxxx
3.xxxxx
4.xxxxx
5.xxxxx
6.xxxxx
7.xxxxx
8.xxxxx
scrollTop: 0

次回はブラウザに対する縦スクロール位置を変更する方法を学びます。

それでは、また。

2016年4月1日金曜日

(jQueryの学習)CSS:スクロール位置を操作する/scrollTopメソッド/縦スクロール位置を取得する(その2)
引き続き、縦スクロール位置を取得する方法を学びます。

次はブラウザに対する縦スクロール位置を取得します。

1-2.scrollTopメソッド【返却値(数値) = 要素.scrollTop( )】でブラウザの縦スクロール位置(Y座標)を取得する
1-1.では要素に対する縦スクロール位置(Y座標)を取得しましたが、
1-2.ではブラウザ(window)の縦スクロール位置(Y座標)を取得します。
サンプルソース
// HTML
<div class="box-inline">
  <b>テストエリア3</b>
  <div class="box-css-test-area-3">・・・略・・・</div>
  <div>scrollTop: <span id="st">0</span></div>
</div>

// CSS
/* テストエリア3 */
.box-css-test-area-3 {overflow:scroll; background: #F5EEFF; border:5px solid #44f; margin: 5px; padding: 5px; max-height:100px; max-width:200px; float:right;}

// jQuery
$(function() {
  // サンプル:「ブラウザ」の縦スクロール位置(Y座標)を取得する
  $(window).scroll(function(){  // スクロールイベントを捕捉
    // 【構文】返却値(数値) = 要素.scrollTop()
    var st = $(window).scrollTop();
    // スクロール位置をセット
    $("span #st").text(st);
  });
});
実装例
要素の縦スクロール位置(Y座標)を取得します。

テストエリア3
【List】
1.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
2.xxxxx
3.xxxxx
4.xxxxx
5.xxxxx
6.xxxxx
7.xxxxx
8.xxxxx
scrollTop: 0

いかがでしたか?
次回は「2.要素の縦スクロール位置(Y座標)を設定する」を学びます。

それでは、また。

2016年3月28日月曜日

(jQueryの学習)CSS:スクロール位置を操作する/scrollTopメソッド/縦スクロール位置を取得する(その1)
今回からはCSSのスクロール位置を操作する方法を学びます。
以下、4つのカテゴリに分けて見ていきます。

  1. 要素の縦スクロール位置(Y座標)を取得する
  2. 要素の縦スクロール位置(Y座標)を設定する
  3. 要素の横スクロール位置(X座標)を取得する
  4. 要素の横スクロール位置(X座標)を設定する

ここではjQueryにて要素に対する、スクロール位置の操作方法を整理します。

スクロール位置を操作するには、
縦スクロール(Y座標)に対しては「scrollTopメソッド」、
横スクロール(X座標)に対しては「scrollLeftメソッド」を利用する必要があります。
メソッドの種類は以下の通り。

■要素の縦スクロール(Y座標)を取得する
 ・返却値(数値)=要素.scrollTop() ※ver1.2.6~
■要素の縦スクロール(Y座標)を設定する
 ・返却値(jQueryオブジェクト)=要素.scrollTop(数値) ※ver1.2.6~
■要素の横スクロール(X座標)を取得する
 ・返却値(数値)=要素.scrollLeft() ※ver1.2.6~
■要素の横スクロール(X座標)を設定する
 ・返却値(jQueryオブジェクト)=要素.scrollLeft(数値) ※ver1.2.6~

これらのメソッドを使うことで、要素のいろいろなスクロール位置が取得ができるようになります。


それでは本日は「1.要素の縦スクロール位置(Y座標)を取得する」を学びます。

まずは要素に対する縦スクロール位置を取得します。

1.要素の縦スクロール位置(Y座標)を取得する

1-1.scrollTopメソッド【返却値(数値) = 要素.scrollTop( )】で1つの要素の縦スクロール位置(Y座標)を取得する
要素の縦スクロール位置(Y座標)を取得するためにはscrollTopメソッドを利用します。

スクロールバーを上下に動かしたときの対象要素に対する縦位置(Y座標)が取得できます。
サンプルソース
// HTML
<div class="box-inline">
  <b>テストエリア3</b>
  <div class="box-css-test-area-3">・・・略・・・</div>
  <div>scrollTop: <span id="st">0</span></div>
</div>

// CSS
/* テストエリア3 */
.box-css-test-area-3 {overflow:scroll; background: #F5EEFF; border:5px solid #44f; margin: 5px; padding: 5px; max-height:100px; max-width:200px; float:right;}

// jQuery
$(function() {
  // サンプル:「テストエリア3」の縦スクロール位置(Y座標)を取得する
  $(".box-css-test-area-3").scroll(function(){  // スクロールイベントを捕捉
    // 【構文】返却値(数値) = 要素.scrollTop()
    var st = $(this).scrollTop();
    // スクロール位置をセット
    $("span #st").text(st);
  });
});
実装例
要素の縦スクロール位置(Y座標)を取得します。

テストエリア3
【List】
1.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
2.xxxxx
3.xxxxx
4.xxxxx
5.xxxxx
6.xxxxx
7.xxxxx
8.xxxxx
scrollTop: 0

次回はブラウザに対する縦スクロール位置を取得する方法を学びます。

それでは、また。

2016年3月25日金曜日

(jQueryの学習)CSS:相対位置を操作する/positionメソッド/親要素からの要素の相対位置を取得する(その3)
前回の続きで、
「複数要素」に対する親要素からの相対位置を取得する方法を考えます。

3-3.positionメソッドとmapメソッドで複数要素の親要素からの相対位置を取得する(できるか?)
複数要素の親要素からの相対位置は取得できませんでしたが、
heightメソッドやwidthメソッドと同じように「mapメソッド【返却値(jQueryオブジェクト)=要素.map(function)】」を利用することで、
複数要素の左上からの相対位置をまとめて取得できるか?試してみます。

実際に動かしてみると、以下のようになった。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の親要素からの相対位置が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
  <div class="box"><b>テストエリア2</b><div class="box-css-test-area-2">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}
/* テストエリア2 */
.box-css-test-area-2 {background:#F5EEFF; border:5px solid #88f; padding:20px; margin:10px; height:30px; width:450px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // サンプル:「テストエリア1と2」の左上からの相対位置を取得する
    var of = $(".box-css-test-area-1, .box-css-test-area-2").map(getPosition).get();
    // ↑:getPositionで各要素の左上からの相対位置を取得し、その結果をオブジェクトに格納する
    for (var key in of) {
      // ループして各要素の相対位置を取り出す
      alert("左から[" + of[key].left + "] 上から[" + of[key].top + "]");
    }
  });
});

// JavaScript
function getPosition(index, el){
    // 【構文】返却値(objectオブジェクト) = 要素.position()
  return $(el).width();
}
実装例
テストエリア1とテストエリア2に対する親要素からの相対位置を取得します。

要素:テストエリア1とテストエリア2

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

mapメソッドを利用することで
「複数要素」に対する親要素からの相対位置が
まとめて取得できることがわかりました。

いかがでしたか?
offsetメソッドやpositionメソッドによる
相対位置の取得・設定方法が分かったと思います。

それでは、また。

2016年3月21日月曜日

(jQueryの学習)CSS:相対位置を操作する/positionメソッド/親要素からの要素の相対位置を取得する(その2)
引き続き、親要素からの要素の相対位置を取得する方法を学びます。

次は「複数要素」に対する親要素からの相対位置を取得します。

3-2.positionメソッド【返却値(objectオブジェクト) = 要素.position( )】で複数要素の相対位置を取得する(できるか?)
3-1.では1つの要素に対する親要素からの相対位置を取得しましたが、
複数の要素ではどうなるのか?試してみます。

以下、サンプルの通り、
「テストエリア1」と「テストエリア2」を要素としてpositionメソッドを実行したところ、
「テストエリア1」の幅のみ取得できたことがわかります。
※3-1.で確認

positionメソッドは複数要素には対応していないことがわかります。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の親要素からの相対位置が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
  <div class="box"><b>テストエリア2</b><div class="box-css-test-area-2">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}
/* テストエリア2 */
.box-css-test-area-2 {background:#F5EEFF; border:5px solid #88f; padding:20px; margin:10px; height:30px; width:450px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(objectオブジェクト) = 要素.position()
    //   サンプル:「テストエリア1と2」の左上からの相対位置を取得する
    // 左からの相対位置
    alert("[" + $(".box-css-test-area-1, .box-css-test-area-2").position().left + "]");
  });
});
実装例
テストエリア1とテストエリア2に対する親要素からの相対位置を取得します。

要素:テストエリア1とテストエリア2

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

offsetメソッドと同様に、
前回と同じ方法では「複数要素」に対する
親要素からの相対位置は取得できないことがわかりました。
次回は違う方法で考えます。

それでは、また。

2016年3月18日金曜日

(jQueryの学習)CSS:相対位置を操作する/positionメソッド/親要素からの要素の相対位置を取得する(その1)
CSSの要素の相対位置を操作する方法の3回目です。

本日は「3.親要素からの要素の相対位置を取得する」を学びます。

まずは「単一要素」に対する親要素からの相対位置を取得します。

3.親要素からの要素の相対位置を取得する

3-1.positionメソッド【返却値(objectオブジェクト) = 要素.position()】で親要素からの要素の相対位置を取得する
次はpositionメソッドを使い、親要素からの要素の相対位置を取得します。

サンプルの「テストエリア1」と「テストエリア2」にとっての親要素とは、
テストエリア1と書かれてる文言がある枠のさらに外側の枠の部分です。

なお、対象要素の位置の基準点は、border外側の左上の角になり、marginは含みません。
(わかりにくいですが、「テストエリア1」や「テストエリア2」の「テ」文言のすぐ下あたりになります)

注意:このメソッドは設定では使用できません。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、親要素からの要素の相対位置が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(objectオブジェクト) = 要素.offset()
    //   サンプル:「テストエリア1」の左上からの相対位置を取得する
    // 左からの相対位置
    alert("[" + $(".box-css-test-area-1").position().left + "]");
    // 上からの相対位置
    alert("[" + $(".box-css-test-area-1").position().top + "]");
  });
});
実装例
指定した要素に対する親要素からの相対位置を取得します。

要素:

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

次回は「複数要素」に対する親要素からの相対位置を取得する方法を学びます。

それでは、また。

2016年3月14日月曜日

(jQueryの学習)CSS:相対位置を操作する/offsetメソッド/左上からの要素の相対位置を設定する(その2)
引き続き、左上からの要素の相対位置を設定する方法を学びます。

次は「複数要素」に対する左上からの相対位置を設定します。

2-2.offsetメソッド【返却値(jQueryオブジェクト) = 要素.offset(function)】で複数要素の左上からの相対位置を設定する
次に複数要素に対して、左上からの相対位置をまとめて変更します。

2-1.ではobjectオブジェクトに格納しましたが、今回は引数にfunctionを指定します。
引数に設定するFunctionの構文
function 任意のfunction名(インデックス番号, 現在の位置(objectオブジェクト)) {
  // ↓インデックスや現在の位置の引数が利用できる
  ・・・任意の処理・・・;
  // ↓最終的に移動したい位置をobjectオブジェクトに格納して返却する
  return 位置(objectオブジェクト);
}
実際に動かしてみると、以下のようになります。
サンプルソース
// HTML
<input type="button" value="テストエリア1と2を右へ20px移動する"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
  <div class="box"><b>テストエリア2</b><div class="box-css-test-area-2">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}
/* テストエリア2 */
.box-css-test-area-2 {background:#F5EEFF; border:5px solid #88f; padding:20px; margin:10px; height:30px; width:450px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(jQueryオブジェクト) = 要素.offset(object)
    //   サンプル:それぞれのエリアを左から「テストエリア1:10px」、「テストエリア2:20px」移動する
    $(".box-css-test-area-1, .box-css-test-area-2").offset(setOffset);
    // ↑:setOffsetで各要素の相対位置を設定する
  });
});

// JavaScript
function setOffset(index, ptObj){
  var newObj = {};
  newObj.left = ptObj.left + 10 * (index + 1);
  return newObj;
}
実装例
テストエリア1とテストエリア2を同時に移動します。



テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

ここでは引数のfunctionを利用する方法で実現しましたが、
前回のやり方でも可能です。

いかがでしたか?
次回は「3.親要素からの要素の相対位置を取得する」を学びます。

それでは、また。

2016年3月11日金曜日

(jQueryの学習)CSS:相対位置を操作する/offsetメソッド/左上からの要素の相対位置を設定する(その1)
CSSの要素の相対位置を操作する方法の2回目です。

本日は「2.左上からの要素の相対位置を設定する」を学びます。

2.左上からの要素の相対位置を設定する

2-1.offsetメソッド【返却値(jQueryオブジェクト) = 要素.offset(object)】で要素の左上からの相対位置を設定する
次に要素の左上からの相対位置を変更します。

「テストエリア」の位置を変えてみます。

値はobjectオブジェクトに格納する必要があります。
なお、「50」と数値型で指定することができ、
さらに算術複合代入子(+=、-=)を使用した相対的な指定も可能。
サンプルソース
// HTML
<input type="button" value="指定したテストエリアを右へ50px移動する"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(jQueryオブジェクト) = 要素.offset(object)
    //   サンプル:「テストエリア1」の左からの相対位置を設定する
    var offsetObj = {};         // objectオブジェクト宣言
    offsetObj.left = $(".box-css-test-area-1").offset().left; // 変更前の位置をobjectに設定
    offsetObj.left = 50;  // ←絶対値指定・・・右から50pxの位置にする
    offsetObj.left += 50; // ←相対値指定・・・右へ50px移動する
    $(".box-css-test-area-1").offset(offsetObj);
  });
});
実装例
指定した要素を移動します。

要素:


テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

次回は「複数要素」に対する左上からの相対位置を設定する方法を学びます。

それでは、また。

2016年3月7日月曜日

(jQueryの学習)CSS:相対位置を操作する/offsetメソッド/左上からの要素の相対位置を取得する(その3)
前回の続きで、
「複数要素」に対する左上からの相対位置を取得する方法を考えます。

1-3.offsetメソッドとmapメソッドで複数要素の幅を取得する(できるか?)
複数要素の左上からの相対位置は取得できませんでしたが、
heightメソッドやwidthメソッドと同じように「mapメソッド【返却値(jQueryオブジェクト)=要素.map(function)】」を利用することで、
複数要素の左上からの相対位置をまとめて取得できるか?試してみます。

実際に動かしてみると、以下のようになった。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の左上からの相対位置が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
  <div class="box"><b>テストエリア2</b><div class="box-css-test-area-2">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}
/* テストエリア2 */
.box-css-test-area-2 {background:#F5EEFF; border:5px solid #88f; padding:20px; margin:10px; height:30px; width:450px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // サンプル:「テストエリア1と2」の左上からの相対位置を取得する
    var of = $(".box-css-test-area-1, .box-css-test-area-2").map(getOffset).get();
    // ↑:getOffsetで各要素の左上からの相対位置を取得し、その結果をオブジェクトに格納する
    for (var key in of) {
      // ループして各要素の相対位置を取り出す
      alert("左から[" + of[key].left + "] 上から[" + of[key].top + "]");
    }
  });
});

// JavaScript
function getOffset(index, el){
    // 【構文】返却値(objectオブジェクト) = 要素.offset()
  return $(el).width();
}
実装例
テストエリア1とテストエリア2の左上からの相対位置を取得します。

要素:テストエリア1とテストエリア2

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

mapメソッドを利用することで
「複数要素」に対する左上からの相対位置が
まとめて取得できることがわかりました。

いかがでしたか?
次回は「2.左上からの要素の相対位置を設定する」を学びます。

それでは、また。

2016年3月4日金曜日

(jQueryの学習)CSS:相対位置を操作する/offsetメソッド/左上からの要素の相対位置を取得する(その2)
引き続き、左上からの要素の相対位置を取得する方法を学びます。

次は「複数要素」に対する左上からの相対位置を取得します。

1-2.offsetメソッド【返却値(objectオブジェクト) = 要素.offset( )】で複数要素の相対位置を取得する(できるか?)
1-1.では1つの要素に対する左上からの相対位置を取得しましたが、
複数の要素ではどうなるのか?試してみます。

以下、サンプルの通り、
「テストエリア1」と「テストエリア2」を要素としてoffsetメソッドを実行したところ、
「テストエリア1」の幅のみ取得できたことがわかります。
※1-1.で確認

offsetメソッドは複数要素には対応していないことがわかります。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の左上からの相対位置が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
  <div class="box"><b>テストエリア2</b><div class="box-css-test-area-2">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}
/* テストエリア2 */
.box-css-test-area-2 {background:#F5EEFF; border:5px solid #88f; padding:20px; margin:10px; height:30px; width:450px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(objectオブジェクト) = 要素.offset()
    //   サンプル:「テストエリア1と2」の左上からの相対位置を取得する
    // 左からの相対位置
    alert("[" + $(".box-css-test-area-1, .box-css-test-area-2").offset().left + "]");
  });
});
実装例
テストエリア1とテストエリア2の左上からの相対位置を取得します。

要素:テストエリア1とテストエリア2

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

高さや幅と同様に、
前回と同じ方法では「複数要素」に対する
左上からの相対位置は取得できないことがわかりました。
次回は違う方法で考えます。

それでは、また。

2016年2月29日月曜日

(jQueryの学習)CSS:相対位置を操作する/offsetメソッド/左上からの要素の相対位置を取得する(その1)
今回からはCSSの相対位置を操作する方法を学びます。
以下、3つのカテゴリに分けて見ていきます。

  1. 左上からの要素の相対位置を取得する
  2. 左上からの要素の相対位置を設定する
  3. 親要素からの要素の相対位置を取得する

ここではjQueryにてCSSで定義された要素に対して、
左上からの相対位置の操作方法を整理します。

相対位置を操作するには、
用途に応じて「offsetメソッド」、「positionメソッド」を利用する必要があります。
メソッドの種類は以下の通り。

■左上からの相対位置を取得する
 ・返却値(objectオブジェクト)=要素.offset() ※ver1.2~
■左上からの相対位置を設定する
 ・返却値(jQueryオブジェクト)=要素.offset(object) ※ver1.4~
 ・返却値(jQueryオブジェクト)=要素.offset(function) ※ver1.4~
■親要素からの相対位置を取得する
 ・返却値(objectオブジェクト)=要素.position() ※ver1.2~

これらのメソッドを使うことで、要素のいろいろな相対位置が取得ができるようになります。


それでは本日は「1.左上からの要素の相対位置を取得する」を学びます。

まずは「単一要素」に対する左上からの相対位置を取得します。

1.左上からの要素の相対位置を取得する

1-1.offsetメソッド【返却値(objectオブジェクト) = 要素.offset( )】で1つの要素の左上からの相対位置を取得する
左上からの要素の相対位置を取得するためにはoffsetメソッドを利用します。

閲覧中のWebページ上、対象の要素がどの位置にあるのかが取得できます。

なお、対象要素の位置の基準点は、border外側の左上の角になり、marginは含みません。
(わかりにくいですが、「テストエリア1」や「テストエリア2」の「テ」文言のすぐ下あたりになります)
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、左上からの要素の相対位置が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(objectオブジェクト) = 要素.offset()
    //   サンプル:「テストエリア1」の左上からの相対位置を取得する
    // 左からの相対位置
    alert("[" + $(".box-css-test-area-1").offset().left + "]");
    // 上からの相対位置
    alert("[" + $(".box-css-test-area-1").offset().top + "]");
  });
});
実装例
指定した要素に対する左上からの相対位置を取得します。

要素:

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

次回は「複数要素」に対する左上からの相対位置を取得する方法を学びます。

それでは、また。

2016年2月26日金曜日

(jQueryの学習)CSS:幅を操作する/outerWidthメソッド/borderの外側の幅を取得する
CSSの幅を操作する方法の3回目です。

本日は「3.borderの外側の幅(border、paddingを含む)を取得する」を学びます。

3.borderの外側の幅(border、paddingを含む)を取得する

3-1.outerWidthメソッド【返却値(数値) = 要素.outerWidth([True])】でborderの外側の幅を取得する
次にouterWidthを取得します。

outerWidthとは「borderの外側の幅」を表します。
つまり、「左右のborder+左右のpadding+width=outerWidth」です。

なお、引数に「True」を設定することで、
「marginを含んだ幅(エリア全体の幅)」を取得することもできます。
つまり、「左右のmargin+左右のborder+左右のpadding+width=outerWidth」です。

利用方法はwidthメソッドと同様。

注意:このメソッドは設定では使用できません。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の幅が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(数値) = 要素.outerWidth([True])
    //   サンプル:「テストエリア1」のborderの外側の幅を取得する
    alert("[" + $(".box-css-test-area-1").outerWidth() + "]");     // marginを含まない
    alert("[" + $(".box-css-test-area-1").outerWidth(True) + "]"); // marginを含む
  });
});
実装例
指定した要素に設定されているborderの外側の幅を取得します。

要素:  marginも含む:

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

いかがでしたか?
CSSの幅を操作する方法や、
width、innerWidth、outerWidthの違いが分かったと思います。

それでは、また。

2016年2月22日月曜日

(jQueryの学習)CSS:幅を操作する/innerWidthメソッド/borderの内側の幅を取得する
CSSの幅を操作する方法の2回目です。

本日は「2.borderの内側の幅(borderは除き、paddingは含む)を取得する」を学びます。

2.borderの内側の幅(borderは除き、paddingは含む)を取得する

2-1.innerWidthメソッド【返却値(数値) = 要素.innerWidth( )】でborderの内側の幅を取得する
次にinnerWidthを取得します。

innerWidthとは「borderの内側の幅」を表します。
つまり、「左右のpadding+width=innerWidth」です。

利用方法はwidthメソッドと同様。

注意:このメソッドは設定では使用できません。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の幅が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(数値) = 要素.innerWidth()
    //   サンプル:「テストエリア1」のborderの内側の幅を取得する
    alert("[" + $(".box-css-test-area-1").innerWidth() + "]");
  });
});
実装例
指定した要素に設定されているborderの内側の幅を取得します。

要素:

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

いかがでしたか?
次回は「3.borderの外側の幅(border、paddingを含む)を取得する」を学びます。

それでは、また。

2016年2月19日金曜日

(jQueryの学習)CSS:幅を操作する/widthメソッド/要素の幅を設定する
引き続き、要素の幅を取得/設定する方法を学びます。

今回は、要素の幅を設定します。

1-4.widthメソッド【返却値(jQueryオブジェクト) = 要素.width(値)】で要素の幅を設定する
次に要素の幅を変更します。

「テストエリア」の幅を変えてみます。

値は「50」と数値型で指定することもできます。
また、算術複合代入子(+=、-=)を使用した相対的な指定も可能になっています。
サンプルソース
// HTML
<input type="button" value="指定したテストエリアの幅を50px大きくする"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(jQueryオブジェクト) = 要素.width(値)
    //   サンプル:「テストエリア1」の幅を設定する
    $(".box-css-test-area-1").width(50);     // ←絶対値指定(幅を50pxにする)
    $(".box-css-test-area-1").width("+=50"); // ←相対値指定(今の幅から50px広くする)
  });
});
実装例
指定した要素に設定されている幅を取得します。

要素:


テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

いかがでしたか?
次回は「2.borderの内側の幅(borderは除き、paddingは含む)を取得する」を学びます。

それでは、また。

2016年2月15日月曜日

(jQueryの学習)CSS:幅を操作する/widthメソッド/要素の幅を取得する(その3)
前回の続きで、
「複数要素」の幅を取得する方法を考えます。

1-3.widthメソッドとmapメソッドで複数要素の幅を取得する
複数の要素の幅は取得できなかったが、
調べてみると「mapメソッド【返却値(jQueryオブジェクト)=要素.map(function)】」を利用することで、
複数要素の幅をまとめて取得できることがわかった。

mapメソッドには複数の使い方があり、
今回は「引数に設定したfunctionによって指定した要素が持つ情報を取り出す」ために利用します。

引数に設定するFunctionの構文
function 任意のfunction名(インデックス番号, セレクタの要素) {
  // ↓インデックスやセレクタの要素等の引数が利用できる
  ・・・任意の処理・・・;
  // ↓取り出した情報をjQueryオブジェクトで返却する
  return jQueryオブジェクト;
}
実際に動かしてみると、以下のようになります。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の幅が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
  <div class="box"><b>テストエリア2</b><div class="box-css-test-area-2">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}
/* テストエリア2 */
.box-css-test-area-2 {background:#F5EEFF; border:5px solid #88f; padding:20px; margin:10px; height:30px; width:450px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    //   サンプル:「テストエリア1と2」の幅を取得する
    alert("[" + $(".box-css-test-area-1, .box-css-test-area-2").map(getWidth).get() + "]");
    // ↑:getWidthで各要素の幅を取得し、その結果をオブジェクトに格納する
  });
});

// JavaScript
function getWidth(index, el){
  // 【構文】返却値(数値) = 要素.width()
  return $(el).width();
}
実装例
指定した要素に設定されている幅を取得します。

要素:テストエリア1とテストエリア2

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

mapメソッドを利用することで
複数の要素の幅がまとめて取得できることがわかりました。

次回は要素の幅を設定する方法を学びます。

それでは、また。

2016年2月12日金曜日

(jQueryの学習)CSS:幅を操作する/widthメソッド/要素の幅を取得する(その2)
引き続き、要素の幅を取得/設定する方法を学びます。

次は「複数要素」の幅を取得します。

1-2.widthメソッド【返却値(数値) = 要素.width( )】で複数要素の幅を取得する(できるか?)
1-1.では1つの要素の幅を取得しましたが、
複数の要素の幅は取得できないのか?を試してみます。

以下、サンプルの通り、
「テストエリア1」と「テストエリア2」を要素としてwidthメソッドを実行したところ、
文字列を返却するcssメソッドと同様に、1つ目の「テストエリア1」の幅のみ取得できました。

widthメソッドは複数要素には対応していないことがわかります。
以下のサンプルを動かしてみると、
CSSで定義した通りの値(例:テストエリア1なら「40」)が返却されることがわかります。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の幅が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
  <div class="box"><b>テストエリア2</b><div class="box-css-test-area-2">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}
/* テストエリア2 */
.box-css-test-area-2 {background:#F5EEFF; border:5px solid #88f; padding:20px; margin:10px; height:30px; width:450px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(数値) = 要素.width()
    //   サンプル:「テストエリア1と2」の幅を取得する
    alert("[" + $(".box-css-test-area-1, .box-css-test-area-2").width() + "]");
  });
});
実装例
指定した要素に設定されている幅を取得します。

要素:テストエリア1とテストエリア2

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

幅についても同様に、
前回と同じ方法では複数の要素の幅は取得できないことがわかりました。
次回は違う方法で考えます。

それでは、また。

2016年2月8日月曜日

(jQueryの学習)CSS:幅を操作する/widthメソッド/要素の幅を取得する(その1)
今回からはCSSの幅を操作する方法を学びます。
以下、3つのカテゴリに分けて見ていきます。

基本的には「高さ」と同じ内容になっています。
inner***やouter***の概念がわかっていれば、特に問題は無いと思います。

  1. 要素の幅を取得/設定する
  2. borderの内側の幅(borderは除き、paddingは含む)を取得する
  3. borderの外側の幅(border、paddingを含む)を取得する

ここではjQueryにてCSSで定義された要素の幅の操作方法を整理します。

要素の幅を操作するには、
用途に応じて「widthメソッド」、「innerWidthメソッド」、「outerWidthメソッド」を利用する必要があります。
メソッドの種類は以下の通り。

■要素の幅を取得する
 ・返却値(数値)=要素.width(プロパティ名) ※ver1.0~
■要素の幅を設定する
 ・返却値(jQueryオブジェクト)=要素.width(値) ※ver1.0~
 ・返却値(jQueryオブジェクト)=要素.width(function) ※ver1.4.1~
■borderの内側の幅を取得する
 ・返却値(数値)=要素.innerWidth() ※ver1.2.6~
■borderの外側の幅を取得する
 ・返却値(数値)=要素.outerWidth() ※ver1.2.6~

これらのメソッドを使うことで、要素のいろいろな幅が取得ができるようになります。


それでは本日は「1.要素の幅を取得/設定する」を学びます。

まずは「単一要素」の幅を取得します。

1.要素の幅を取得/設定する

1-1.widthメソッド【返却値(数値) = 要素.width( )】で1つの要素の幅を取得する
要素の幅を取得するためにはwidthメソッドを利用します。
返却値は「数値」のため、計算等の二次利用をするにはちょうど良い。

以下のサンプルを動かしてみると、
CSSで定義した通りの値(例:テストエリア1なら「40」)が返却されることがわかります。

ちなみに「幅(width)」とは、
枠外余白(margin)、境界線(border)、枠内余白(padding)のさらに内側の領域の幅を表します。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の幅が表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(数値) = 要素.width()
    //   サンプル:「テストエリア1」の幅を取得する
    alert("[" + $(".box-css-test-area-1").width() + "]");
  });
});
実装例
指定した要素に設定されている幅を取得します。

要素:

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

次回は複数の要素の幅を取得する方法を学びます。

それでは、また。

2016年2月5日金曜日

(jQueryの学習)CSS:高さを操作する/outerHeightメソッド/borderの外側の高さを取得する
CSSの高さを操作する方法の3回目です。

本日は「3.borderの外側の高さ(border、paddingを含む)を取得する」を学びます。

3.borderの外側の高さ(border、paddingを含む)を取得する

3-1.outerHeightメソッド【返却値(数値) = 要素.outerHeight([True])】でborderの外側の高さを取得する
次にouterHeightを取得します。

outerHeightとは「borderの外側の高さ」を表します。
つまり、「上下のborder+上下のpadding+height=outerHeight」です。

なお、引数に「True」を設定することで、
「marginを含んだ高さ(エリア全体の高さ)」を取得することもできます。
つまり、「上下のmargin+上下のborder+上下のpadding+height=outerHeight」です。

利用方法はheightメソッドと同様。

注意:このメソッドは設定では使用できません。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の高さが表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(数値) = 要素.outerHeight([True])
    //   サンプル:「テストエリア1」のborderの外側の高さを取得する
    alert("[" + $(".box-css-test-area-1").outerHeight() + "]");     // marginを含まない
    alert("[" + $(".box-css-test-area-1").outerHeight(True) + "]"); // marginを含む
  });
});
実装例
指定した要素に設定されているborderの外側の高さを取得します。

要素:  marginも含む:

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

いかがでしたか?
CSSの高さを操作する方法や、
height、innerHeight、outerHeightの違いが分かったと思います。

それでは、また。

2016年2月1日月曜日

(jQueryの学習)CSS:高さを操作する/innerHeightメソッド/borderの内側の高さを取得する
CSSの高さを操作する方法の2回目です。

本日は「2.borderの内側の高さ(borderは除き、paddingは含む)を取得する」を学びます。

2.borderの内側の高さ(borderは除き、paddingは含む)を取得する

2-1.innerHeightメソッド【返却値(数値) = 要素.innerHeight( )】でborderの内側の高さを取得する
次にinnerHeightを取得します。

innerHeightとは「borderの内側の高さ」を表します。
つまり、「上下のpadding+height=innerHeight」です。

利用方法はheightメソッドと同様。

注意:このメソッドは設定では使用できません。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の高さが表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(数値) = 要素.innerHeight()
    //   サンプル:「テストエリア1」のborderの内側の高さを取得する
    alert("[" + $(".box-css-test-area-1").innerHeight() + "]");
  });
});
実装例
指定した要素に設定されているborderの内側の高さを取得します。

要素:

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

いかがでしたか?
次回は「3.borderの外側の高さ(border、paddingを含む)を取得する」を学びます。

それでは、また。

2016年1月29日金曜日

(jQueryの学習)CSS:高さを操作する/heightメソッド/要素の高さを設定する
引き続き、要素の高さを取得/設定する方法を学びます。

今回は、要素の高さを設定します。

1-4.heightメソッド【返却値(jQueryオブジェクト) = 要素.height(値)】で要素の高さを設定する
次に要素の高さを変更します。

「テストエリア」の高さを変えてみます。

値は「50」と数値型で指定することもできます。
また、算術複合代入子(+=、-=)を使用した相対的な指定も可能になっています。
サンプルソース
// HTML
<input type="button" value="指定したテストエリアの高さを10px大きくする"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(jQueryオブジェクト) = 要素.height(値)
    //   サンプル:「テストエリア1」の高さを設定する
    $(".box-css-test-area-1").height(50);     // ←絶対値指定(高さを50pxにする)
    $(".box-css-test-area-1").height("+=50"); // ←相対値指定(今の高さから50px高くする)
  });
});
実装例
指定した要素に設定されている高さを取得します。

要素:


テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

いかがでしたか?
次回は「2.borderの内側の高さ(borderは除き、paddingは含む)を取得する」を学びます。

それでは、また。

2016年1月25日月曜日

(jQueryの学習)CSS:高さを操作する/heightメソッド/要素の高さを取得する(その3)
前回の続きで、
「複数要素」の高さを取得する方法を考えます。

1-3.heightメソッドとmapメソッドで複数要素の高さを取得する
複数の要素の高さは取得できませんでしたが、
調べてみると「mapメソッド【返却値(jQueryオブジェクト)=要素.map(function)】」を利用することで、
複数要素の高さをまとめて取得できることがわかりました。

mapメソッドには複数の使い方があり、
今回は「引数に設定したfunctionによって指定した要素が持つ情報を取り出す」ために利用します。

引数に設定するFunctionの構文
function 任意のfunction名(インデックス番号, セレクタの要素) {
  // ↓インデックスやセレクタの要素等の引数が利用できる
  ・・・任意の処理・・・;
  // ↓取り出した情報をjQueryオブジェクトで返却する
  return jQueryオブジェクト;
}
実際に動かしてみると、以下のようになります。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素の高さが表示されます"><br>
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
  <div class="box"><b>テストエリア2</b><div class="box-css-test-area-2">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}
/* テストエリア2 */
.box-css-test-area-2 {background:#F5EEFF; border:5px solid #88f; padding:20px; margin:10px; height:30px; width:450px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    //   サンプル:「テストエリア1と2」の高さを取得する
    alert("[" + $(".box-css-test-area-1, .box-css-test-area-2").map(getHeight).get() + "]");
    // ↑:getHeightで各要素の高さを取得し、その結果をオブジェクトに格納する
  });
});

// JavaScript
function getHeight(index, el){
  // 【構文】返却値(数値) = 要素.height()
  return $(el).height();
}
実装例
指定した要素に設定されている高さを取得します。

要素:テストエリア1とテストエリア2

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

mapメソッドを利用することで
複数の要素の高さがまとめて取得できることがわかりました。

次回は要素の高さを設定する方法を学びます。

それでは、また。

2016年1月22日金曜日

(jQueryの学習)CSS:高さを操作する/heightメソッド/要素の高さを取得する(その2)
引き続き、要素の高さを取得/設定する方法を学びます。

次は「複数要素」の高さを取得します。

1-2.heightメソッド【返却値(数値) = 要素.height( )】で複数要素の高さを取得する(できるか?)
1-1.では1つの要素の高さを取得しましたが、
複数の要素の高さは取得できないのか?を試してみます。

以下、サンプルの通り、
「テストエリア1」と「テストエリア2」を要素としてheightメソッドを実行したところ、
文字列を返却するcssメソッドと同様に、1つ目の「テストエリア1」の高さのみ取得できました。

heightメソッドは複数要素には対応していないことがわかります。
以下のサンプルを動かしてみると、
CSSで定義した通りの値(例:テストエリア1なら「40」)が返却されることがわかります。
サンプルソース
// HTML

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}
/* テストエリア2 */
.box-css-test-area-2 {background:#F5EEFF; border:5px solid #88f; padding:20px; margin:10px; height:30px; width:450px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(数値) = 要素.height()
    //   サンプル:「テストエリア1と2」の高さを取得する
    alert("[" + $(".box-css-test-area-1, .box-css-test-area-2").height() + "]");
  });
});
実装例
指定した要素に設定されている高さを取得します。

要素:テストエリア1とテストエリア2

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

前回と同じ方法では、
複数の要素の高さは取得できないことがわかりました。
次回は違う方法で考えます。

それでは、また。

2016年1月18日月曜日

(jQueryの学習)CSS:高さを操作する/heightメソッド/要素の高さを取得する(その1)
今回からはCSSの高さを操作する方法を学びます。
以下、3つのカテゴリに分けて見ていきます。

  1. 1.要素の高さを取得/設定する
  2. 2.borderの内側の高さ(borderは除き、paddingは含む)を取得する
  3. 3.borderの外側の高さ(border、paddingを含む)を取得する

ここではjQueryにてCSSで定義された要素の高さの操作方法を整理します。

要素の高さを操作するには、
用途に応じて「heightメソッド」、「innerHeightメソッド」、「outerHeightメソッド」を利用する必要があります。
メソッドの種類は以下の通り。

■要素の高さを取得する
 ・返却値(数値)=要素.height(プロパティ名) ※ver1.0~
■要素の高さを設定する
 ・返却値(jQueryオブジェクト)=要素.height(値) ※ver1.0~
 ・返却値(jQueryオブジェクト)=要素.height(function) ※ver1.4.1~
■borderの内側の高さを取得する
 ・返却値(数値)=要素.innerHeight() ※ver1.2.6~
■borderの外側の高さを取得する
 ・返却値(数値)=要素.outerHeight() ※ver1.2.6~

これらのメソッドを使うことで、要素のいろいろな高さが取得ができるようになります。


それでは本日は「1.要素の高さを取得/設定する」を学びます。

まずは「単一要素」の高さを取得します。

1.要素の高さを取得/設定する

1-1.heightメソッド【返却値(数値) = 要素.height( )】で1つの要素の高さを取得する
要素の高さを取得するためにはheightメソッドを利用します。
返却値は「数値」のため、計算等の二次利用をするにはちょうど良いです。

以下のサンプルを動かしてみると、
CSSで定義した通りの値(例:テストエリア1なら「40」)が返却されることがわかります。

ちなみに「高さ(height)」とは、
枠外余白(margin)、境界線(border)、枠内余白(padding)のさらに内側の領域の高さを表します。
サンプルソース
// HTML
<div class="box">
  <div class="box"><b>テストエリア1</b><div class="box-css-test-area-1">・・・略・・・</div></div>
</div>

// CSS
/* テストエリア1 */
.box-css-test-area-1 {background:#F5EEFF; border:5px solid #88f; padding:10px; margin:20px; height:40px; width:460px;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    // 【構文】返却値(数値) = 要素.height()
    //   サンプル:「テストエリア1」の高さを取得する
    alert("[" + $(".box-css-test-area-1").height() + "]");
  });
});
実装例
指定した要素に設定されている高さを取得します。

要素:

テストエリア1
border:5px; padding:10px; margin:20px; height:40px; width:460px;
(境界線:5px、枠内余白:10px、枠外余白:20px、高さ:40px、幅:460px)
テストエリア2
border:5px; padding:20px; margin:10px; height:30px; width:450px;
(境界線:5px、枠内余白:20px、枠外余白:10px、高さ:30px、幅:450px)

次回は複数の要素の高さを取得する方法を学びます。

それでは、また。

2016年1月15日金曜日

(jQueryの学習)CSS:プロパティを操作する/cssメソッド/プロパティを設定する(その4)
引き続き、CSSのプロパティを設定する方法を学びます。

4回目の最後は「複数要素」に「複数プロパティ」を一律設定します。

3-4.複数の要素に対して、複数のプロパティ値をまとめて設定する
最後に、これまでのやり方を応用した方法を考えます。

3-2.で複数の要素への設定方法は「複数の要素を対象とする範囲を指定するだけ」と学び、
3-3.で複数のプロパティ値への設定方法は「設定したプロパティ名と値のセットをオブジェクトに格納する」と学びました。

これらを利用して、複数の要素に対して、複数のプロパティをまとめて設定します。

例として、複数の「テキスト」のサイズと文字色を変更します。
サンプルソース
// HTML
<input type="button" value="「テキスト」のサイズを大きくし、文字色を青にする"><br>
<div class="box-test-area">
  <font class="css1-char1">【テキスト1】</font> <font class="css1-char2">【テキスト2】</font><br>
</div>

// CSS
/* テキスト1 */
.css1-char1 {font-size: 20px; font-weight: bold; color: green;}
/* テキスト2 */
.css1-char2 {font-size: 80%; color: red; font-style: italic;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    /* サンプル:「テキスト」のサイズを大きくし、文字色を赤にする */
    // 【構文】返却値(objectオブジェクト) = 要素.css(objectオブジェクト )
    testObj = {};
    testObj["font-size"] = "+=1"; // testObj.fontsizeでは認識しなかったため、左記の方法で実装
    testObj["color"] = "red";
    $("font").css(testObj);
  });
});
実装例
指定した要素に設定されているプロパティ値を変更します。



【テキスト1】 【テキスト2】

いかがでしたか?
cssメソッドを利用したCSSプロパティの操作方法が分かったと思います。

それでは、また。

2016年1月11日月曜日

(jQueryの学習)CSS:プロパティを操作する/cssメソッド/プロパティを設定する(その3)
引き続き、CSSのプロパティを設定する方法を学びます。

3回目は「単一要素」に「複数プロパティ」を一律設定します。

3-3.1つの要素に対して、複数のプロパティ値をまとめて設定する
次に複数のプロパティ値をまとめて設定します。

これまでは「プロパティ名」と「プロパティ値」をcssメソッドに渡すだけでしましたが、
今度は「プロパティ名」と「プロパティ値」のセットをオブジェクトにして渡すことで実現できます。

例として、「内側の円」のサイズを変更します。
サンプルソース
// HTML
<input type="button" value="「内側の円」のサイズを大きくする">
<div class="box-test-area">
  <div class="circle"><div class="circle-char"></div></div></div>
</div>

// CSS
/* 内側の円 */
.circle {width:70px; height:70px; text-align: center; background-color:#FFCC99; opacity: 0.8; border-radius: 50%; -webkit-border-radius: 50%; -moz-border-radius: 50%;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    /* サンプル:「内側の円」のサイズを10px大きくする */
    // 【構文】返却値(objectオブジェクト) = 要素.css(objectオブジェクト )
    circleObj = {};
    circleObj.width = "+=10";
    circleObj.height = "+=10";
    $(".circle").css(circleObj);
  });
});
実装例
指定した要素に設定されているプロパティ値を変更します。


【テキスト1】 【テキスト2】

次回は複数の要素に対して、
複数のプロパティをまとめて設定する方法を学びます。

それでは、また。

2016年1月8日金曜日

(jQueryの学習)CSS:プロパティを操作する/cssメソッド/プロパティを設定する(その2)
引き続き、CSSのプロパティを設定する方法を学びます。

2回目は「複数要素」に「単一プロパティ」を一律設定します。

3-2.複数の要素に対して、まとめてプロパティ値を設定する
先ほどは1つの要素(内側の円)に対してのみプロパティ値を設定しましたが、
次は複数の要素に対して、まとめて同じプロパティ値を設定します。

特に難しい話ではありません。
要素の部分を複数要素を参照するようにすれば良いだけです。

例として、
「テキスト1」と「テキスト2」の『fontタグ』のサイズを変更します。
サンプルソース
// HTML
<input type="button" value="「テキスト」のサイズを大きくする">
<div class="box-test-area">
  <font class="css1-char1">【テキスト1】</font> <font class="css1-char2">【テキスト2】</font><br>
</div>

// CSS
/* テキスト1 */
.css1-char1 {font-size: 20px; font-weight: bold; color: green;}
/* テキスト2 */
.css1-char2 {font-size: 80%; color: red; font-style: italic;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    /* サンプル:「テキスト」のサイズを1px大きくする */
    // 【構文】返却値(objectオブジェクト) = 要素.css(プロパティ名, 値)
    $("font").css("font-size", "+=1");
  });
});
実装例
指定した要素に設定されているプロパティ値を変更します。


【テキスト1】 【テキスト2】

次回は単一の要素に対して、
複数のプロパティをまとめて設定する方法を学びます。

それでは、また。

2016年1月4日月曜日

(jQueryの学習)CSS:プロパティを操作する/cssメソッド/プロパティを設定する(その1)
CSSのプロパティを操作する方法の3つ目です。

本日は「3.CSSプロパティを設定する」を学びます。

まずは「単一要素」に「単一プロパティ」を設定します。

3.CSSプロパティを設定する

3-1.cssメソッド【要素.css(プロパティ名, 値)】でプロパティ値を設定する
次にCSSのプロパティを変更します。

手始めに「内側の円」の幅を変えてみます。

値は「"50px"」のようにも指定できるし、「50」と数値型で指定することもできます。
また、算術複合代入子(+=、-=)を使用した相対的な指定も可能になっています。

注意点として、HTMLファイルに埋め込まれたCSSの変更はできない。
外部ファイルとして読み込まれたCSSファイル内の変更のみ可能となっています。
サンプルソース
// HTML
<input type="button" value="「内側の円」の幅を10px大きくする">
<div class="box-test-area">
  <div class="circle"><div class="circle-char"></div></div></div>
</div>

// CSS
/* 内側の円 */
.circle {width:70px; height:70px; text-align: center; background-color:#FFCC99; opacity: 0.8; border-radius: 50%; -webkit-border-radius: 50%; -moz-border-radius: 50%;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    /* サンプル:「内側の円」の幅を10px大きくする */
    // 【構文】返却値(objectオブジェクト) = 要素.css(プロパティ名, 値)
    $(".circle").css("width", "+=10");
  });
});
実装例
指定した要素に設定されているプロパティ値を変更します。


【テキスト1】 【テキスト2】

次回は複数の要素に対して、
同じプロパティをまとめて設定する方法を学びます。

それでは、また。

2016年1月1日金曜日

(jQueryの学習)CSS:プロパティを操作する/cssメソッド/複数のプロパティを取得する(その2)
前回できなかった複数のCSSプロパティを取得する方法を考えます。

2-2.cssメソッド【返却値(objectオブジェクト) = 要素.css(配列[プロパティ, プロパティ, ...])】で複数要素のプロパティ値を取得する
2-1.ではcssメソッドは単一のプロパティしか取得できませんでしたが、
果たしてcssメソッドは複数のプロパティをまとめて取得できないのでしょうか?

・・・答えはNoです。

cssメソッドには別の呼び出し方法も定義されており、
プロパティは配列により複数の名称を渡すことも可能になっています。
このように複数のプロパティを渡すことで、それぞれのプロパティ値の取得が可能です。

ただし、返却値は「文字列」ではなく「objectオブジェクト」であることに注意が必要。
サンプルソース
// HTML
<input type="button" value="ボタンを押すと、指定した要素とそのプロパティが表示されます"><br>
<div class="box-test-area">
  <div class="circle"></div>
</div>

// CSS
/* 内側の円 */
.circle {width:70px; height:70px; text-align: center; background-color:#FFCC99; opacity: 0.8; border-radius: 50%; -webkit-border-radius: 50%; -moz-border-radius: 50%;}

// jQuery
$(function() {
  $("input[type=button]").click(function(){
    /* サンプル:「内側の円」の幅と高さを取得する */
    // 【構文】返却値(objectオブジェクト) = 要素.css(配列[プロパティ, プロパティ, ...])
    var obj = $(".circle").css(["width", "height"]);
    // 返却されたオブジェクトを配列に変換
    var obj_arr = [];
    for (var key in obj) {
      pl_v_arr.push(obj[key]);
    }
    // 結果出力
    alert("[" + obj_arr.join(", ") + "]");
    // ※特定のプロパティを取得する場合は、わざわざ配列にしなくても↓のようにしても良い
    alert("[" + obj.width + "]");
  });
});
実装例
指定した要素に設定されているプロパティを取得します。

要素:
プロパティ:
※Windowsでは「Ctrlキー」or「Shiftキー」を押しながら選択することで複数選択が可能

【テキスト1】 【テキスト2】

このように引数を配列で渡すことで、
objectオブジェクトの状態で複数のCSSプロパティが取得できました。

次回は「3.CSSプロパティを設定する」を学びます。

それでは、また。