【问题标题】:Positioning elements within a page in Drupal 7在 Drupal 7 中定位页面内的元素
【发布时间】:2011-11-29 00:03:23
【问题描述】:

我的页面中有一组 div,其中包含一些图像。我希望它们水平排列而不是垂直排列,即:

 X X X X X
 X X X X X

代替

X
X
X
...
X

我尝试过使用floatposition:absolute 属性,但是在使用它们时,这些元素与文档的正常流程“分离”并位于内容区域之外。

在不改变文档正常流程的情况下以这种方式定位元素的最佳方法是什么?

编辑

<div id="content" class="column"><div class="section">
  <h6 id="choose">CHOOSE WHAT YOUR PLANB IS</h6>
 <div class="region region-content">
  <div class="canvas-wrapper">
   <div class="canvas-triangle" id="one">
    <canvas id="one"></canvas>
   </div>
   <div class="triangle-caption">One</div>
 </div>
 <div class="canvas-wrapper">
   <div class="canvas-triangle" id="two">
     <canvas id="two"></canvas>
   </div>
   <div class="triangle-caption">Two</div>
 </div>
 //ANOTHER 8 LIKE THAT
 </div>
 </div>

这就是我创建带有图像的 div 的代码。我想做的是按照上面的说明安排它们。如果您需要更多详细信息,请告诉我。

谢谢

【问题讨论】:

    标签: css position drupal-theming


    【解决方案1】:

    您不需要使用位置,只需将 float:left 用于您想要连续的 div。比你可以在那些 div 下使用 clear:left 的一些元素,所以 div 不会覆盖这个元素或代码中的任何其他元素......

    编辑:

    要理解它,请尝试使用此代码,无论是否明确:

    #wrap {width: 500px; background:#ffa;}
    div.row {float:left; width:150px; height:150px; background:#aff}
    div.right {float:right; height:250px;}
    div.clear {clear:left; width: 250px; background:#faf}
    
    <div id="wrap">
        <div class="row"><p>div</p></div>
        <div class="row"><p>div</p></div>
        <div class="row"><p>div</p></div>
        <div class="row"><p>div</p></div>
        <div class="row right"><p>right</p></div>
    
        <div class="clear"><p>clear</p></div>
    
        <p>Lorem ipsum dolor sit...... </p>
    </div>
    

    在这种情况下,如果您使用 clear with value left 或两者都使用,请注意区别。

    【讨论】:

    • 我在使用 float:left 时遇到的问题是元素随后停止在文档的自然流动中,并且页脚向上推得太远。
    • 我添加了一个示例,我想您需要了解 clear 的工作原理。
    • 我明白你的意思,但我认为我的解释有误。我的问题是,当我使用 float 时,content div 的高度变为 0。因此浮动的元素变得“不合适”,因为它们应该在内容 div 内。但是,由于 float 属性,内容 div 认为其中没有任何内容并且变得非常小,从而弄乱了 alyout 的其余部分。这是我能想到的最好的描述方式。
    • @KerrM:所以我认为您在这里所说的基本上在我的示例中有效,但在 drupal 中无效? Drupal 是一头有趣的野兽,即使是最基本的页面通常也涉及到如此多的 css 和 html,要得到你想要的东西可能会非常令人沮丧。如果是这种情况,那么您可能只想向我们展示该站点,或者在 jsfiddle 中包含问题的复制。
    • 那么如果你在内容里面的那些div之后添加cleaner,内容的高度就不会是0,它会从顶部到cleaner。如果您查看我的示例,如果您删除清洁剂,#wrap(黄色背景)的高度:0。如果添加清洁剂,则包装将在清洁剂之后结束。
    【解决方案2】:

    摆脱绝对定位。如果这还不够帮助,你应该给我们更多的东西。

    编辑:看到这个 jsfiddle,让我知道什么不清楚:http://jsfiddle.net/FH7cg/

    【讨论】:

    • 在内容部分添加了一些关于 div 结构的额外信息。感谢您的回复
    • 这正是我所需要的,但我的问题是,当我使用浮动时,内容 div 的高度变为 0。所以浮动的元素变得“不合适”,因为它们应该在内容分区但是,由于 float 属性,内容 div 认为其中没有任何内容并且变得非常小,从而弄乱了 alyout 的其余部分。这是我能想到的最好的描述方式。再次感谢您的及时答复。
    猜你喜欢
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多