13

当浏览器大小改变/在不同大小的设备上时,我需要一组在语义上都相关的 html 元素保持在一起并在一个块中移动。也就是说,如果其中一个元素由于宽度不足以包含整个分组而移动到下一个“行”,则所有元素都应该向下移动。

IOW,这有点像文字处理文档中的某些项目分组所具有的“保持在一起”属性。

更具体地说,假设我有以下元素的集合:

1) an anchor tag, filling out a first "column"
2) a collection of tags, to the right of the anchor tag, consisting of:
(a) a div, followed by a <br/>
(b) a cite, followed by a <br/>
(c) another div, followed by a <br/>
(d) two or three anchor tags that are aligned side-by-side at the bottom of the second "column"

综上所述,如果“行”中的第二个“列”没有足够的空间,而不是保留第一个“列”中的元素并将第二列中的元素向下移动到下一个“行”,在第一列中应该遵守它的兄弟姐妹,并始终与它们保持在同一“行”上(我将“行”和“列”放在引号中,因为我没有使用 html 表,而那些只存在于虚感)。

如果您发现这有点难以想象(我不怪您),请查看小提琴:http: //jsfiddle.net/W7CYC/8/

注意:将分组包装成 html5 没有帮助。

这是代码:

HTML:

<div class="yearBanner">2013</div>
<section>
<a id="mainImage" class="floatLeft" href="https://rads.stackoverflow.com/amzn/click/com/0299186342" rel="nofollow noreferrer"><img height="240" width="160" src="http://ecx.images-amazon.com/images/I/51usxIl4vML._SY346_.jpg"></a>

    <div id="prizeCategory" class="category">BIOGRAPHY</div>
    <br/>
<cite id="prizeTitle" class="title">Son of the Wilderness: The Life of John Muir</cite>

    <br/>
    <div id="prizeArtist" class="author">Linnie Marsh Wolfe</div>
    <br/>
    <img class="floatLeft" height="60" width="40" src="http://ecx.images-amazon.com/images/I/51usxIl4vML._SY346_.jpg">
    <img class="floatLeft" height="60" width="40" src="http://ecx.images-amazon.com/images/I/51usxIl4vML._SY346_.jpg">
    <img class="floatLeft" height="60" width="40" src="http://ecx.images-amazon.com/images/I/51usxIl4vML._SY346_.jpg">
</section>
<section>
<a class="floatLeft" href="https://rads.stackoverflow.com/amzn/click/com/0299186342" rel="nofollow noreferrer"><img height="240" width="160" src="http://ecx.images-amazon.com/images/I/51usxIl4vML._SY346_.jpg"></a>

    <div class="category">BIOGRAPHY</div>
    <br/>
<cite class="title">Son of the Wilderness: The Life of John Muir</cite>

    <br/>
    <div class="author">Linnie Marsh Wolfe</div>
    <br/>
    <img height="60" width="40" src="http://ecx.images-amazon.com/images/I/51usxIl4vML._SY346_.jpg">
    <img height="60" width="40" src="http://ecx.images-amazon.com/images/I/51usxIl4vML._SY346_.jpg">
    <img height="60" width="40" src="http://ecx.images-amazon.com/images/I/51usxIl4vML._SY346_.jpg">
</section>

CSS:

body {
    background-color: black;
}
.floatLeft {
    float: left;
    padding-right: 20px;
    padding-left: 5px;
}
.yearBanner {
    font-size: 3em;
    color: white;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    float: left;
    padding-top: 64px;
}
.category {
    display: inline-block;
    font-family: Consolas, sans-serif;
    font-size: 2em;
    color: Orange;
    width: 160px;
}
.title {
    display: inline-block;
    font-family: Calibri, Candara, serif;
    color: Yellow;
    width: 160px;
}
.author {
    display: inline-block;
    font-family: Courier, sans-serif;
    font-size: 0.8em;
    color: White;
    width: 160px;
}

jQuery:

$('#prizeCategory').text("Changed Category");
$('#prizeTitle').text("Changed Title that spans two rows");
$('#prizeArtist').text("Changed Author and co-author");
$('#mainImage img').attr("src", "http://ecx.images-amazon.com/images/I/61l0rZz6mdL._SY300_.jpg");
$('#mainImage img').attr("height", "200");
4

3 回答 3

12

您只需将项目分组div(或者如果您想使用section,也可以)。通过一点CSS提示,您可以在包装器中对项目进行分组。不幸的是,没有比保持在一起这样的属性,但您可以执行以下操作:

section.wrapper {
  min-width: 400px; /* Minimum width of your wrapper element */
  overflow: hidden;
  display: inline-block;
}

min-width可帮助您将元素按顺序保存在包装器中。选择最适合您情况的值。
overflow with value hidden让你的包装器理解并添加浮动元素的宽度和高度值。
display with value inline-block只要有足够的空间,就让所有包装器彼此相邻排序,如果没有,包装器跳转到其他行。

http://www.w3schools.com/提供了很好的资源来理解和学习 CSS、HTML 和 Web 技术。很有用。

编辑
正如我编辑的那样,在这种情况下,最小宽度宽度最大宽度更适合

于 2013-06-16T00:09:22.873 回答
1

这不是 HTML 问题,了解在相对定位中使用 CSS 绝对位置:

http://css-tricks.com/absolute-positioning-inside-relative-positioning/

于 2013-06-16T08:28:14.943 回答
1

引导网格

Bootstrap 包含一个强大的移动优先 flexbox 网格系统,用于构建各种形状和大小的布局。它基于 12 列布局并具有多个层,每个层用于媒体查询范围。您可以将它与 Sass mixins 或我们预定义的类一起使用。

代码示例:

  <div class="row">
    <div class="col-4">.col-4</div>
    <div class="col-4">.col-4</div>
    <div class="col-4">.col-4</div>
  </div>

  <div class="row">
    <div class="col-sm-4">.col-sm-4</div>
    <div class="col-sm-4">.col-sm-4</div>
    <div class="col-sm-4">.col-sm-4</div>
  </div>

  <div class="row">
    <div class="col-md-4">.col-md-4</div>
    <div class="col-md-4">.col-md-4</div>
    <div class="col-md-4">.col-md-4</div>
  </div>

  <div class="row">
    <div class="col-lg-4">.col-lg-4</div>
    <div class="col-lg-4">.col-lg-4</div>
    <div class="col-lg-4">.col-lg-4</div>
  </div>

  <div class="row">
    <div class="col-xl-4">.col-xl-4</div>
    <div class="col-xl-4">.col-xl-4</div>
    <div class="col-xl-4">.col-xl-4</div>
  </div>

输出:这是默认输出: 在此处输入图像描述 当我的浏览器大小减小到小于 1200 像素时 在此处输入图像描述

在这里,我们有四行,第一行将始终在同一条拖线上。

当最大宽度 >=768px 时,第二行将保留

当最大宽度 >=992px 等时,第三行将保留。我已在 Grids 选项中插入此详细信息

这是输出的 gif 演示

在此处输入图像描述

您可以将这些类混合在一起。例如

  <div class="row">
    <div class="col-sm-4 col-xs-6">first-col</div>
    <div class="col-sm-4 col-xs-3">second-col</div>
    <div class="col-sm-4 col-xs-3">third-col</div>
  </div>

意思是如果小型设备我想要三列相同但在非常小的设备中我希望第一列是空间的一半,每两列是 25%。

现在,正如您在每种尺寸中看到的那样,您可以设置每行和每列应该执行的行为,如果您想始终一起移动,您可以使用col-*不带任何前缀的类。网格选项

                (<768px)   (≥768px)   (≥992px)      (≥1200px)
Grid behavior   Horizontal at all times Collapsed to start, horizontal above breakpoints
Container width None (auto) 750px      970px          1170px
Class prefix    .col-xs-   .col-sm-    .col-md-       .col-lg-
# of columns    12
Column width    Auto       ~62px     ~81px  ~97px
Gutter width    30px (15px on each side of a column)
Nestable        Yes
Offsets         Yes
Column ordering Yes

如果您需要,这里有更多详细信息

于 2017-07-07T06:16:43.857 回答