1

私は今日ここでかなりの数の質問を読んで、うまくいけば私の質問に無駄に答えることができたので、ここの誰かが私を助けてくれることを願っています.

Web サイトをレスポンシブ Web デザインに進化させようとしていますが、画像に問題があります。

問題:

背景画像としてラベル付けされたCSSから画像を読み込もうとしていますが、それらを読み込んでいるコンテナにコンテンツがないため、高さを自動に設定すると、コンテナは技術的に0で何もないため、画像が表示されませんコンテンツ。高さを auto に設定する必要があるのは、画像をウェブページに合わせて拡大縮小して、大きな空の空白がなくても画像が比例するようにする必要があるためです。

背景画像のスケールがあることを理解しています。css を次のように設定する必要があります。

background: url(../images/image.jpg);
background-repeat: no-repeat;
height: auto;
width: 100%;

繰り返しますが、これがうまくいかない理由は、背景画像をコンテンツなしで実際の画像として使用しようとしているためです。コンテンツがないため、画像は表示されません。私が知りたいのは、この問題を回避する方法があるかどうかです。

css を介して画像を読み込むことを選択する理由は、閲覧者のデバイス (デスクトップ、携帯電話、タブレット) に基づいて、特定の画像の複数のバージョン (特定のデバイス サイズに合わせてスケーリングされた小さいファイル サイズから大きいファイル サイズ) をロードできるようにするためです。など)。

すべての根拠をカバーするために、html で img タグを使用し、css を介してさまざまなデバイス用に再スケーリングしたことを述べたいと思います。ただし、可能であれば、css を介して画像を読み込みたいと考えています。これにより、デバイス サイズごとに異なるファイル サイズを読み込んで、モバイル デバイスからのユーザー エクスペリエンスを向上させることができます。これを行う別の方法があれば、アドバイスしてください。私はこれに 26 時間の作業時間を費やしたので、助けていただければ幸いです。

編集:

コーディングをシンプルに保つためのテスト テンプレートを開始しました。これにより、誰もが私が作業しているものを確認でき、機能しない理由を診断するのに役立つ可能性があります。

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


<script type="text/javascript" src="js/jquery.js"></script>

<link href="css/test.css" rel="stylesheet" type="text/css" media="screen">
<link href="css/print.css" rel="stylesheet" type="text/css" media="print">

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-type" content="cache" />
<meta name="robots" content="INDEX,FOLLOW" />
<meta name="keywords" content="Enter Keywords" />
<meta name="description" content="Description Here" />

<link rel="shortcut icon" href="/s.ico" >



<meta id="view" name="viewport" content="width=device-width, initial-scale=1.0" />

<!--[if lt IE 9]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <link rel="stylesheet" type="text/css" href="includes/stylesheet_ie.css" />
<![endif]-->


</head>

<body>

    <div class="page">

        <div class="page_content">

                <div class="contentmain"></div>

        </div>
    </div>
</body>
</html>
</body>


</html>

私のCSS:

/* This stylesheet was designed and developed by Chris Converse, Codify Design Studio */

@charset "UTF-8";

/* Text Formatting */

body {
font-family: Arial;
font-size: 12px;
margin: 0px;
padding: 20px;
color: #555;
background: url(../images/back.jpg)
}


.page { font-size: 1em; background-color: #FFF; }

h1 { font-size: 2em; color: #9e472a; margin: 0px 0px .5em 0px; font-weight: normal; }
h2 { font-size: 1.6em; color: #9e472a; margin: 0px 0px .5em 0px; }
h3 { font-size: 1.25em; color: #9e472a; margin: 0em 0px .25em 0px; }
p { margin: 0px 0px 1em 0px; font-size: 1em; }
li { margin: 0px 0px 10px 0px; }
a img { border: none; }
a { color: #f52d1b; }
a:hover { color: #00a2ed; }




/* Layout */

.page { position: relative; margin: 0px auto 0px auto; max-width: 980px; }


.page .page_content { background-color: #fff; padding: 1px 0px 1px 0px; }

.page .page_content .page_content_container_main { width: 100%; float: left; margin:     0px; padding: 0px;  }


.page .page_content .content {
margin: 15px 20px 20px 20px;
padding: 0px;

}


.page .page_content .contentmain {


background: url(../images/mimg-l.jpg);
background-repeat: no-repeat;
height: auto;
width: 100%;
background-size: 100% 100% contain;

私が達成しようとしているものの例は、www.dreamcreationstudios.com/test2.html にあります。これは、img タグを介して行われます。代わりにcssを介して画像をロードすることを除いて、同じ効果を作成できるようにしたいと考えています。これにより、元の画像のトリミングされたバージョンをさまざまな画面サイズでロードできます。ありがとうございました。

4

3 に答える 3

1

これは、背景画像を含む div に padding-bottom を適用することで実行できますが、最初に画像の縦横比を知る必要があります。

.page .page_content .contentmain {
    background: url(../images/mimg-l.jpg);
    background-repeat: no-repeat;
    height: 0; //Make the div 0px high
    padding-bottom: 75%; //Adjust this value to match the image dimensions
    background-size: 100% 100% contain;
}
于 2015-02-22T15:45:04.783 に答える
0

レスポンシブな方法で行うハックがたくさんあります。Dreamweaver のせいではありません。デフォルトでは、ブラウザはコードを調べて、子要素を持たない空白の要素があるかどうか、または幅と高さが定義されているかどうかを確認します。適切な幅を定義しましたが、残念ながら、このコンテナーの高さを取得できませんでした。これを行う最善かつ迅速な方法は、そのbackground-sizeプロパティを定義することです。コンテナーの高さは気にしません。

background: url(../images/image.jpg);
background-repeat: no-repeat;
height: auto;
width: 100%;
background-size: 100% 100%; // example, you can change it.

また、すべてのデバイスで完全に機能します。

于 2013-02-26T18:14:32.183 に答える
0

コンテンツがない場合にコンテナーが高さ 0 に折りたたまれないように、コンテンツ コンテナーの最小の高さを設定することができmin-heightます。

または、すでに高さが定義されている親要素に background-image を設定することもできます。

p/s: 背景がコンテナ全体を覆うことができないために醜い空白が必要ない場合は、 を使用する必要がありますbackground-size: cover。画像の縦横比を保持すると、ブラウザはそれに応じて背景画像をスケーリングし、コンテナを完全に覆うために必要な限り最短軸が伸びるようにします。

于 2013-02-26T10:12:07.473 に答える