【问题标题】:css, unordered list not displaying icon in right placecss,无序列表未在正确位置显示图标
【发布时间】:2010-04-13 17:43:47
【问题描述】:

我对这个真的很失望。几周前,我让它在 Firefox 和 IE 中都能正常工作。今天回去做一些测试,发现Firefox的显示有问题,我一直在搜索代码但找不到任何东西。我可以使用任何愿意的人提供的一些提示,我确定我看错了。我升级了我的 firefox 版本,但我想我的代码坏了,而不是 firefox。我假设问题出在我的 css 文件中,但我不确定。

这是我迄今为止所确认的。与可能覆盖设置的

  • 的其他 css 文件似乎没有冲突。另一个确认是,这在 Internet Explorer 中运行良好......因此我一定是个白痴,因为它通常是相反的(在 FF 中工作,但在 IE 中失败)。

    这是它在 IE 中的外观(注意文件夹图标在文本旁边的位置):

    alt text http://www.redsandstech.com/ie_works.jpg

    这是它在 FF 中的样子(注意文件夹图标没有与其相应的文本一起被按下)。
    alt text http://www.redsandstech.com/ff_broken.jpg

    这是无序列表:

    <ul id="nav">
        <li><a>Utah</a></li>
            <ul>
               <li><a>ParkCity</a>
                   <ul>
                      <li><a>Com1</a></li>
                          <ul>
                              <li class="folder_closed"><a>Timber</a></li>
                              <div>SQUARE CONTAINER IS INSIDE THIS DIV</div>
                          </ul>
                   </ul>
            </ul>
    </ul>
    

    这是用于整个菜单的 CSS:

    /*  MENU NAVIGATION (<UL><LI> LISTS
    ****************************************/
    ul#nav{
    /* This handles the main root <ul> */
        margin-left:0;
        margin-right:0;
        padding-left:0px;
        text-indent:15px;   
    }
    ul#nav div{
      overflow: hidden;
    }
    
    #nav li>a:hover { 
        cursor: pointer;
    }
    #nav li > ul{ 
    /* This will hide any element with an id of "nav" and an "li" that has a direct child that is a "ul" */
        display:none; 
        margin-left:0px; 
        margin-right:0px;
        padding-left:15px;
        padding-right:0px;
        text-indent:15px;
    }
    #nav li {
        list-style-type:none;
        list-style-image: none;
    }
    #nav > li{
        vertical-align: top;
        left:0px;
        text-align:left;
        clear: both;
        margin:0px;
        margin-right:0px;
        padding-right:0px;
    }
    .menu_parent{
        background-image: url(../images/maximize.png);
        background-repeat: no-repeat;
        background-position: 0px 1px; 
        position:relative;
    }
    .menu_parent_minimized{
        background-image: url(../images/minimize.png);
        background-repeat: no-repeat;
        background-position: 0px 1px; 
        position:relative;
    }
    .folder_closed{
        position:relative;
        background-image: url(../images/folder_closed12x14.png);
        background-repeat: no-repeat;
        background-position: 0px -2px; 
    }
    
    .folder_open{
        position:relative;
        background-image: url(../images/folder_open12x14.png);
        background-repeat: no-repeat;
        background-position: 0px -2px; 
    }
    </ul>
    

【问题讨论】:

    标签: css unordered


    【解决方案1】:

    您遇到了 IE 和其他浏览器之间最大和最令人沮丧的 CSS 差异之一。

    我的建议是使用重置样式表,并将树形图标设置为其容器的背景图像。

    例如,您的树项目之一可能是

    <div class="folder">This is a folder</div>
    

    并具有以下 CSS:

    .folder {
      background-image: url(someImage.png);
      background-repeat: no-repeat;
      background-position: 0 0; /* or wherever you like */
      text-indent: 20; /*enough room for a 16x16 icon with a little space to the right */
    }
    

    }

    总是使用 DIV,而不是 UL>LI 组合来做这种事情。 YMMV。你可以用 UL>LI 做同样的事情,但我不喜欢子弹放置位置等方面的差异,如果你仍然使用重置样式表,你只是将 LI 容器转换为类似于 DIV 的东西无论如何。

    【讨论】:

    • 这也是我感到困惑的部分原因。正如您所指出的,在我的css中,我正在为我的图标使用文件夹类,但这并没有将
    • 向下推。我从来没有想过使用 div ......我想我读了太多关于使用无序列表作为菜单的东西......我不得不改变相当多的代码......如果我不能用ul,我会尝试用 div 重做它,看看会发生什么。感谢您的意见。
  • @Ronedog:这样做的方法是让每个可扩展的树节点成为一个容器 div,有两个孩子,都是 div。第一个孩子是“标签”元素,当节点可见时可见。第二个孩子是一个容器div,只有在节点展开时才可见。它可能包含其他树节点,叶节点或“文件夹”节点。 javascript 很容易编写,HTML 和 CSS 也是如此。
  • 感谢 Robusto...我尝试使用 div,但我破坏了很多其他东西...这对我来说没有任何意义。一周前,相同的代码在两个浏览器中都运行良好......没有真正改变......除了它有!!!
  • 【解决方案2】:

    您的标记有一些错误,因此取决于浏览器如何生成 DOM。

    ul 只能将 li 作为子级,而不是 div 或另一个 ul。修复标记,看看会发生什么。

    【讨论】:

    • 我会试一试...但我认为 div 允许在 ul 和 li 中使用?
    • 运气不好。我删除了 div 并简单地添加了另一个 li ,问题仍然存在。还有其他想法吗?
    • 好吧,我将 LI 中的 div 按原样移动了,但我一直得到相同的结果。还有其他想法吗?
    【解决方案3】:

    当我在我的列表中使用溢出:隐藏时,我遇到了 Firefox 问题。尝试取出溢出:隐藏,看看是否会改变。

    对于我的问题,如果我使用溢出隐藏,那么它会导致我的有序列表不显示它们的 A.、B.、C。或者 1., 2., 3. etc...(变成无序列表,没有项目符号)

    【讨论】:

      【解决方案4】:

      没有测试,但这可能与 FF 使用边距设置项目符号标记而 IE 使用填充的事实有关。或者是周围的其他方式?忘记了。

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签