我目前正在开发一个网站,遇到了一个奇怪的问题,就是让我的两个 div 保持在同一条线上。有问题的页面在这里:http ://bit.ly/13QE7Zi我要修复的 div 是中间的文本 div 和旁边的小图像。在 CSS 中,我将这些 div 设置为 1000px (20+640+20+300+20),这是容器元素的宽度,但如果我这样做,第二个 div 会被推到下一行。仅当我将文本 div 的宽度减小 3 px 时它才有效,这是不可取的,因为图像的边缘没有与页面的右侧正确对齐。这发生在 Chrome 和 Firefox 中。我不想使用浮动,因为这会破坏页面的其他方面。如何让这两个 div 保持在同一行并且仍然填充完整的 1000px 宽度?
5 回答
与其将文本减小width
3 px,不如将其减小padding-right
不会.looktrai-text
改变它的外观,但会为两者提供足够的空间。
发生这种情况的原因是因为您的两个内联块之间有一个“空格”字符。
HTML 并没有真正忽略所有的空白。两个元素之间可以有 1000 个空格和换行符,HTML 会在显示时将所有这些压缩为 1 个空格。
您的内联块的设置方式是它们的宽度加起来正好是 1000 像素,但是您在两个包含元素之间有一条新线,它压缩到 1 个空间。您的精确测量并没有考虑到这个额外的空间,因此您的内联块会换行到下一行。
我将float: left
用于文本 div 和float: right
图像 div 并删除该display: inline-block
属性。这为页脚创建了一个清除问题,但使用许多“clearfix”黑客之一很容易解决这个问题。根据这篇关于 CSS Tricks的文章,我首选的方法是.group
在父容器 div 上使用一个类。在你的情况下,这将是<div id="looktrai-content" class="group">
您可以简化代码,甚至可以通过执行以下操作来实现图像周围的文本环绕。
免责声明:这是基于您试图达到的结果的建议。
删除
.looktrai-text
和.looktrai-sidediv
div像这样格式化里面的HTML
#looktrai-content
:
<div id="looktrai-content" class="clear"> <img src="content/looktrai_side.jpg" alt="" class="align-right" /> <p>My paragraph text</p> <p>My second paragraph</p> </div>
- 添加以下 CSS:
img.align-right { float: right; margin: 0 20px 20px; }
结果将如下所示:http ://codepen.io/anon/pen/yjdxh
这是一种更简洁、更简单的方法,可让您减少代码并最大限度地提高灵活性。
您可以使用border-box box-sizing。这样,元素的宽度将包括填充和边框。