html - 当有足够的空间时,div block 如何向下移动?

标签 html css

我有一个相当简单的问题。出于某种原因,即使父 div 中应该有足够的空间,div.actionBar 也会向下移动:

.venueInfoSection {
	position: relative;
        width: 960px;
}

.venueInfoSection .topVenueSection {
	line-height: 0;
	padding: 20px;
}

.venueInfoSection .topVenueSection .mainIconWrapper {
	display: inline-block;
	line-height: 0;
	margin-right: 20px;
	max-width: 88px;
	overflow: hidden;
}

.venueInfoSection .topVenueSection .primaryInfo {
	display: inline-block;
	line-height: 20px;
	vertical-align: top;
	width: 512px;
}

.venueInfoSection .actionBar {
	display: inline-block;
	margin: 58px 0 0 15px;
	text-align: right;
	vertical-align: top;
	width: 285px;
}
<div class="venueInfoSection">
    <div class="topVenueSection">
        <div class="mainIconWrapper"><img src="images/surfspot_88.png" height="88" width="88">
        </div>
        <div class="primaryInfo">
            <div class="venueNameSection">
                <h1 class="venueName" itemprop="name">Title</h1> </div>
            <div class="categories"> <span class="unlinkedCategory">Surf Spot</span> </div>
            <div class="locationInfo"> <span class="venueCity">38 Bourke St</span> </div>
            <div class="bottomVenueSection"></div>
        </div>
        <div class="actionBar"> <span class="saveAction actionBtn"> <div class="saveButton saveToListAction inactive" title="Save to my saved places!"> <span class="saveAction actionBtn"><span class="buttonLeft"><img src="images/button_icon_saveribbon-9c5999c2ee53e7d96.png" height="16" width="16"></span><span class="buttonRight unsaved"><span class="label">Save</span></span>
            </span>
        </div>
        </span><span class="shareAction actionBtn"> <div class="doubleShareButton" title="Share this place with friends!"> <span class="shareAction actionBtn"><span class="buttonLeft"><img src="images/button_icon_saveribbon-9c5999c4703e7d96.png" height="16" width="16"></span><span class="buttonRight"><span class="label">Share</span></span>
        </span>
    </div>
    </span>
</div>
</div>
</div>

如果减去宽度:

  • venueInfoSection 宽度为 960px
  • topVenueSection 有 20px 的内边距
  • mainIconWrapper 为 88px 宽 + 20px 边距
  • primaryInfo 宽度为 512px
  • actionBar 为 285px 宽 + 15px 边距

所以 960-20-20-88-20-512-285-15=0

为什么即使有足够的空间,actionBar 也会向下移动?它似乎只有在宽度设置为 277px 时才会与其他两个 block 内联。

最佳答案

当您将 display 设置为 inline-block 时,HTML 中的某些空白将呈现为每个元素之间的间距。该空白是导致您的布局中断的原因。

最简单的替代方案是将 display: inline-block 的每个实例替换为 float: left 尽管有无数的替代方案(例如:参见“Fighting the Space Between”行内 block 元素的 https://css-tricks.com/fighting-the-space-between-inline-block-elements/ )

.venueInfoSection {
	position: relative;
        width: 960px;
}

.venueInfoSection .topVenueSection {
	line-height: 0;
	padding: 20px;
}

.venueInfoSection .topVenueSection .mainIconWrapper {
	float: left;
	line-height: 0;
	margin-right: 20px;
	max-width: 88px;
	overflow: hidden;
}

.venueInfoSection .topVenueSection .primaryInfo {
	float: left;
	line-height: 20px;
	vertical-align: top;
	width: 512px;
}

.venueInfoSection .actionBar {
	display: inline-block;
	margin: 58px 0 0 15px;
	text-align: right;
	vertical-align: top;
	width: 285px;
  background: yellow;
}
<div class="venueInfoSection">
    <div class="topVenueSection">
        <div class="mainIconWrapper"><img src="images/surfspot_88.png" height="88" width="88">
        </div>
        <div class="primaryInfo">
            <div class="venueNameSection">
                <h1 class="venueName" itemprop="name">Title</h1> </div>
            <div class="categories"> <span class="unlinkedCategory">Surf Spot</span> </div>
            <div class="locationInfo"> <span class="venueCity">38 Bourke St</span> </div>
            <div class="bottomVenueSection"></div>
        </div>
        <div class="actionBar"> <span class="saveAction actionBtn"> <div class="saveButton saveToListAction inactive" title="Save to my saved places!"> <span class="saveAction actionBtn"><span class="buttonLeft"><img src="images/button_icon_saveribbon-9c5999c2ee53e7d96.png" height="16" width="16"></span><span class="buttonRight unsaved"><span class="label">Save</span></span>
            </span>
        </div>
        </span><span class="shareAction actionBtn"> <div class="doubleShareButton" title="Share this place with friends!"> <span class="shareAction actionBtn"><span class="buttonLeft"><img src="images/button_icon_saveribbon-9c5999c4703e7d96.png" height="16" width="16"></span><span class="buttonRight"><span class="label">Share</span></span>
        </span>
    </div>
    </span>
</div>
</div>
</div>

您还可以根据需要适应的浏览器支持级别使用 Flex 网格。

关于html - 当有足够的空间时,div block 如何向下移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47268971/

相关文章:

html - 想从我的背景图片中删除默认边框

jquery - 帮助我使用 jScrollPane - JQUERY 插件

html - 如何增加单选按钮中文本的大小,它应该居中对齐

javascript - 如何判断您当前是否在 HTML 表格的最后一行?

html - 侧边栏高度为 100% 的布局

Javascript 在同一张图片上单击播放和暂停歌曲

javascript - 如何让用JS输入的数字不溢出容器而是跳到下一行?

php - 如何使用 bootstrap 3 在 PHP 中构建混合列表单?

php - 在 css url 中包含 php 代码

javascript - 按键时突出显示 HTML 元素中的字符