首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS,是否可以像windows桌面图标那样对齐元素呢?

CSS,是否可以像windows桌面图标那样对齐元素呢?
EN

Stack Overflow用户
提问于 2014-02-24 13:39:01
回答 4查看 508关注 0票数 4

我使用的是引导3.1.1 --尽管这可能与我的问题无关。

我希望在容器中垂直浮动<div>,就像桌面上windows图标的行为一样。如果有太多的图标为1列,他们应该被推到一个新的列。

有什么方法可以用CSS来完成这个任务吗?或者我需要一个javascript助手?

示例

代码语言:javascript
复制
<div class='container'>

<div class='icon'> 1 </div>
<div class='icon'> 2 </div>
<div class='icon'> 3 </div>
<div class='icon'> 4 </div>
<div class='icon'> 5 </div>
<div class='icon'> 6 </div>

</div>

<style>
    .container{
        width:100%;
        max-height:200px;
    }
    .container.icon{
        width:50px;
        height:50px;
        /*..unknow !..*/
    }
</style>

谢谢:)

当前解决方案:

因为我找不到任何css解决方案。我写了一个littel js助手,我会在这里分享给未来的谷歌人,让我知道你的想法。

代码语言:javascript
复制
<div class='col-xs-9 stretch' id='desktop-icons'>
  <div class='row'>
    <div class='app-icon'>1</div>
    <div class='app-icon'>2</div>
    <div class='app-icon'>3</div>
    <div class='app-icon'>4</div>
    <div class='app-icon'>5</div>
    <div class='app-icon'>6</div>
    <div class='app-icon'>7</div>
  </div>
</div>


<script type="text/javascript">
  var icons=$('#desktop-icons >.row>.app-icon');
  var slice =icons.length
  var colMax=3;

  if(slice > 1){
    console.log('slicing '+slice+' icons'+'into pair of '+colMax);
    for(var i = 0; i < slice; i+=colMax) {
      console.log('wrapping '+(i)+','+(i+colMax));
      icons.slice(i, i+colMax).wrapAll("<div class='col-xs-2'></div>");
    }
  }

</script>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-24 14:28:02

不幸的是,纯CSS似乎不可能做到这一点。对于小jQuery插件来说,这似乎是一份有趣的工作。考虑一下我编码的这个草图:

代码语言:javascript
复制
$.fn.iconizer = function(options) {

    options = $.extend({
        selector: '.icon',
        marginTop: 10,
        marginLeft: 10
    }, options);

    return this.each(function() {

        var $container = $(this),
            $icons = $(options.selector, $container),
            containerHeight = $(this).height(),
            iconHeight = $($icons[0]).height(),
            iconWidth = $($icons[0]).width(),
            numberFit = Math.floor(containerHeight / (iconHeight + options.marginTop)),
            top = 0,
            left = 0;

        $icons.each(function(i) {
            if (i % numberFit == 0 && i > 0) {
                top = 0;
                left += iconWidth + options.marginLeft;
            }
            top = top + options.marginTop;
            $(this).css({
                top: top,
                left: left + options.marginLeft
            });
            top += iconHeight;
        });
    });
};

$('.container').iconizer();

它很小,很基本,你可以随意扩展它。

演示:http://jsfiddle.net/Z5snv/

票数 1
EN

Stack Overflow用户

发布于 2014-02-24 13:43:05

试一试

代码语言:javascript
复制
<div style="transform:rotate(270deg);">
  <div style="transform:rotate(90deg);">top</div>
  <div style="transform:rotate(90deg);">bottom</div>
</div>

http://jsfiddle.net/A5XKp/

票数 0
EN

Stack Overflow用户

发布于 2014-02-24 13:48:44

对于firefox/chrome/safari,您可以使用纯css3

代码语言:javascript
复制
.container { column-count: 3; column-gap: 20px;}

这将创建自动3列,20 gap之间的差距。

对于IE,我不知道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21989453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档