【发布时间】:2020-01-23 12:23:19
【问题描述】:
我开始了一个项目,我试图在不使用@media 的情况下使其具有响应性。 我正在使用 flexbox 和网格,但对于英雄背景,我在左侧和右侧有一个文本,当屏幕尺寸变小时,我有一个与文本重叠的图像。 我想要做的是当尺寸变小时图像在文本下方不重叠。
https://codepen.io/claudiuu/pen/PowVQvL
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
body {
font-family: "Open Sans", sans-serif;
}
.header {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-template-areas:
"logo logo logo nav nav nav"
"hero hero hero hero hero hero";
background: rgb(233, 98, 123);
background: linear-gradient(
63deg,
rgba(233, 98, 123, 1) 0%,
rgba(191, 79, 212, 1) 100%
);
}
.logo,
.nav {
background-color: rgba(255, 255, 255, 0.1);
color: #fff;
padding: 1rem;
}
.logo {
grid-area: logo;
}
.nav {
grid-area: nav;
}
.nav ul {
display: flex;
list-style: none;
}
.hero {
grid-area: hero;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
overflow: hidden;
min-height: 50vh;
padding: 6vmax;
color: #fff;
}
.h1-hero {
font-size: 3rem;
font-weight: 600;
}
.txthero {
flex: 1;
max-width: 30vmax;
min-width: 40vmin;
}
.img-hero {
grid-area: hero;
display: flex;
background-image: url(https://www.apple.com/uk/music/images/overview/hero__drdt6ucq1rqu_small.png);
background-position: center right;
background-repeat: no-repeat;
}
.main-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(15em, 1fr));
/* background-color: rgb(233, 98, 123); */
margin: 1.5rem;
gap: 3em;
justify-content: center;
}
.bg-box {
background-color: #fafafa;
padding: 1.2rem;
border-radius: 1rem;
}
【问题讨论】:
-
你有两个网格区域组成英雄部分(
.hero和.img-hero)使用相同的网格区域名称(grid-area: hero)。考虑将两个部分分成不同的网格区域。您可能还需要考虑在 HTML 中而不是 CSS 中获取图像。这两种调整都可以让您更好地控制位置和行为。 -
你好迈克尔,非常感谢你的重播。关键是我想将图像保留在 CSS 中而不是 HTML 中。经过几个小时的更改代码并思考后,我弄清楚了该怎么做。 codepen.io/claudiuu/pen/yLyZQdP