当浏览器大小改变/在不同大小的设备上时,我需要一组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");
答案 0 :(得分:7)
您只需使用div
对项目进行分组(或者如果您想使用section
,也可以)。稍微提示 CSS ,您可以在包装内对项目进行分组。不幸的是,除了保持在一起之外没有这样的属性,但你可以这样做:
section.wrapper {
min-width: 400px; /* Minimum width of your wrapper element */
overflow: hidden;
display: inline-block;
}
min-width 可帮助您按顺序将元素保留在包装器中。选择最适合您情况的值
值隐藏的溢出可让您的包装器理解并添加浮动元素的宽度和高度值。
带有值 inline-block 的显示只要有足够的空间,就让所有包装器彼此相邻,如果没有,则包装器会跳转到其他行。
http://www.w3schools.com/提供了很好的资源来理解和学习CSS,HTML和网络技术。非常有用。
修改强>
在我编辑时, min-width 或 width 在这种情况下比 max-width
答案 1 :(得分:1)
这不是HTML问题,请了解在相对定位中使用CSS绝对位置:
http://css-tricks.com/absolute-positioning-inside-relative-positioning/
答案 2 :(得分: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>
输出: 这是默认输出: 当我的浏览器大小减少到小于1200px
这里我们有四排,第一排的coumns将始终在同一拖车。
当最大宽度> = 768px
时,第二行将保留当最大宽度>> 992px时,第三行将保留,依此类推。我已在G rids选项中插入此详细信息
这是输出的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
如果您需要,Here会更详细