あなたは何にトキメキますか?

初歩的な質問失礼致します。

webデザイン初心者です。現在サイトの制作中なのですが、<p>要素の長文について何点かわからない所が出てきたので質問させていただきます。

(1) <p>要素で記述した文章の折り返し地点は、<br>を使用しない限り<p>要素に指定したwidth幅によってきまるのでしょうか?
(2) その場合、背景画像を<p>に指定したら自動的にその背景画像も同じwidthになるのでしょうか?

添付画像の上の図のように、<p>要素にcssで背景画像を指定して、その上に上下左右それぞれ余白をとって長文を配置したいのですが、添付画像の下のような状態になってしまいます。 以下がcssです。

p {
background: url(図の水色部分) no-repeat 0 0 ;
width:691px;
padding: 16px 230px 16px 30px;
}
(リセットcssでmargin.padding.borderはそれぞれ0にしてあります。)


<p>を囲む<div>を作ってそれに背景画像を指定して、<p>に折り返したい幅のwidthを、marginで余白を指定する方法がいいのでしょうか?

出来れば<p>要素へのcss指定だけで完結させたいのですが、方法がわかりません。

どなたか初心者にもわかりやすくご教授いただけないでしょうか??

どうかよろしくお願い致します!

「webデザインcss <p>タグ内の長文」の質問画像

A 回答 (3件)

widthの値は初期ではpaddingを含みません


なので
width:691px;
padding: 16px 230px 16px 30px;
だとpの幅は691+230+30pxになります

width:431px;にしましょう

蛇足ながらhtml5だと
box-sizing:border-box;
でwidthをpaddingを含んだ値にできますが
まだ時期的に早いかもしれません
    • good
    • 0
この回答へのお礼

すごくわかりやすかったです!ありがとうございました。
納得がいきました。
backgroundはpaddingまで表示されますもんね。


また機会があれば是非ご指導の程よろしくお願いします!

お礼日時:2014/02/28 10:06

初心者の方だと思いますが、根本的にとても大きな--重大な---思い違いをされています。


HTMLは、Hyper Text Markup Language の略でマークアップ言語です。それは文書を構成する要素に分解して、それぞれの要素をタグを使用してマークアップするということです。
 P要素は、Pargraph(段落) である要素で前後を<p>と</p>でマークアップします。
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 段落の意味は小学校レベルですので説明しません。

>文章の折り返し地点は、<br>を使用しない限り
 通常の文書では<br>要素は登場しないはずです。
HTML4.01では「(大住所と小住所のように)ひとつの段落でありながら視覚的に改行したいところ」HTML5では「(詩の内部の改行のうに)改行自体がコンテンツの一部である」とされています。

 日本語の一般表記では、段落は改行されて、段落の最初の文字が1文字字下げされるように表示します。また段落間はマージンを取りません。

 あなたの場合、画像を入れたい場所が文字通り!!!段落ごとなのか、複数の段落を持ちうるブロックなのか質問ではわかりません。

 HTML4.01では、セクションをまとめてマークアップする要素(タグ)が用意されていませんから、「id属性及び class属性と併用することで、文書に構造を付加( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」します。HTML5では、見出しを伴うような集合ならsection( http://standards.mitsue.co.jp/resources/w3c/TR/h … )を使用し、そうでない場合は<div>です。

★HTMLを作成する段階では、それをどのようにプレゼンテーションするかは考えなくて良いです。
★プレゼンテーションはスタイルシートに任せます。
 ⇒構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )


 
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2014/02/28 10:04

それで間違っていません。



自動で改行されないのは、改行しないように指定しているとか、「テキスト」のように日本語ではなく、「abc」だとかです。

<!DOCTYPE html>
<html lang="ja">
<head>
<style type="text/css">
* {
margin: 0;
padding: 0;
border: none;
}
p {
background: #9ff url() no-repeat 0 0 ;
width:691px;
padding: 16px 230px 16px 30px;
}
</style>
</head>
<body>
<p>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p>
</body>
</html>
    • good
    • 0
この回答へのお礼

丁寧にご回答いただきありがとうございました!

お礼日時:2014/02/28 10:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報