我创建了一个div
,允许用户选择一个部分名称,它会显示带有标题的相应图片。部分列表和图像完全并排显示,并且两者都占据相同的高度,我遇到了一些麻烦。此外,我的图片标题(figcaption
)不遵守figure
宽度,但我可能只是忽略了这一点。我尝试了其他Stackoverflow问题答案所建议的float
,overflow
,display
属性调整的许多不同组合,但它们似乎都没有产生正确的输出。
这是代码的JSFiddle:http://jsfiddle.net/8We2Y/
代码也包含在这里的代码中。
CSS:
#main {
width: 50%;
padding: 15px;
margin: 0 auto;
}
.gamemode {
background: #eee;
padding: 19px;
border-bottom: 4px solid #ccc;
}
.gamemode:hover {
background: #ccc;
cursor: pointer;
border-bottom: 4px solid #0093dd;
}
.gamemode:selected {
border-bottom: 4px solid #0093dd;
}
#gm-text {
width: 25%;
display: inline-block;
vertical-align: middle;
}
#gm-image {
width: 74.5%;
height: 556px;
background: url(images/survivalimg.png);
background-repeat: no-repeat;
background-position: 50% 50%;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
display: inline-block;
vertical-align: middle;
overflow: hidden;
}
figcaption {
position: absolute;
background: rgba(0,0,0,0.8);
color: #FFF;
margin-top: 415px;
margin-left: -40px;
width: 100%;
padding: 0px 20px;
}
figcaption p {
font-size: 1em;
color: #FFF;
}
#captitle {
font-size: 1.4em;
color: #FFF;
}
如果您查看CSS,您会注意到我对这两个项目的宽度设置为25%和74.5%,这并不是完全100%。如果我将一个设置为75%,它只会移动到一个新行。
HTML:
<div id="main">
<div id="showcase">
<div id="gm-text">
<p class="gamemode" id="survival" onclick="changeImageSurvival();"><i class="fa fa-globe"></i> Survival</p>
<p class="gamemode" id="creative" onclick="changeImageCreative();"><i class="fa fa-building"></i> Creative</p>
<p class="gamemode" id="sg" onclick="changeImageSG();"><i class="fa fa-cutlery"></i> Survival Games</p>
<p class="gamemode" id="factions" onclick="changeImageFactions();"><i class="fa fa-link"></i> Factions</p>
<p class="gamemode" id="kitpvp" onclick="changeImageKitPvP();"><i class="fa fa-bullseye"></i> KitPvP</p>
<p class="gamemode" id="ctf" onclick="changeImageCTF();"><i class="fa fa-flag"></i> Capture the Flag</p>
<p class="gamemode" id="spleef" onclick="changeImageSpleef();"><i class="fa fa-spoon"></i> Spleef</p>
</div>
<div id="gm-image">
<figure>
<figcaption>
<p id="captitle">Section 1</p>
<p id="caption">Section one info.</p>
</figcaption>
</figure>
</div>
</div>
</div>
答案 0 :(得分:1)
#gm-text {
width: 25%;
display: inline-block;
vertical-align: middle;
clear: both;
float:left; /*here */
}
#gm-image {
width: 75%;
height: 556px;
background: url(http://www.wallsave.com/wallpapers/1024x768/red-/22118/red-background-desktop-backgrounds-22118.jpg);
background-repeat: no-repeat;
background-position: 50% 50%;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
display: inline-block;
vertical-align: middle;
clear: both;
}
答案 1 :(得分:1)
这是一个恼人的内联块问题。解决它的一种方法是设置
font-size:0;
在容器元素上。当然,您必须在包含文本的每个子元素上声明所需的字体大小。如果不这样做,font-size:0属性将隐藏任何文本。
更新了JsFiddle:
答案 2 :(得分:0)
你需要摆脱div之间的空间,因为它是内联块。 改变这个,
<div id="gm-text">
</div>
<div id="gm-image">
要
<div id="gm-text">
</div><div id="gm-image">
或者
<div id="gm-text">
</div><!--
--><div id="gm-image">
这样你可以保持25%和75%的宽度。 对于相同的高度问题,请参阅相关问题。 How do I keep two divs that are side by side the same height?