css - 图像从网格和尺寸问题中消失
问题描述
我对编码很陌生,我正在尝试使用网格。但我有点卡住了。我有以下 codePan 项目:
* {
box-sizing:border-box
}
body {
height:100vh;
width: 100%;
background-color: red;
padding:0;
margin:0;
}
#wrapper {
background-color:blue;
height:100%;
width:100%;
margin:0;
padding:0;
display: grid;
grid-template-areas:
"nav"
"content"
"footer" ;
grid-template-columns: 1fr;
grid-template-rows: .8fr 1fr .8fr ;
}
#nav {
background-color: yellow;
grid-area: "nav";
position: sticky;
top: 0;
}
#content {
background-color: pink;
grid-area: "nav";
display:flex;
flex-direction: column;
}
footer {
background-color: brown;
grid-area: "nav";
}
#box1 {
background-color:purple;
height:50%;
}
#box2 {
background-color: blue;
height:60%;
display:flex;
flex-direction: column;
}
.image {
height: auto;
width: 400px;
position: relative;
top:-150px;
}
button {
height: 90px;
width: 400px;
background-color: #262A58;
color: white;
font-size: 1.5em;
font-family: 'EightOne';
border-radius: 10px;
border-style: none;
cursor: pointer;
}
<div id="wrapper">
<div id="nav"> nav </div>
<div id="content">
<div id="box1">
<h1>flower</h1>
</div>
<div id="box2">
<img class="image" src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.goldpetal.net%2Fmedia%2Fimages%2Fproduct_gallery%2FGerbera_Flower_12.jpg&f=1&nofb=1" alt="">
<button> buy flower </button>
</div>
</div>
<footer>
footer
</footer>
</div>
我想要的是与这张照片类似的东西: 图片
不幸的是,我无法定位 Box2 中的内容,因为按钮完全从网格中熄灭。我尝试了几个选项,但最后它总是与 Box2 中的内容有些问题。
如果有人可以给我一个建议。可能我使用错误的方式网格...
谢谢!
解决方案
让您的网格定义区域的大小,并使用 Flexbox 来布置您的内容。
您完全可以使用 CSS Grid 实现这种布局。该按钮溢出了它的内容区域,因为网格区域#box2
的高度是固定的60%
,但是你的和你的都比那个高。基本上,您的图像按下按钮。content
.image
button
你不需要在你的内容上设置明确的高度,因为网格已经处理好了。
白蓝色背景有点棘手,因为它与图像的边缘不完全对齐。但是您可以通过内容容器上的背景渐变来实现这种效果。
看看这个可行的解决方案作为灵感:
body {
height: 100vh;
padding: 0;
margin: 0;
}
#wrapper {
height: 100%;
width: 100%;
display: grid;
grid-template-areas:
'nav'
'content'
'footer';
grid-template-columns: 1fr;
grid-template-rows: 64px 1fr 96px;
}
#nav {
grid-area: nav;
position: sticky;
top: 0;
background-color: white;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.2);
}
#content {
grid-area: content;
display: flex;
flex-direction: column;
justify-content: center;
background: linear-gradient(to bottom, transparent 60%, #aad 60%);
align-items: center;
padding: 32px;
}
#content .wrapper {
display: flex;
flex-direction: column;
width: 400px;
}
footer {
grid-area: footer;
}
.image {
border: solid 16px #aad;
margin: 16px;
}
button {
padding: 8px 16px;
background-color: #262a58;
color: white;
font-size: 1.5em;
font-family: 'EightOne';
border-radius: 10px;
border-style: none;
cursor: pointer;
margin-top: 32px;
align-self: center;
}
<div id="wrapper">
<div id="nav">nav</div>
<div id="content">
<div class="wrapper">
<h1>flower</h1>
<img
class="image"
src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.goldpetal.net%2Fmedia%2Fimages%2Fproduct_gallery%2FGerbera_Flower_12.jpg&f=1&nofb=1"
alt="Flower"
/>
<button>buy flower</button>
</div>
</div>
<footer>footer</footer>
</div>
推荐阅读
- javascript - 轮播中不同尺寸的图像以垂直居中显示
- php - 我想删除服务器中所有设备中的所有 PHP 会话
- azure - 工作项遇到迭代时的 Azure DevOps
- html - a 标签内的 img 标签不响应背景更改选项
- python - 有没有办法在 python 中使用 sns.barplot 显示不同的颜色?
- python - TypeError: __init__() 在运行 PooledOLS 时得到了一个意外的关键字参数 'entity_effects'
- nutch - nutch 作业失败失败,退出值为 255
- php - 如何识别 WooCommerce hook 'woocommerce_view_order' 使用的代码
- java - 在 AWS Amazon 上自动执行 api
- python - 如何以英寸为单位获得 matplotlib 绘图区域的大小?