我正在尝试自定义由 LESS 代码驱动的“响应式”Bootstrap 主题,但遇到了一些我无法解决的问题。首先,让我向您展示代码:
这是HTML:
<div class="row-fluid">
<div class="span7">
<div class="hero-unit">
<h2 class="gw-tweak2">This is line 1.</h2>
<h1 class="gw-tweak2">This is (big) line 2.</h1>
</div>
</div>
<div class="gw-tweak3 span5">
<img src="img/portrait-square-nobkgd-250sq.png" />
</div>
</div>
这是相关的LESS代码:
.hero-unit {
background-color: @backgd-color;
h2.gw-tweak2 {
color: lighten(@subhead-color, 6%);
font-size: 22px;
}
h1.gw-tweak2 {
color: darken(@subhead-color, 8%);
font-size: 44px;
}
}
div.row-fluid>div.gw-tweak3 { // gw: applies to the span4 div
// that contains the portrait img
float: left;
}
我试图通过使用“gw-tweak2”和“gw-tweak3”类缩小规则选择器来防止我的更改可能导致的副作用。(仅供参考,“gw-”在那里,所以我可以快速找到我的更改。)
HTML 代码描述了我网页的水平部分。左边是 Bootstrap 所说的“英雄单元”(把它想象成一个格式化的文本框),右边是一张 250x250 像素的照片。
对于那些不知道“响应式”是什么意思的人来说,这意味着随着网页宽度的缩小,页面的各种元素会调整大小并重新排列,以使生成的页面始终看起来不错。(这样,相同的网页在计算机、平板电脑和智能手机上看起来都可以接受。)
这是我想要的效果(在最适合台式电脑的网页尺寸范围内):随着网页宽度的减小,英雄单元的高度增加。发生这种情况时,图像会向下移动,使其相对于英雄单位的高度垂直居中。
以下是实际发生的情况:有一段时间,图像的垂直定位保持不变。然后在某个时刻,图像开始缩小,同时开始向假想的水平线漂移,该水平线穿过英雄单位的顶部边界(即,该代码定义的区域的开始)。
这是一个似乎与问题密切相关的观察:当我使用 Firebug 突出显示给定 HTML 标记“覆盖”的区域时,我发现“span7”区域(英雄单元)的高度和“span5”区域不同。(我假设 Bootstrap 会使它们都具有相同的高度——毕竟,“行流体”div
似乎代表网页的一个矩形切片。)此外,随着网页变窄,“span5”元素的区域收缩以完全覆盖img
收缩。
也许无能为力;我看过一些网页说垂直居中元素不是 HTML 所做的事情。但是,即使是对 Bootstrap 为何表现出我所描述的方式的一些见解,也可以帮助我以一种使结果不那么可怕的方式来修改当前的行为。