• ベストアンサー

2行にしたい要素、改行か分割すべきか

質問が漠然としているかもしれません。 例えば、見出しや定義リストの一部(TD要素)で複数言語での表記を併記したい場合など、文書構造的に単一の要素だが行を分けたい場合 ・改行タグをはさんで2行の単一要素にする ・複数の同じ要素に分割しCSSで見た目を操作する のどちらが望ましいと考えますか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.7

連続で済みません。 見出しについてですが、 サブタイトル(補足事項)を、行を分けて書きたい場合はいくつかの方法があります。 (すべて文法上はOKです。) <h1>タイトル - サブタイトルや補足</h1> <h1>タイトル<br> - サブタイトルや補足</h1> <h1>タイトル</h1> <h2>サブタイトルや補足</h2> 最後の<h1>と<h2>を分ける方法ですが、 本来のHTMLの文法で考えれば、「大見出し」「小見出し」ですので、サブタイトルでなくなってしまいます。 HTML5では、複数の見出しを<hgroup>でひとまとめにする事ができます。 <hgroup> <h1>タイトル</h1> <h2>サブタイトル</h2> </hgroup> ただ、これでも厳密にはサブタイトルではなくなってしまうと思いますので、私は、以下のいずれかをお勧めします。 <h1>タイトル<span> - サブタイトル</span></h1> <h1>タイトル<br> <span> - サブタイトル</span></h1> あくまで私見ですので、 ・「サブタイトル(補足事項)も含めた物が1つのタイトル(<h1>)」 ・・・私の考え方 ・「サブタイトル(補足事項)はタイトル(<h1>)ではない、だから<h2>や<p>に分ける」・・・No.3の考え方と思います のどちらか好きな方を選べばいいと思います。

ichido_dake
質問者

お礼

※ 「教えてgoo」から閲覧している方向け:全ての補足後、締め切り時にお礼しています。 回答No.4~7をまとめてのお礼になります。 ソースを見直した結果 ・一続きの長い文面で、スタイルシートを切った場合でも1要素として見えてほしい場合(補足No.9) (現行の主要ブラウザは要素を分けると見た目も分離してしまう) と ・分離していても構わない場合(言語絡みはおおむねこれに該当) に区別できそうなので、前者は<br>、後者は要素分割する形にしたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (13)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

>文書構造的に単一の要素だが行を分けたい場合  根本的な部分で矛盾があります。文書構造と、プレゼンテーションは車の両輪のようなもので、行を分けて表示したいと言うことは、必然的に 文書構造も異なるはずです。 ^^^^^^^^^^^^^^^^^^^^^^^   とすると 「改行タグをはさんで2行の単一要素にする」  は、ひとつの段落中での強制改行ですから、マークアップが間違っています。 「複数の同じ要素に分割しCSSで見た目を操作する」  は、『異なる要素に分割し、見た目はCSSで操作する』  よってマークアップ自体 <div class="hgroup">  <h1>マニュアル</h1>  <h1 lang="en">MANUAL</h1> </div> <div class="section">  <h2>155G</h2>  <h2 lang="en">155G</h2>  <p>これは、キャンプストーブ155Gのマニュアルです</p>  <p lang="en">This is manual about 155G.</p> </div> <dl>  <dt>概要</dt>  <dt lang="en">Abstract</dt> ・・・・・  となるはずです。  スタイルシートは、 div.section>p{text-indent:1em;line-height:2em;margin:0;} div.section>p[lang="en"]{text-indent:0;} div.section>p[lang="en"]:first-leter{font-size: 200%;float: left } とか・・・  他の部分と異なる表現をしたいと言うことは、必ずその要素は他の部分と異なる構成要素であるはずだと言うことがHTML/CSSの基本です。要素名(タグ)だけで足りない場合は、その属性(class,lang,id,title・・)で区別して文書構造をマークアップしてください。それが出来れば、スタイルシートのセレクタなどカスケーディングを活用することで表現は自在に操れます。  上の場合、本文(section)中の直接の子供(>)である段落(p){}しろ【詳細度は[0,0,1,2]】、ただし属性[lang="en"]の場合は{}しろ【詳細度[0,0,2,2]】、さらに擬似要素:first-leterの場合は{}しろ【詳細度[0,0,2,3]】

ichido_dake
質問者

補足

回答有難うございます。 ですが、 「行を分けて表示したいと言うことは、必然的に 文書構造も異なるはずです。」 この部分に納得できません。 回答内容から、解答者の方は 「見出しを執筆者が明示的に行を変える事自体間違っている」 と認識していると判断しましたがよろしいでしょうか。 ※ HTMLの理念うんぬんはこのカテゴリ内の他の質問解答で何度となく拝見しましたので  この質問スレッドにおいて再掲の必要はありません。

全文を見る
すると、全ての回答が全文表示されます。
  • Chaire
  • ベストアンサー率60% (79/130)
回答No.2

No.1 補足より: > 全ての内容を同時に表示する No.1 は例示として言語切り替えのスタイルを書いたまでのことです。全てを表示したければ例示のスタイルを消すだけです。 そんなのは表面上の話にすぎず、キモは lang 属性です。lang 属性は、言語の書記法に合ったレイアウトをブラウザに指示します。例えば: ・日本語ではソース上の改行が無意味ですが、英語では単語間空白として扱わねばならない。 ・日本語・英語混在に適したフォントと、英語のみに適したフォントの切り替え(合字を含む)。 ・日本語の引用符「...」と、英語の引用符 "..." の区別(音声読み上げ時など)。 ・スペルチェッカなど補助ツールの選択。 だから、どのみち『複数言語での表記を併記したい場合』なら lang 属性が必要なのです。 <dt>  <span lang="ja">日本語</span>  <br>  <span lang="en">English</span> </dt> br で改行しただけでは、どちらのテキストが何の言語表記であるか分かりません。 <dt>  日本語? English?  <br>  日本語? English? </dt> ご質問では『など』がついていますが、こののように「何をしたいか」で方法が変わるため、とりあえず「言語併記」のみを考えています。 --- なお、以下はダメです。 <dl>  <dt lang="ja">日本語</dt>  <dt lang="en">English</dt>  <dd lang="ja">駅</dd>  <dd lang="en">Station</dd> </dl> この場合、「日本語」に属する dd はなく、「English」に属する dd が「駅」と「Station」の 2 つ、という意味になります(HTML5 の意味論)。 <dl>  <dt lang="ja">日本語</dt>  <dd lang="ja">駅</dd>  <dt lang="en">English</dt>  <dd lang="en">Station</dd> </dl> こちらであれば、「日本語」に属する dd が「駅」、「English」に属する dd が「Station」になります。まあ、ご質問の意図とは異なるでしょうが。 <ul>  <li lang="ja">   <span id="l1">日本語</span>   <span aria-labelledby="l1">駅</span>  </li>  <li lang="en">   <span id="l2">English</span>   <span aria-labelledby="l2">Station</span>  </li> </ul> lang 属性は子孫に及ぶため、このように祖先に 1 個付けておけば楽です。

ichido_dake
質問者

お礼

※ 「教えてgoo」から閲覧している方向け:全ての補足後、締め切り時にお礼しています。 回答No.1、2をまとめてのお礼になります。 質問の本題と離れた部分になりますが、 html3.2で書かれたサイトを縮小ついでに4.01フレームへ(最終更新のため手間を省きたく)書替えている途中での質問でした。 (CSSもこの更新で初導入になります) lang属性については失念していました。有難うございます。

全文を見る
すると、全ての回答が全文表示されます。
  • Chaire
  • ベストアンサー率60% (79/130)
回答No.1

<p> <span lang="ja">駅</span>(<span lang="en">Station</span>) </p> *:not(:lang(ja)) { display: none } 原則論として lang 属性のコンテナが必要な以上、こうなると思います。 今は亡き XHTML 2.0 の l 要素(line)の再評価。

ichido_dake
質問者

補足

※「教えてgoo」で閲覧している方向け:お礼前に補足しています。 回答有難うございます。 すいません、これは片方だけの表示になりますか? 質問は行を分けたい全ての内容を同時に表示する必要がある場合になります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • <br>で改行しても一行あいてしまいます

    少し説明がわかりにくいかもしれませんが <br>タグを使って改行した場合、行と行の間はあきませんよね? でもたまに<br>タグで改行してるのに行と行の間が一行空くことがたまにあります。 その時のタグは <br>文 <br>文2 と打つと 文 文2 後で見るとこのように反映されます。 同じページで同じ<br>タグを使ってる他の行は改行だけで 行の間が空くことはないのに、何度やっても同じ箇所だけ一行空いてしまいます。 これはどうしてでしょうか?プラウザはIE6.0なんですが そこの部分だけ何度やっても一行空いて見た目が変です。 何か解決策はないでしょうか?

    • ベストアンサー
    • HTML
  • <TEXTAREA> 1行目の改行・・・。

    HTMLのほうがよいかASPがよいか迷ったのですが 『.asp』ファイル上での話なので、とりあえずココへ 質問させていただきます・・・。 現在、<Form>タグを使って次画面へ値の受け渡しをしています。 その時、<TEXTAREA>タグに入力された内容を 次画面でも<TEXTAREA>に表示させています。(ReadOnlyで) 1行目にイキナリ改行をした場合に、次の画面では その改行が詰まった状態で表示されてしまいます。 例)入力フォームで [1行目] [2行目]あああ [3行目]いいいいい と入れた後、次の画面に行くと [1行目]あああ [2行目]いいいいい になってしまいます。 1行目の改行もそのまま表示させたいのですが、 何か特別なことをさせないとダメなのでしょうか? (現在は特に何もしていません。Request.Formで拾ったものをそのまま表示させてます)

  • IE8で</form>タグが改行されない方法ありますか?

    IE8だけ、<td></form>タグで改行されてしまうので・・ <td></form STYLE="MARGIN:0px;padding:0px; ">のように CSSを設定しましたが、改行されてしまいます。 IE8でも改行されない方法はあるでしょうか?

    • ベストアンサー
    • HTML
  • 要素分割された要素の並び替え

     実際は三次元で行うのですが(自分でプログラムを作成しようと考えています)、二次元でも考え方は同じだと思いますので二次元で質問させていただきます。  有限要素法で円形領域を三角形要素で要素分割して計算を行う場合、計算速度やメモリ領域を考慮して要素の並び替え(バンドマトリクスのバンド幅を狭めるため)を行うと思います。(この場合、要素と節点は既にファイルとして与えられているとします)  これは、有限要素法で解く連立方程式をAX=Bとした場合、対称行列Aの対角成分に行列成分を集めることに相当すると思います。  その場合の要素の並び替えの方法を教えてください。 四角形領域を四角形要素で分割した場合は四角の1辺(例えばX軸方向)に沿って並べ、その行が終われば次の行(Y軸方向)から並べるようにすればよいと思うのですが...。(下図参照)    ----→    ----→    ----→             ----→    ----→  書籍、WEB情報でも結構ですのでよろしくお願い致します。

  • 表の中の改行

    メモ帳を使ってHPを作っているのですが 表の中に長い文章を書くので改行したいのですが <Br>で改行してもうまくいきません。 表の中で改行出来て縦の中央に配置したい場合 どうすればいいでしょうか? 1行と2行が入り混じっています。 <Table Border> <Tr> <Td>1行</Td><Td>2行</Td><Td>1行</Td></Tr> </Table>

  • 改行を消したい

    Windows7を使っています。 (A) あああ いいい ううう (B) あああいいいううう PCで Aのような文書の改行を消して Bのように変えたい場合ですが 数行の文書の場合は一つ一つ消せますが 百行とか千行とか長い文書の場合に 何か良い方法は在りませんか?

  • 空白行について(できればCSS)

    こんにちは! デザイン上、どうしても2行分以上の空白行が欲しいときがあります。 現状でやってる方法としては<hr>タグの高さで調節か<pre>タグで間に改行を入れて誤魔化しています <br>タグの連続はいけないと言われました。これは改行タグであって空白行を作るものではないと CSS使ってて、これからなくなるタグなんかも排除しているところなので 間違いのない方法を知りたいのです。 そこで、2行分とか3行分とかの改行をする際に、他にどんな方法があるか教えてください! なんとなく今自分がやってる方法は自信がありません。

    • ベストアンサー
    • CSS
  • テーブル内で改行を防ぐには

    td要素内に記述したテキストは通常、自動改行されますが、数字の場合自動改行されません。そのため横スクロールする必要があったり、サイトデザインがくずれたりします。 自動改行をされるようにするにはどうしたら良いでしょうか。 例えば、下記のようなソースです。 <table><tr><td> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789</td></tr></table>

    • ベストアンサー
    • HTML
  • 表の行の高さを変えるには

    初歩的に質問で恐縮ですが、表を使って、サイン用のレイアウトを作ろうと思っています。1行の左に「サイン」というタイトル、右にサインをする場所を取りたいと思っていますが、行の高さは文字にピッタリくっついてしまいます。希望する結果は、サインする場所の上に、3行分ほど高さがあるというものです。 hightという要素を使えば高さが変わるかと思って試してみたり、スタイルシートのMargin, Line-hightなども試してみたのですが、うまくいきません。  やはり<TD>タグの中に<p>を複数個入れるしかないのでしょうか? よろしくお願いします。 <table width = 600 cellspacing=0 border=1> <tr><td width=100 class=lightgray align=right>サイン:</td> <td>_______________________________________</td></tr> </table><p>

    • ベストアンサー
    • HTML
  • ブロックレベル要素の前後のスペース(余白)のことで

    ブロック要素の場合は、前後に改行が入るのはわかりましたが、同じブロックレベル要素でもpタグは前後に余白?空白行?が入ります。divやaddressも同じブロックレベル要素なのに、こちらは段落の前後にあきが出ません。 ブロックレベル要素に共通なのは、前後で改行されるということだけで、前後に1行?あいてしまうかどうかは、要素によってマチマチということなのでしょうか。 ※Win7、IE8使用