Page Top

jQueryで要素の高さを取得し、body要素に記述している背景画像(パターン)のポジション(高さ)を変更する

August 28, 2014

現在開発中のMT用テーマで、ヘッダーにフリーエリアを設けているオプションがあるのですが、そのフリーエリアに表示されるのは、MTのウェブページ機能で作成されたコンテンツで、なので、ユーザ様の利用方法によっては、コンテンツが長くなる場合もあります。しかし、デザインとして、ヘッダーには背景画像がcssで指定されており、コンテンツが長くなると、その背景画像の位置も下にずらす必要があります。これをjQueryで実現したいと。。

以下のコードは、MTテンプレート内の関連箇所のすぐ下に直接記述しているjQueryなので、ページのDOMの読み込みが終わってから処理されるようにするreadyイベントの書き方$(function () {~~~});はしていません。(コード中の<>は、全角で記述しています。)

<script type="text/javascript">
var header_height = $('#header .text-info').height();
$('#header').height(header_height);

var position_value = "left " + header_height + "px";
$('body').css('background-position', position_value);
</script>

上記のコードで無事に「#header」内の「.text-info」内にあるコンテンツの高さを取得し、それを「#header」の高さとし、また、その高さを使って、「body」のcssに指定している背景画像のポジションを変更することが出来ました!嬉

これまでjQueryは難しいものとばかり思っていましたが、違っていたようです。。元々javaScriptが苦手な私は、jQueryにも自然と苦手意識を持っていました。ですが、今回サイトのレイアウトデザイン上、jQueryを使ってみて・・、いとも簡単に出来てしまいました!jQueryって凄いんですね。

それからと言うもの、jQueryについて初心者用の勉強を少し始めてみました。過去にjavaScriptをかじった経験があるものの・・、関数とか数式が良く分からなかったのですが、以下のサイト様を読んで勉強させていただいています。あまり使用頻度は多くないと思うのですが、デザイン上必要ならば、jQueryでDOMをうまく扱えるようになりたいです。

■参考サイト
jQuery入門講座
JavaScript・jQueryの関数について
7つのサンプルでjQueryを学ぼう!「jQueryが全く分からない人のため」の超初級者向け入門講座
jQuery 開発者向けメモ - 基本・サンプル
jQuery 日本語リファレンス

Firefox 画面が縦に長すぎると背景画像が切れる

August 22, 2014

今、ウェブページを利用してサイトの部分表示を行うエリアのテキストや画像の表示チェックをしているのですが、テストとして長~~~いコンテンツを入れてみたところ、Firefoxでだけで何故か背景画像(パターン指定)が切れます。その他のモダンブラウザや、ましてやIE6でも大丈夫ですのに、Firefoxでだけでこのようなバグが生じています。しかもFirefoxは最新版の分です。

調べた所、BLUE COMPLETE様の記事で「【Firefox】縦長のページで背景画像が切れてしまう件」を読ませていただき、どうやら要素の長さが32,000px以上になると背景画像が切れてしまうことがわかりました(32,000pxというのが微妙な数字です。)

その対処法としてJQueryを使用して要素の高さを取得し、その高さをJQueryでcss指定すれば良いはず?という風に書かれていましたので、確かめてみようと思い、色々JQueryで似たような動作のものを探してチャレンジしていましたが、ボックスは長くなっても背景画像はやはり切れたままで、もしかしてJQueryのcssが効いてないのではなくて、cssファイル自体の背景画像パターンボックスにheightを40000pxなど指定をしても、もしかすると駄目なのかも?と思い、ダイレクトにcssファイルの該当箇所にheight: 40000px;などと入れてみましたところ、背景画像はやはり切れていました。

ということで、現実的に、32000px以上の長さのコンテンツを1つの要素に入れるのは普通あまり無い事なので、これまで通りにしておきたいと思います。。

ちなみに、JQueryで似たような動作をするお手本として、Web Design Leavesさまの「jQuery を使って要素の高さを揃える」という記事がとても参考になりました。ありがとうございました。

宇宙から見た美しい地球

August 16, 2014

オーロラが神秘的で、美しすぎます。あと、雷も花火のようでとっても綺麗です。地球には様々な色が沢山あって、ほんとに美しい星ですね。

順列を求めなくても良かった話

August 13, 2014

日が空いてしまいましたが、前回ulとolの順列を求めて三千里でしたが、あの後、列が1列のものに対してulとolの順列を6階層、列が2列のものに対してulとolの順列を6階層、~~、列が5列のものに対してulとolの順列を6階層、と指定しなければならないことに気が付き・・、う~んこれは面倒だな・・何かもっと簡単な方法があるはずだ・・と、閃いたのが%指定でした。

ulもolもブロック要素で、デフォルトでposition:relativeですので、親要素に指定されたスタイルは子要素に継承されます。なので、親要素に%指定すれば、その親要素の中での%、その親要素の中の子要素の中での%、その子要素の中の子要素の中での%、と言う風に勝手にスタイルが継承されていき、詳細な指定は不要なのでした。

なぜ始めにこれを思いつかなかったのか・・。長いcssを書かずに済みました。

【追記】
と、思っていたのですが、liに対するスタイルがulとolとでそれぞれ異なるので、やはり順列を求めなければならないようです・・。親要素しか継承しないため、ulとolが交互入り混じった階層でのスタイルはやはり1つ1つ指定しなければなりません。。

CSSで文字列の折り返し

August 13, 2014

つい忘れてしまうcssのプロパティにword-breakがあります(以前はIEが独自採用したものですが、今はCSS3で各モダンブラウザに標準サポートされているようです)。これを使って、アルファベットなどの長い文字列(リンクなど)をレイアウトの幅に合わせて折り返すことが出来ます。

word-breakに対する値として、break-allを使用すると、単語の途中でも改行され、keep-allを使用すると、単語の途中では改行されず、単語の切れ目で改行されます。

自分用覚書でした。