【问题标题】:html text on responsive background image响应式背景图像上的 html 文本
【发布时间】:2015-03-09 08:46:05
【问题描述】:

我想实现以下目标:

有背景图片的地方,上面有文字(文字位置是 bootstrap offset-6 col-6)

而且它是响应式的。

问题是,与传统背景不同,我确实关心背景图像如何被截断,无论宽度如何,我都需要手机可见。

我试过了: background: url(background-photo.jpg) center center cover no-repeat fixed;

还有imgHow to get div height to auto-adjust to background size? 的隐形欺骗

在所有情况下电话都会被截断

我们将不胜感激

编辑
根据要求 - 原始 div 结构是:

<div id="hungry">
    <div class="col-xs-offset-6 col-xl-offset-6 col-xs-6 col-xl-6">
        <p>Hungry doesn't always happen in the kitchen</p>
    </div>
</div>

但是我把它改成任何可行的都没有问题......

【问题讨论】:

  • 您是在寻找纯 CSS 还是 JavaScript 可以?另外,您是否使用.jumbotron(如建议的解决方案中所示)?而且,图片是占据整个屏幕宽度还是只占据容器大小?
  • 整个宽度。我更喜欢 CSS 解决方案,但一个 JS 解决方案会做(如果它解决了问题) - 目前我正在使用常规 div 所有宽度 - 如果有帮助可以使用 jumbotron...
  • 没关系,我只是想弄清楚HTML结构是什么(可以,将必要的divs作为问题的一部分发布)

标签: html css twitter-bootstrap


【解决方案1】:

JavaScript 解决方案

我知道这不是一个纯 CSS 的解决方案,因为我使用 JavaScript,但在我们寻找 CSS 时,它可以作为临时解决方案提供帮助。

HTML 将与您发布的相同:

<div id="hungry">
    <div class="col-xs-offset-6 col-xl-offset-6 col-xs-6 col-xl-6">
        <p>Hungry doesn't always happen in the kitchen</p>
    </div>
</div>

id 为“hungry”的 div 的 CSS 如下所示:

#hungry {
    background:url('http://i.stack.imgur.com/7xasp.jpg') no-repeat center center ;
    background-size:cover;
    width:100%;
}

最后,使用 JavaScript(我使用 jQuery 使其更容易),您可以根据屏幕宽度调整 #hungry 的高度:

// you know the size for your image
imageWidth = 1919;
imageHeight = 761;
imageProportion = imageHeight/imageWidth;

function resizeJumbo() {
    $("#hungry").css({ height: $(window).width() * imageProportion });
}

$(window).on("resize", function() {
    resizeJumbo();
});

$(document).ready(function() {
    resizeJumbo();
});

你可以看到这个小提琴的演示:http://jsfiddle.net/hyfz0Lga/

仅使用 CSS 的解决方案

只需为饥饿的 div 更新一点 CSS:

#hungry {
    background:url('http://i.stack.imgur.com/7xasp.jpg') no-repeat center center ;
    background-size:cover;
    width:100%;
    padding-top:20%;
    padding-bottom:20%;
}

您可以在这里看到它的工作原理:http://jsfiddle.net/hyfz0Lga/1/

为什么是padding-top:20%padding-bottom:20%

这些值与图片的大小以及它们之间的比例有关。在您的情况下:宽度 = 1919 和高度 = 761,因此宽度和高度之间的比例为 (761 / 1919) * 100 = 39.65%。只需在顶部添加一半的值,在底部添加一半的值,文本将始终位于中间,而图片将始终成比例。

我知道这有点“hacky”,并且会玩弄一些数据,但它似乎运作良好。

【讨论】:

  • 现在,开始寻找纯 CSS 的解决方案:P
  • 酷...我喜欢纯 CSS 的解决方案。我想我试过这个但没有成功 - 但也许它会引导你朝着正确的方向前进stackoverflow.com/a/22211990/429249
  • @Boaz 我刚刚使用纯 CSS 选项更新了解决方案。这有点“俗气”,但似乎工作正常
  • 太棒了-如果您能解释为什么它可以解决问题(所以我会学到一些东西)-我将不胜感激。谢谢!
  • 我会把它作为编辑放在响应中,因为知道图片的大小会有点影响
【解决方案2】:

您可以尝试调整 Bootstrap 3 中的 jumbotron 类,就像我为我的网站所做的那样。

.jumbotron {
    background: url('background-photo.jpg') no-repeat center center;
}

你可以根据你想要的尺寸来改变 jumbotron 的尺寸。

<div row jumbotron>
    <div class="col-md-6 col-md-offset-6">text</div>
</div>

【讨论】:

  • 没有用...文字的高度很紧(我可以添加填充)但手机仍然无法显示屏幕
  • @Boaz 你试过添加
    text
    吗?可能是文本的解决方案。您还可以为移动设备添加 col-xs-12。这可能会奏效。
  • 如果您仍然认为您的答案解决了问题 - 您可以制作一个 JSFiddle 来“证明”它吗? (拍下我上传的图片并在上面打上文字)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
相关资源
最近更新 更多