【发布时间】:2013-10-18 15:14:58
【问题描述】:
我已经创建了我要解决的问题的简化版本。请看一下
HTML:
<div class="container">
<div class="bg-left">
<div class="content">
Some content here
</div>
</div>
</div>
CSS:
.container {
display: block;
height: 200px;
width: 100%;
background-color: #e2e2e2;
}
.bg-left {
background-image: url('http://i.imgur.com/hDheuGJ.png');
background-repeat:no-repeat;
background-position: 0px 0px;
width: 100%;
height: 100%;
}
.content {
width: 960px;
margin: 0 auto;
font-size: 20px;
}
JSFiddle: http://jsfiddle.net/gnPC6/
此代码包含:
1) 100% 宽度的 DIV,其中包含位于左上角的背景图像(即黑色三角形)
2) 在这个 div 中还有另一个 div,例如960px 宽且居中。部分内容会放在这里。
问题:如果调整浏览器窗口的宽度,左上角的黑色三角形仍然可见,结果是这张图片遮挡了前景内容。
我想要实现的是:
1) 如果用户的浏览器调整到1050px或以下,那么黑色三角形的背景位置会调整,使得浏览器调整得越多,黑色三角形就越不明显(即背景图片动态滑动离开屏幕左侧)...
如果用户窗口为1051px或以上,背景位置应保持为0px 0px;
如果用户窗口是1050px,背景位置应该是0px -1px;
如果用户窗口是1049px,背景位置应该是0px -2px;
如果用户窗口是1048px,背景位置应该是0px -3px; 等等
这实际上是我想要实现的目标,但我不知道从哪里开始使用 Javascript 来解决这个问题。
如果您有任何建议,请告诉我,非常感谢!
编辑我知道媒体查询,但我不相信他们可以有效地解决这个问题。我不想仅仅根据浏览器的宽度更改 CSS,我希望背景位置随着浏览器大小的调整而动态变化。为此,我确信需要一个 javscript 解决方案,而不是数百个 @media 声明
【问题讨论】:
-
您想要做的事情可以使用 CSS 媒体查询来完成。去读吧。
-
如上所述,媒体查询可以轻松解决这个问题。一些链接可以帮助您:developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries,webdesignerwall.com/tutorials/css3-media-queries
-
谢谢,但我已经阅读了媒体查询。据我所知,我可以指定
@media (max-width: 1050px) {.bg-left { background-position: 0px -1px }}之类的内容,但我该怎么做才能使背景位置随着宽度逐像素减小而动态改变? -
是的,媒体查询可以用于执行此操作,但这样做效率非常低。请注意,OP 希望将 bg 图像移动 1px 以获取可能的数百个断点。重组代码会更有效,这样图像就不必移动(或者它在没有媒体查询帮助的情况下重新定位)。
-
实际上这个要求是没有意义的。唯一将浏览器调整到如此程度的观众是开发人员。 OP 应该专注于 MQ 设计突破点而不是像素完美问题。
标签: jquery css resize background-position