※ パクレゼルヴではWeb開発エンジニアを大募集中!詳細はこちら

Archive

Archive for the ‘HTMLとか’ Category

携帯電話の特定のキャリアではおかしくなる例

2009/11/24 火曜日 11:02:53

またまた時間が空いてしまいました。

お久しぶりです。
のびーにょです。

さて、表題の件

ラジオボタンがまともに動作しない場合

ドコモ、ソフトバンクの2キャリアでは正常に動作します。
また、PC等の一般的なブラウザでも正常に動作します。
しかし、auのみ正常に動作しません。

以下サンプル
html

<form action="http://example.com" method="POST">
	<input type="hidden" name="jb" value="test2_ez"/>
	<input type="radio" name="mail_receive" value="ALL"/>ALL<br />
	<input type="radio" name="mail_receive" value="YES" checked/>YES<br />
	<select name="s_hour">
		<option value="00">00</option>
		<option value="01">01</option>
	</select>
	<br />
	<input type="radio" name="mail_receive" value="NO"/>NO<br />
	<div style="text-align:center;">
		<input type="submit" name="regist" value="設定する" /><br />
	</div>
</form>

以下のような表示になります。

20091118161336

複数個のラジオボタンがあってセレクトボックスがある普通のフォームです。

ラジオボタンのグループはすべて同じグループです。

au以外の端末の場合は正常に動作しますが、
auの一部の機種(かなり多そうな感じではありますが)では正常に動作しません。

以下の画像のようになります。
20091118161337

ラジオボタンが複数個選択できてしまいます。
ALLとNOの2個のラジオボタンにチェックが入ってしまう状態です。

もう一度言いますが、グループは同一です。

これでPOSTしてしまうとセレクトボックスの下側(NOの方)が優先されてしまい、
上にあるALL、YESが2度と選択できなくなります。

解決方法は以下のhtml

<form action="http://example.com" method="POST">
	<input type="hidden" name="jb" value="test2_ez"/>
	<input type="radio" name="mail_receive" value="NO"/>NO<br />
	<input type="radio" name="mail_receive" value="ALL"/>ALL<br />
	<input type="radio" name="mail_receive" value="YES" checked/>YES<br />
	<select name="s_hour">
		<option value="00">00</option>
		<option value="01">01</option>
	</select>
	<br />
	<div style="text-align:center;">
		<input type="submit" name="regist" value="設定する" /><br />
	</div>
</form>

ラジオボタンを一か所にまとめてしまい、間にセレクトボックスを挟まないようにします。

HTMLファイルを同一にて記述する場合や、1キャリアのソースをコンバートする場合は注意が必要です。

ドコモの端末で動くからOKとかは危険なので気を付けてください。

セレクトボックスを指定したのにラジオボタンになる

以下のようなHTMLはauでは

次のページにすらいけなくなるので注意が必要です。

<div style="text-align:center;">
	<form action="http://example.com" method="POST">
</div>
	<input type="hidden" name="jb" value="test2_ez"/>
	<select name="s_hour">
		<option value="00">00</option>
		<option value="01">01</option>
	</select>
	<div style="text-align:center;">
		<input type="submit" name="regist" value="設定する" /><br />
	</div>
	</form>

※意図的に上段のdivの<を大文字にしています。
syntaxHighlighterが勝手にformを補完するようなので。。。

HTML的にどうなんだという部分はありますが、このHTMLでも

PCのブラウザやDoCoMo,SoftBankの携帯端末だとまともに表示され、POST,GETが可能です。

普通にこう見えます。
20091118161338

しかしやはりEzWeb ここでもやってくれます。

以下の画像や
20091118161339
こんなことになります。
20091118161340

この状態だとどのボタンを押しても前の画面に戻ります。

次のページへ移動はできません。

解決方法は以下

<form action="http://example.com" method="POST">
	<input type="hidden" name="jb" value="test2_ez"/>
	<select name="s_hour">
		<option value="00">00</option>
		<option value="01">01</option>
	</select>
	<div style="text-align:center;">
		<input type="submit" name="regist" value="設定する" /><br />
	</div>
</form>

まぁ、divの指定が悪いのは見ての通りなので消してやるか、formすべてを囲ってやればOK

最近HTMLの話ばかりでプログラムに関することはほぼ書いてない気がします。
というか、投稿の間隔が空きすぎていますね・・・

なるべく書くようにします。。。

のびーにょ HTMLとか, キャリア, 携帯電話

携帯電話のキャリア毎のHTMLの解釈の差を吸収する

2009/7/31 金曜日 18:00:20

お久しぶりです

のびーにょです。

さて、携帯電話のHTMLに関するお話でも。

<div>
	<div style = "background-color:#FFAAAA">TITLE</div>
	<div style = "background-color:#CCCCCC">
		コンテンツ<br />
		コンテンツ<br />
		コンテンツ<br />
	</div>
</div>

ってな感じで書いた場合
ドコモ端末だと
block_dc1
ってな感じで
au端末だと
block_au1
こんな感じになっちゃいます。

divタグとdivタグの間に隙間ができてしまって、何ともみっともないことになります。
CSSでどうにかして隙間を埋めてしまいたいのですが、これはほぼ不可能です。

で、これ実はHTMLの書き方だけで同じようなレイアウトになります。

それが以下

<div>
	<div style = "background-color:#CCCCCC">
		<div style = "background-color:#FFAAAA">TITLE</div>
		コンテンツ<br />
		コンテンツ<br />
		コンテンツ<br />
	</div>
</div>

htmlの概念的にはよくはないんですけどね
イメージとしては以下のような感じ
灰色の部分がコンテンツのdivでピンクの部分がタイトルのdiv
s2

普通のイメージは
s1
こんな感じで、タイトルとコンテンツ部分の隙間をなくすようなCSSを書いたりしますが
携帯の場合、サポートしていない場合が多いです。

上記のHTMLで書いた場合は
ドコモ
block_dc2

au
block_au2
ってな感じで表示されて両方同じ見え方になります


もう一個例を出しましょう
1エリアごとに交互に色を入れ変えたい場合
良くあるのがランキングとか一覧表示とか
そのあたり。

<div>
	<div style = "background-color:#FFAAAA">aaaaa</div>
	<div style = "background-color:#CCCCCC">aaaaa</div>
	<div style = "background-color:#FFAAAA">aaaaa</div>
	<div style = "background-color:#CCCCCC">aaaaa</div>
	<div style = "background-color:#FFAAAA">aaaaa</div>
	<div style = "background-color:#CCCCCC">aaaaa</div>
	<div style = "background-color:#FFAAAA">aaaaa</div>
	<div style = "background-color:#CCCCCC">aaaaa</div>
	<div style = "background-color:#FFAAAA">aaaaa</div>
</div>

こんな感じで書きたくなりますよね。
でも、こう書くと
list_dc1
ドコモは問題ない

list_au1
でもやっぱりauで問題が出ます。

これも、以下のようなイメージでHTMLを記述することでドコモと同じように見せることが可能です。

s4

htmlはこんな感じで

<div style = "background-color:#FFAAAA">
	aaaaa
	<div style = "background-color:#CCCCCC">aaaaa</div>
	aaaaa
	<div style = "background-color:#CCCCCC">aaaaa</div>
	aaaaa
	<div style = "background-color:#CCCCCC">aaaaa</div>
	aaaaa
	<div style = "background-color:#CCCCCC">aaaaa</div>
	aaaaa
</div>

そうすると、ドコモ、auが以下のように同じように見えます。
list_dc2
list_au2

まぁ、そんな感じで一つ下のdiv要素の色を上の階層に持ってきてやると意図しない隙間をなくすことができます。


色々めんどくさいですけど、結構HTMLだけでも表現できたり色々便利
例えば、以下のような色分けを隙間なく表示したいときとかも
s5

<div style = "background-color:#FFF0E5">
	<div style = "background-color:#FFD0BF">
		<div style = "background-color:#FDDAF0">
			<div style = "background-color:#FABBEA">
				<div style = "background-color:#A3F27B">
					<div style = "background-color:#C0E9FA">
						<div style = "background-color:#FFF09C">
							<div style = "background-color:#F4DA67">
								<div style = "background-color:#ccccff">
									<div style = "background-color:#9966ff">
										<div style = "background-color:#FFB6C1">
											<div style = "background-color:#FF3333">
												<a href ="">
												<span style = "font-size:medium">
												かおもじ友の会</span>
												</a>
												<br />
											</div>
											┗3000個以上の顔文字やAAを収録!オリジナルな作品も投稿できてみんなで共有できちゃう!
										</div>
										<a href ="">
										<span style = "font-size:medium">
										あなたの過ごした時間</span>
										</a>
										<br />
									</div>
									┗時は金なり。あなたが生まれて今日まで過ごした「時間」について色々な角度から詳しく知りたいと思いませんか?
								</div>
								<a href ="">
								<span style = "font-size:medium">
								ちょいネタフーズ</span>
								</a>
								<br />
								</div>
								┗お手軽料理からネタ料理まで、レシピをケータイで簡単検索!オリジナルレシピも投稿しよう
							</div>
							<a href ="">
							<span style = "font-size:medium">
							切なさ成分解析</span>
							</a>
							<br />
						</div>
						┗身近な素材に含まれる「切なさ」を解析。結果を読むと思わず切なくなるかも?
				</div>
				<a href ="">
				<span style = "font-size:medium">
				明日に向かって叫べ</span>
				</a>
				<br />
			</div>
			┗魂の叫びに賞金がかかります!アナタも賞金首となって追われてみる?
		</div>
		<a href ="">
		<span style = "font-size:medium">
		NAME&nbsp;de&nbsp;QUEST</span>
		</a>
		<br />
	</div>
	┗あなたは世界を救う勇者となって、日頃の鬱憤を晴らすべく魔王に戦いを挑みます!
</div>

のびーにょ HTMLとか, Tips, キャリア, 携帯電話

携帯CSSちょっとメモ

2008/9/19 金曜日 23:37:57

こんばんわ。かーつんです。

さっき調べてて分かったことを、
ちょこっと残しときます。

携帯でCSSを使うとき、
例えば以下のように書くと

style="font-size:xx-small"

携帯の機種によっては思わぬ表示が起こります。
今回遭遇したのは、xx-largeを指定していた文字同士が、

行間が狂って重なり合って表示される。

コレを解消するには。

style="font-size:xx-small;"

と、キチンと「;」を付け忘れることなく、
正しい書き方で書く。

そう。これだけ。。。

意外と忘れてしまいがちな「;」ですが、
PCでは何ともない事が携帯では大惨事に繋がるようです。

かーつん HTMLとか, 携帯電話

ロジックとデザインの分離について

2008/5/30 金曜日 22:36:04

こんばんは。またまたチョコボールです。2日連チャンです。

今回はMVCという考え方におけるVとCのお話です。

自分は業務ではSmartyも使ってます。

Smartyを使う目的はコードの可読性向上、デザイナーとプログラマーの分業、デザインとロジックの分離などありますが、そういう意味において、値の加工はコントローラー側でおこなって変数や配列に格納してビュー側では極力表示だけ!
MVCモデルにおいてはこれが理想だと(勝手に)思ってました。

たとえば下記のような値段を表す変数があったとします。

$price = 1000000;

これをブラウザでは「1,000,000円」のように千の位単位で区切って表示させたい時、

コントローラー側で

$price = number_format($price);

のように加工してからビューに渡す。
こうすべきだと思ってました。

しかしこうしてしまった場合、後でデザイナーから「区切らなくていいよ」等の修正を依頼されたり、仕様が変更した場合など、結局プログラムを書いた側が修正することになり、二度手間で面倒なことになります。

普通に生のデータをビューに渡してテンプレート側で下記のようにコーディングした方が合理的です。

{$price|number_format}

見せる部分はできるだけデザインする側にお任せ。
完全に分業するとしたらそれが理想ですね。
かなり時間が経過した後に仕事を引き継いだ他のプログラマーが修正することになったとしても、コードを追わなくてもテンプレだけを変更すればいいですし。
プログラマーもデザイナーもSmartyを覚えなきゃいけない、というのは大変ですけど。。
(いや実際かなり大変です…)

日付表示に関してもロジック側でタイムスタンプ値のデータがあれば、タイムスタンプのままビューに渡してあげた方が修飾子のdate_formatでいろんなパターンで表示させられます。

できるだけ生のデータをビューに渡した方がデザイナー的には見せ方の選択が広がるわけです。

どう表示させるか(見せるか)というのは本来ビューの役割なので 極力ビュー側に任せた方がいいということですね。

チョコボール HTMLとか, PHP, Tips, 未分類

62.5%

2008/5/29 木曜日 21:49:32

チョコボールです。

WEBアプリ開発においてはLAMP(Linux、Apache、MySQL、PHP)が中心ですが、モバイルコンテンツ開発がメインと言っても管理画面系は基本的にPCから操作します。
ということは、JavascriptやAjaxも扱えた方が当然アツい訳です。

プログラミングを始める前まではJavascriptはネットで拾ってきてコピペで使っていました。
使うケースが増えてきたのでこれを期にちゃんと身につけようと思って地味に勉強中です。
Javascriptについて書きたいのですがまだまだへっぽこですのでまた今度。。

今回はCSS(Cascading Style Sheets)について。

開発担当の自分はCSSは業務ではあまり触れることはないのですが、面白いので個人的に勉強してます。
綺麗なMVCモデルのWEBアプリ構築を目指してる自分としては、Vもさらに分けたいという欲求も自ずと出てくるものです。

数年前に流行りかけたテクニックらしいのですが、
『フォントサイズをピクセル単位のように直感的に相対指定する技』

たまにソースを覗くと、このような指定を見かけることがあります。

body{ font-size: 62.5%; }

一つのサイトならまだしも、他のサイトでも同じ62.5を多く見かけました。
最初はなぜ62.5%なのか!?って感じで謎でした。

こう指定することにより、ブラウザ上でフォントサイズを12pxの大きさで表示させたい場合は1.2em、14pxの大きさで表示させたい場合は1.4emのように直感的に指定すれば、ブラウザの設定でデフォルトのフォントサイズを変更してなければ、たいていの場合は望み通りの表示になってくれます。
現在、ほとんどのブラウザで大丈夫のようです。

そのメカニズムは…

現在広く使われているブラウザの殆どはデフォルトのフォントサイズが16ピクセル。
もしデフォルトの文字サイズが10ピクセルになっていたとすれば…と発見者は考えたようです。

16ピクセルを相対指定で10ピクセルに変えるには

10÷16=0.625

body要素に62.5%として指定すれば、先に示した通り、直感的に指定できることになります。

デメリットも有りますが、便利ですね。

チョコボール HTMLとか, Tips, その他

CSSとJavaScript No.1

2008/5/28 水曜日 19:43:15

初めまして。

プログラマーではありませんが、参加させていただきました。

一応デザイナーの じゅんキチです。

初投稿です。宜しくお願いします。

中傷禁止であります!

CSSは素晴らしいですね。名前がかっこいい。

テーブル【いりません。】

SEO対策【やったー!!】

今日、初めて気付いたんですけど

<div style~>ってCSSなんですね。

中傷禁止であります!

今日はCSSを外部から読み込んでみました。

スッキリ!かっこいい!おもしろい!

ついでにJavaScriptも外部から読み込んでみました。

関数がうざいです。

こっちはまだまだ勉強が必要です。

そろそろFlashデコメも走りだしそうです。

こんな背景、デコメあったらいいな~って意見お待ちしております。

初なんでこのくらいで勘弁してやってください。

【また会いましょう!】

中傷禁止であります!

じゅんキチ HTMLとか

サイトのCopyright表記

2008/4/30 水曜日 20:43:56

日曜日にちょっと踊って筋肉痛のチョコボールです。

知人に頼まれたりで個人的にサイトを3つくらい運営しているのですが、
ふと気付けばページフッター部分のCopyrightの年号がこのようになってました。

Copyright (c) 2004-2006 ***********,
 All rights reserved.

これでは更新されてない適当なサイトと思われてしまいますね。。
実際忙しくてなかなか手をつけられてないのは事実なんですが。。

去年の秋からPHPを学び初め、とっさに思いついたコーディングが下記です。

Copyright (c) 2004-< ?php echo date("Y"); ?>
***********, All rights reserved.

これで毎年自動的に更新され(ているように見せることができ)ます。
発見した時はちょっと嬉しかったんですが、割とよくやる手法のようですね。笑

今年は元旦になったと同時にCopyright部分の年号が切り替わって幸せになれました。

Smartyの場合はこんな感じ?

Copyright (c) 2004-{$smarty.now|date_format:"%Y"}
********, All rights reserved.

(c)は

&copy;

と書くことによって出せます。

チョコボール HTMLとか, PHP, Tips

Web Developer

2008/4/24 木曜日 19:45:24

4月から正社員になりましたチョコボールです。
相変わらず花粉に悩まされています。。

3月まではCakePHPで開発を行っておりましたが、
現在はECサイトのオープンソース「EC-CUBE」のソース解析、機能追加、その他カスタマイズ等を行っております。
cakePHPとはまた違ったメソッド群は勉強になります。
オープンソースの強みですね。
洗練されまくってます。

先日大阪で行われたEC-CUBE第一回オフ会にも参加させていただきました。
EC-CUBE歴の長い開発者の方々も多かったのでいろいろと勉強になりました。

EC-CUBEについては追々書いて行こうと思います。

今回はFirefoxの便利なアドオン『Web Developer』について。

▼Web Developer 日本語版
http://lab.tubonotubo.jp/tools/webdeveloper/index.html

私がよく使うのは
・フォーム→フォームの情報を表示する
・枠表示→table要素を枠で囲う
・CSS→CSSを表示する
あたりです。

『フォーム』では、input内のnameの値、hiddenの中身などが一目で分かるのでWEBデザイナーの方だけでなく、プログラマーのにも重宝します。
また、*****表示のパスワードを表示させたり、hiddenの値をその場で直接変えてSubmit出来たりもします。
ある意味リアルタイム偽装フォームアドオン??

開発効率がグーンと上がるので是非使ってみることをお勧めします。

チョコボール HTMLとか, PHP, Tips, その他

各キャリアのHTMLの違い(FORM)

2008/4/24 木曜日 17:55:11

おいっす

のびーにょです

今日は各キャリアでのHTMLの表示の違いについて

まずは以下(XHTMLです)

TEST FORM
<form method="get" action="http://example.com/">
<input type="submit" />
</form>
TEST FORM

って書いた場合

ドコモ ソフトバンク
ドコモ(改行無し) ソフトバンク(改行無し)

まぁこうなると思いますが
流石Ezweb
Ezweb端末(改行無し)
こうなります

んじゃ、改行入れればいいんじゃね?的な乗りでbrタグ入れてみると

TEST FORM<br />
<form method="get" action="http://example.com/">
<input type="submit" />
</form><br />
TEST FORM

Ezweb
Ezweb(改行あり)

を できたできた ってな
他のキャリアがな。。。

ドコモ ソフトバンク
ドコモ(改行あり) ソフトバンク(改行あり)

ってなるわけです。

だからこそそれぞれのキャリア用のテンプレート書くとか色々やるんですが
正直めんどくさいのでデザインがそれほど崩れなければそのまま行きます。
もしくはformタグの閉じる場所をHTMLの最下層ぐらいまで持って行ってキャリアの差を吸収する感じ

<form method="get" action="http://example.com/">
TEST FORM<br />
<input type="submit" />
TEST FORM<br />
</form>

って感じでやってます。

キャリア毎にテンプレート用意して、それぞれのテンプレートを書く なんてよく聞きますが
数年コンテンツ触っててもそんな事やったことないわけです。

僕は流行りに乗り遅れた部類の人なのでしょうか・・・

のびーにょ HTMLとか, キャリア, 携帯電話

パクレゼルヴもラボ的な開発部ブログを作ってみる

2007/12/21 金曜日 14:35:10

はじめまして。
パクレゼルヴ開発部の”のびーにょ”です。
パクレゼルヴの開発って、何作ってるの?って感じだと思いますが
携帯電話のWEBコンテンツ作ってます。

日々、Google先生に色々聞きながら調べ物とかしてるんですが、いろんな企業のラボが引っ掛かることが非常に多いです。
これって結構ブランディングとかにもなるなーとか思いながら調べ物とかしてるんですが、
外部の人に内部のこと(開発してるものや事)を知ってもらうのにも良いんですよね。
調べればわかることだし、社内で秘密にするレベルの話でもないですし。

ってことで、パクレゼルヴの開発部もブログ形式でラボっぽいことやります。

とりあえず一発目として・・・
【auの携帯電話でセレクトボックス(プルダウンメニュー)内部が改行されることについて】
ちょっと前にはまったのでTips的に

<div style="font-size:x-small">
	好きな果物<br />
	<form action="" method="post">
		<select name = "hogehoge">
			<option value="0">Apple</option>
			<option value="1">Pineapple</option>
			<option value="2">Lemon</option>
			<option value="3">Strawberry</option>
		</select>
	</form>
</div>

普通のフォームでのセレクトボックス。
でも、これだとauの携帯電話だと表示が崩れます。

崩れた例 崩れた例2

原因として、プルダウンメニュー内での、フォントサイズは”medium”で表示されるようです。
しかし、”font-size:x-small”でのフォントサイズで、プルダウンメニューの横幅が設定され、
“font-size:x-small”の横幅にも拘らず、”medium”サイズのフォントをプルダウンメニュー内に表示してしまう為、改行されてしまうようです。

解決策として、”select”タグの前で、一旦フォントサイズを”medium”にすることで対応可能です。

他のキャリアでは、このような現象は確認出来ておりませんので、ブラウザの解釈の違いによるものかと思います。

非常に汚いhtmlになりそうな気がするんですけどね・・・

<div style="font-size:x-small">
	好きな果物<br />
	<div style="font-size:medium">
		<form action="" method="post">
			<select name = "hogehoge">
				<option value="0">Apple</option>
				<option value="1">Pineapple</option>
				<option value="2">Lemon</option>
				<option value="3">Strawberry</option>
			</select>
	    </form>
	</div>
</div>

こんな感じですかね。。。

これなら”好きな果物”の部分だけspanとかで指定してもいいんですけど、
ページ全体の文字のデフォルトをx-smallにしたい場合とかだとこうせざるを得ないのかなぁと

良い解決策なんかがあれば、教えていただけると助かります。

【追記】2008/05/23 18:11
どうやら少し勘違いしてました

原因として、プルダウンメニュー内での、フォントサイズは”medium”で表示されるようです。
しかし、”font-size:x-small”でのフォントサイズで、プルダウンメニューの横幅が設定され、
“font-size:x-small”の横幅にも拘らず、”medium”サイズのフォントをプルダウンメニュー内に表示してしまう為、改行されてしまうようです。

これ 実は違ってたっぽいです
SELECTタグ開内ではそれより上で指定されていたフォントサイズの指定が解除される(機能しない)ようです
つまり、SELECTタグの中で個別でoptionの値のフォントサイズを変更して、文字サイズをそろえることもできるようです
以下サンプル

<div style="font-size:x-small">
	好きな果物<br />
	<form action="" method="post">
		<select name = "hogehoge">
			<span style="font-size:x-small">
				<option value="0">Apple</option>
			</span>
			<span style="font-size:x-small">
				<option value="1">Pineapple</option>
			</span>
			<span style="font-size:x-small">
				<option value="2">Lemon</option>
			</span>
			<span style="font-size:x-small">
				<option value="3">Strawberry</option>
			</span>
		</select>
	</form>
</div>

のびーにょ HTMLとか, Tips, その他, 携帯電話