Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet explorer css:跨浏览器、回流、自上而下、多列列表_Internet Explorer_List_Css - Fatal编程技术网

Internet explorer css:跨浏览器、回流、自上而下、多列列表

Internet explorer css:跨浏览器、回流、自上而下、多列列表,internet-explorer,list,css,Internet Explorer,List,Css,看 另见 我想要一个多列列表,其中: 不使用JS 窗口大小上的回流 使尽可能多的列适合封闭元素 因此,不需要将列表批处理为手动列组 适用于所有浏览器 适用于任意数量的未知宽度(但单行高度)元素 使每列适合其(动态)内容的宽度 不会产生滚动条或其他溢出问题 尽可能从上到下排序 我的代码当前为: ul.multi, ol.multi { width: 100%; margin: 0; padding: 0; list-style: none; -moz-column-width

另见

我想要一个多列列表,其中:

  • 不使用JS
  • 窗口大小上的回流
    • 使尽可能多的列适合封闭元素
    • 因此,不需要将列表批处理为手动列组
  • 适用于所有浏览器
  • 适用于任意数量的未知宽度(但单行高度)元素
    • 使每列适合其(动态)内容的宽度
  • 不会产生滚动条或其他溢出问题
  • 尽可能从上到下排序
我的代码当前为:

ul.multi, ol.multi {
 width: 100%;
 margin: 0;
 padding: 0;
 list-style: none;
 -moz-column-width: 12em;
 -webkit-column-width: 12em;
 column-width: 12em;
 -moz-column-gap: 1em;
 -webkit-column-gap: 1em;
 column-gap: 1em;
}

ul.multi li, ol.multi li {
 <!--[if IE]>
  float: left; 
 <![endif]-->
  width: 20em;
  margin: 0;
  padding: 0;
}
ul.multi,ol.multi{
宽度:100%;
保证金:0;
填充:0;
列表样式:无;
-moz列宽:12em;
-webkit列宽:12em;
列宽:12em;
-莫兹柱间距:1米;
-webkit柱间距:1米;
柱间距:1米;
}
ul.multi-li,ol.multi-li{
宽度:20em;
保证金:0;
填充:0;
}
虽然这可以正常工作,但也存在一些问题:

  • 我得猜一下内容的宽度
  • 它在IE中是从右向左的(尽管这是一种优雅的降级模式)
  • 它在非IE、非Moz/Webkit/CSS3浏览器中根本不起作用

如何改进这一点?

我将避免在任何结构化网站设计中使用CSS3。我最好的猜测是尝试下面的方法,基本上就是删除CSS3的东西。如果我理解正确,这里的大问题是不知道你的物品的宽度。对于一个固定的宽度,像这样的东西应该是您所需要的,但是对于您所描述的内容,您似乎需要我们的老朋友Javascript的一些帮助:)


正文,html
{
保证金:0;
填充:0;
}
ul.multi
{
宽度:100%;
列表样式:无;
保证金:0;
填充:0;
}
ul.multi-li
{
浮动:左;
宽度:10em;
线高:1;
保证金:0;
填充:0;
}
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h

我会避免在任何结构化网站设计中使用CSS3。我最好的猜测是尝试下面的方法,基本上就是删除CSS3的东西。如果我理解正确,这里的大问题是不知道你的物品的宽度。对于一个固定的宽度,像这样的东西应该是您所需要的,但是对于您所描述的内容,您似乎需要我们的老朋友Javascript的一些帮助:)


正文,html
{
保证金:0;
填充:0;
}
ul.multi
{
宽度:100%;
列表样式:无;
保证金:0;
填充:0;
}
ul.multi-li
{
浮动:左;
宽度:10em;
线高:1;
保证金:0;
填充:0;
}
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h

不幸的是,如果没有一些js或后端魔法/黑客,我认为这在IE中是不可能的。下面是一个有用的演示,提供了一点黑客技巧:

但这显然不是完美的

或使用JS:


同样,您最好的选择是在服务器上做一些计算,然后正确地进行计算,或者,如果您愿意放弃IE,则使用列宽或列计数,但这取决于需要支持的内容。不幸的是,我们仍然停留在80年代p

不幸的是,如果没有一些js或后端魔法/黑客,我认为这在IE中是不可能的。下面是一个有用的演示,提供了一点黑客技巧:

但这显然不是完美的

或使用JS:


同样,您最好的选择是在服务器上做一些计算,然后正确地进行计算,或者,如果您愿意放弃IE,则使用列宽或列计数,但这取决于需要支持的内容。不幸的是,我们仍然停留在80年代p

这几乎和我以前的情况一模一样。但它在从上到下的过程中失败了-跳到底。。。是的,你肯定需要javascript来排序你的数据。这当然是可行的,但没有javascript是不行的。这几乎就是我以前所拥有的。但它在从上到下的过程中失败了-跳到底。。。是的,你肯定需要javascript来排序你的数据。这当然是可行的,但没有javascript不行。这段代码是在服务器上生成的还是静态HTML页面?如果是动态页面,您可以在服务器上进行HTML格式化。此代码是在服务器上生成的还是静态HTML页面?如果是动态页面,您可以在服务器上进行HTML格式化。
<style>
body, html
{
    margin: 0;
    padding: 0;
}
ul.multi
{
    width: 100%;
    list-style: none;
    margin: 0;
    padding: 0;
}
ul.multi li
{
    float: left;
    width:10em;
    line-height: 1;
    margin: 0;
    padding: 0;
}
</style>

<ul class="multi">
    <li>a</li>
    <li>b</li>
    <li>c</li>
    <li>d</li>
    <li>e</li>
    <li>f</li>
    <li>g</li>
    <li>h</li>
</ul>