1

我今天在这里阅读了很多问题,希望无济于事地回答我的问题,所以我希望这里有人可以帮助我。

我正在尝试将我的网站发展为响应式网页设计,并且图像有问题。

问题:

我正在尝试从标记为背景图像的 css 中加载图像,但由于我正在加载它们的容器中没有内容,因此将高度设置为 auto 将导致没有图片,因为容器在技术上为 0 而没有任何内容。我需要将高度设置为自动,因为我需要图像与网页一起缩放,以便在没有大的空白区域的情况下保持比例。

我知道要有我的背景图像比例,我必须将我的 css 设置为:

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

同样,这对我不起作用的原因是因为我希望将背景图像用作没有任何内容的实际图像。由于没有内容,因此图像不会显示。我想知道是否有办法解决这个问题。

我选择通过 css 加载图像的原因是因为我希望能够基于查看者设备(台式机、手机、平板电脑)加载特定图像的多个版本(从小到大的文件大小按特定设备大小缩放) , ETC)。

只是为了涵盖所有理由,我想提一下,我在 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

您可以为内容容器设置最小高度,这样容器在没有内容时不会折叠到 0 的高度:min-height对您有用。

或者,您可以在已定义高度的父元素上设置背景图像。

p/s:如果您不想要丑陋的空白,因为背景无法覆盖整个容器,那么您应该使用background-size: cover. 您将保留图像的纵横比,并且浏览器将相应地缩放背景图像,使其最短的轴将延伸到完全覆盖容器所需的距离。

于 2013-02-26T10:12:07.473 回答
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 回答