【发布时间】:2012-06-02 03:13:43
【问题描述】:
请以webpage 的形式查看以下 HTML/CSS。它显示一个带有各种元素周围边框的轮廓。包含列表有意允许在固定宽度内水平滚动。麻烦的是,当你滚动到轮廓的最右边时,你可以看到内部元素的边框(所有热色)相互重叠。期望的效果是它们都与包含元素完全齐平(在右侧),因此不会发生重叠。实现此目的最简单的 CSS 是什么?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>CSS Problem</title>
<style type="text/css">
ul {
padding: 0 0 0 20px !important;
margin: 0 !important;
width: 300px !important;
border: solid 1px orange;
height: auto;
overflow: visible;
}
li, span {
padding: 0;
margin: 0;
}
#top {
border: solid 1px black;
}
#top > li {
overflow-x: auto;
overflow-y: hidden;
border: solid 1px yellow;
margin-left: -20px;
}
li {
display: block;
border: solid 1px red;
}
li, ul, span {
width: auto;
white-space: nowrap !important;
}
</style>
</head>
<body>
<ul id='top'>
<li id='trunk'>
<span>This is the trunk</span>
<ul>
<li><span>This is the first line item</span>
<ul>
<li><span>This is the first subitem</span><ul></ul></li>
<li><span>This is the second subitem</span><ul></ul></li>
<li><span>This is the third subitem</span><ul></ul></li>
</ul>
</li>
<li><span>This is the second line item</span><ul></ul></li>
<li><span>This is the third line item</span><ul></ul></li>
</ul>
</li>
</ul>
</body>
</html>
编辑:
下图显示了一个示例轮廓。请注意,宽度是固定的,并且可以向右滚动,以防用户键入的标题长于可显示区域中的显示长度。请注意,突出显示的项目及其子项被包裹在浅灰色中。右侧有一些橙色标记,用于调试目的。
http://drop.io/dfhejyj/asset/outline-png
下图显示了向右滚动的相同轮廓。滚动是有意的,不得消除。问题是当我向右滚动时,标题会突出到包含的 UL 标记之外(显示为浅灰色)。同样,带有橙色标记。期望的效果是橙色标记和灰色区域将始终与选择区域的右侧齐平(由滚动条分隔),并且滚动条将始终保留(只要任何标题足够长)生产它)。
http://drop.io/dfhejyj/asset/outline-scrolled-to-right-png
DigruntedGoat 的评估完全正确。但是,我需要一种纠正方法。这可能更容易与旧 IE 浏览器使用的损坏的盒子模型一起工作。
【问题讨论】:
标签: html css html-lists