CSS @media div class 未调整大小
CSS @media div class not resizing
我在 "How TO - Align Images Side By Side" 上关注 W3Schools 的教程,位于 https://www.w3schools.com/howto/howto_css_images_side_by_side.asp
我有以下 div class 称为 column
,我正在尝试在屏幕宽度发生变化时调整它的大小,以适应不同的屏幕尺寸移动和桌面。
HTML代码如下:
<div class="row">
<div class="column">
<img id="firstImage" style="width: 100%">
<figcaption id="firstCaption"></figcaption>
</div>
<div class="column">
<img id="secondImage" style="width: 100%">
<figcaption id="secondCaption"</figcaption>
</div>
<div class="column">
<img id="thirdImage" style="width: 100%">
<figcaption id="thirdCaption"></figcaption>
</div>
</div>
在桌面(默认)模式下,三个图像排成一行,如下所示:https://i.imgur.com/a/zg2j5rv.png
这是由以下 CSS 代码定义的:
.column {
float: left;
width: 33.33%;
padding: 5px;
}
.row::after {
content: "";
clear: both;
display: table;
}
但是当屏幕宽度达到768px或更小(手机屏幕)时,我打算让图片垂直排列,这样图片就会上下排列。我添加了以下 CSS 代码来设置此更改的样式:
@media only screen and (max-width: 768px) {
[class="column"] {
display: block;
width: 100%;
}
}
在上面的代码中,我的逻辑是让每个column
div 以块的形式列出,其宽度横跨整个屏幕宽度。这样,每个 div 将被推到一个新行,而 div 跨越整个宽度。但是,当我调整屏幕大小时,图像仍保持在水平行中,因为它们被挤压成一行中的 3 个图像。
关于如何在屏幕宽度减小时让每个 column
div 移动到新行的任何想法?非常感谢任何帮助!
试试这个。这是三列布局,但您应该可以根据需要更改百分比。
.col-container {
display: table;
width: 100%;
}
.imagegroup {
width: 100%;
background-color: #ffffff;
}
.img-container {
display: table;
float: left;
width: 33.3%;
}
@media only screen and (max-width: 500px) {
.img-container {
display: table;
float: left;
width: 100%;
}
}
<div class="imagegroup">
<div class="col-container">
<div class="img-container">
<p>Image 1 goes here</p>
</div>
<div class="img-container">
<p>Image 2 goes here</p>
</div>
<div class="img-container">
<p>Image 3 goes here</p>
</div>
</div>
</div>
它们现在应该堆叠起来。
UPDATE
只需单击代码的全屏 link,然后调整 window 的大小。这些 DIV 中的任何内容都会相互堆叠。
[class="column"]
选择器不会覆盖 .column
选择器,即使放在后面的代码中也是如此,因为它是一个属性选择器并且比 class 选择器具有更低的特异性。 1
您也应该在@media 查询中使用.column
。注意 [class="stuff"]
是一个比 .stuff
差得多的选择器,因为它会在您向同一元素添加新的 class 时停止工作。
这应该有效:
.column {
float: left;
width: 33.33%;
padding: 5px;
}
@media only screen and (max-width: 768px) {
.column {
display: block;
width: 100%;
}
}
1 我刚刚测试过(以确保我的答案是正确的)并且 Chrome 和Firefox 现在足够聪明,可以认识到这样一个事实,即使 [class="column"]
是一个属性类型选择器,因为它引用了 class
属性,所以它们赋予它适当的 class
特异性。但是,第二个参数(当另一个 class 添加到元素时它停止作为选择器工作)仍然有效。
我在 "How TO - Align Images Side By Side" 上关注 W3Schools 的教程,位于 https://www.w3schools.com/howto/howto_css_images_side_by_side.asp
我有以下 div class 称为 column
,我正在尝试在屏幕宽度发生变化时调整它的大小,以适应不同的屏幕尺寸移动和桌面。
HTML代码如下:
<div class="row">
<div class="column">
<img id="firstImage" style="width: 100%">
<figcaption id="firstCaption"></figcaption>
</div>
<div class="column">
<img id="secondImage" style="width: 100%">
<figcaption id="secondCaption"</figcaption>
</div>
<div class="column">
<img id="thirdImage" style="width: 100%">
<figcaption id="thirdCaption"></figcaption>
</div>
</div>
在桌面(默认)模式下,三个图像排成一行,如下所示:https://i.imgur.com/a/zg2j5rv.png 这是由以下 CSS 代码定义的:
.column {
float: left;
width: 33.33%;
padding: 5px;
}
.row::after {
content: "";
clear: both;
display: table;
}
但是当屏幕宽度达到768px或更小(手机屏幕)时,我打算让图片垂直排列,这样图片就会上下排列。我添加了以下 CSS 代码来设置此更改的样式:
@media only screen and (max-width: 768px) {
[class="column"] {
display: block;
width: 100%;
}
}
在上面的代码中,我的逻辑是让每个column
div 以块的形式列出,其宽度横跨整个屏幕宽度。这样,每个 div 将被推到一个新行,而 div 跨越整个宽度。但是,当我调整屏幕大小时,图像仍保持在水平行中,因为它们被挤压成一行中的 3 个图像。
关于如何在屏幕宽度减小时让每个 column
div 移动到新行的任何想法?非常感谢任何帮助!
试试这个。这是三列布局,但您应该可以根据需要更改百分比。
.col-container {
display: table;
width: 100%;
}
.imagegroup {
width: 100%;
background-color: #ffffff;
}
.img-container {
display: table;
float: left;
width: 33.3%;
}
@media only screen and (max-width: 500px) {
.img-container {
display: table;
float: left;
width: 100%;
}
}
<div class="imagegroup">
<div class="col-container">
<div class="img-container">
<p>Image 1 goes here</p>
</div>
<div class="img-container">
<p>Image 2 goes here</p>
</div>
<div class="img-container">
<p>Image 3 goes here</p>
</div>
</div>
</div>
它们现在应该堆叠起来。
UPDATE
只需单击代码的全屏 link,然后调整 window 的大小。这些 DIV 中的任何内容都会相互堆叠。
1[class="column"]
选择器不会覆盖 .column
选择器,即使放在后面的代码中也是如此,因为它是一个属性选择器并且比 class 选择器具有更低的特异性。
您也应该在@media 查询中使用.column
。注意 [class="stuff"]
是一个比 .stuff
差得多的选择器,因为它会在您向同一元素添加新的 class 时停止工作。
这应该有效:
.column {
float: left;
width: 33.33%;
padding: 5px;
}
@media only screen and (max-width: 768px) {
.column {
display: block;
width: 100%;
}
}
1 我刚刚测试过(以确保我的答案是正确的)并且 Chrome 和Firefox 现在足够聪明,可以认识到这样一个事实,即使 [class="column"]
是一个属性类型选择器,因为它引用了 class
属性,所以它们赋予它适当的 class
特异性。但是,第二个参数(当另一个 class 添加到元素时它停止作为选择器工作)仍然有效。