2013-07-26 27 views
2

的垂直顺序与往常一样,我有一见钟情一个“简单”的问题。CSS - 元素

我对含有一组按钮我的网页上一个div(链接,实际上,但是他们作为按钮)。简单地说:

<div class="container"> 
<a href="#" id="1" class="link1 button">text</a> 
<a href="#" id="2" class="link2 button">text</a> 
<a href="#" id="3" class="link3 button">text</a> 
<a href="#" id="4" class="link4 button">text</a> 
</div> 

现在我需要做的是按照垂直顺序排列它们。我的意思是:通常如果它们显示为内联块或内联元素,它们将水平排列,当行结束时,下一个链接将出现以下链接。浮动:左边也是一样。 但我需要它们按照水平顺序 - 换句话说,而不是行,会有设置高度的列。当列到达结尾时,下一个按钮应出现在下一列中。

有没有一种方法,使这种可能通过CSS?

唯一的其他办法,我可以想像的是,我将在PHP或类似的东西的功能,但我不是真的好或知识渊博吧。但是我可以选择把它放在那里,所以如果你有这种解决方案,我也会很感激。

非常感谢。

+0

也许最初创建一个浮动到容器左侧的列,添加块元素直到它满,然后在第一列之后追加另一列,重复。完全能够用JQuery来做到这一点。 –

+0

正如我所知道的那样,您希望链接从上到下垂直排列,直到结束,然后其余链接应位于第二列的顶部。很难让他们动态组织。但是,如果每个链接都具有指定的高度(如果链接是一个(或'n')行,则可以通过PHP或Javascript轻松计算。有链接静态高度? –

回答

0

现在还没有累,但希望它帮助。

$link_array = array(); 
$link_array[] = array('Google', 'http://google.com/'); 
$link_array[] = array('Yahoo', 'http://yahoo.com/'); 
$link_array[] = array('Bing', 'http://bing.com/'); 

$link_per_column = 10; 

foreach ($link_array as $position => $this_link) 
{ 
    if ($position % $link_per_column === 0 && ($position === 0)) 
    { 
     echo '<div class="column">'; 
     echo "<a href='{$this_link[1]}'>{$this_link[0]}</a>"; 
    } 
    elseif ($position % $link_per_column === 0 && ($position !== count($link_array))) 
    { 
     echo '</div><div class="column">'; 
     echo "<a href='{$this_link[1]}'>{$this_link[0]}</a>"; 
    } 
    elseif (($position === count($link_array))) 
    { 
     echo "<a href='{$this_link[1]}'>{$this_link[0]}</a>"; 
     echo '</div>'; 
    } 
    else 
    { 
     echo "<a href='{$this_link[1]}'>{$this_link[0]}</a>"; 
    } 
} 
+0

是的,这是一个有用的解决方案,因为我的按钮具有一定的宽度。非常感谢你。 –

+0

幸福的听到':)'。在答案的左上方勾选勾号是很好的,这意味着您的问题已得到解答,并且不会再留在未答复的问题列表中。 –