- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试创建家谱,但功能的最后一部分给我带来了一些困难。
我的树是一系列向左浮动的列表元素。
我想要的是,如果树展开超过屏幕尺寸,父 div #c1 应该允许用户在树上水平滚动。
现在发生的事情是,如果树的宽度大于#c1,那么树会 self 包裹,使其无法读取。
我通过在 #c1 中添加一个名为 #c2 的 div 来临时解决这个问题,它的宽度为 100000px。基本上树永远不会变得这么大,所以它永远不会自己包裹起来,用户可以在树上滚动。
我想要的是在使用 javascript 加载时以某种方式使 #c2 的宽度适合树,或者以某种方式找到 css 解决方案。
我尝试过使用 white-space: nowrap,以及针对类似问题发现的许多其他解决方案,但似乎对我没有任何效果。
* {margin: 0; padding: 0;}
.scrollbtn {
float: right;
cursor: pointer;
margin: 5px;
padding: 5px;
border: 1px solid #ccc;
color: #ccc;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-webkit-user-select: none; /* Chrome/Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE10+ */
}
.scrollbtn:hover {
background: #c8e4f8; color: #000; border: 1px solid #94a0b4;
}
#c1 {
width: 96%;
overflow: auto;
padding: 2%;
}
#c2 {
width: 100000px;
}
.tree ul {
padding-top: 20px; position: relative;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
.tree li {
float: left; text-align: center;
list-style-type: none;
position: relative;
padding: 20px 5px 0 5px;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
/*We will use ::before and ::after to draw the connectors*/
.tree li::before, .tree li::after{
content: '';
position: absolute; top: 0; right: 50%;
border-top: 1px solid #ccc;
width: 50%; height: 32px;
z-index: -1;
}
.tree li::after{
right: auto; left: 50%;
border-left: 1px solid #ccc;
}
/*We need to remove left-right connectors from elements without
any siblings*/
.tree li:only-child::after, .tree li:only-child::before {
display: none;
}
/*Remove space from the top of single children*/
.tree li:only-child{ padding-top: 0;}
.tree li li:only-child{ float: none;}
/*Remove left connector from first child and
right connector from last child*/
.tree li:first-child::before, .tree li:last-child::after{
border: 0 none;
}
/*Adding back the vertical connector to the last nodes*/
.tree li:last-child::before{
border-right: 1px solid #ccc;
border-radius: 0 5px 0 0;
-webkit-transform: translateX(1px);
-moz-transform: translateX(1px);
transform: translateX(1px);
-webkit-border-radius: 0 5px 0 0;
-moz-border-radius: 0 5px 0 0;
border-radius: 0 5px 0 0;
}
.tree li:first-child::after{
border-radius: 5px 0 0 0;
-webkit-border-radius: 5px 0 0 0;
-moz-border-radius: 5px 0 0 0;
}
/*Time to add downward connectors from parents*/
.tree ul ul::before{
content: '';
position: absolute; top: -12px; left: 50%;
border-left: 1px solid #ccc;
width: 0; height: 32px;
z-index: -1;
}
.tree li a{
border: 1px solid #ccc;
padding: 5px 10px;
text-decoration: none;
color: #666;
font-family: arial, verdana, tahoma;
font-size: 11px;
display: inline-block;
background: white;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
.tree li a+a {
margin-left: 20px;
position: relative;
}
.tree li a+a::before {
content: '';
position: absolute;
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
top: 47%; left: -21px;
width: 20px;
height: 6%;
}
/*Time for some hover effects*/
/*We will apply the hover effect the the lineage of the element also*/
.tree li a:hover, .tree li a:hover~ul li a {
background: #c8e4f8; color: #000; border: 1px solid #94a0b4;
}
/*Connector styles on hover*/
.tree li a:hover~ul li::after,
.tree li a:hover~ul li::before,
.tree li a:hover~ul::before,
.tree li a:hover~ul ul::before
{
border-color: #94a0b4;
}
a {
width: 130px;
}
<html>
<head>
<link rel="stylesheet" type="text/css" href="tree.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="c1">
<div id="c2">
<div class="tree" id="tree"><ul><li><a href = "?Family=Haverlah&ID=43&Gen=5">Up Tree</a><ul><li><a href = "info.php?Family=Haverlah&ID=45&Gen=5">Rosa Haverlah</a><a href = "info.php?Family=Haverlah&ID=54&Gen=5">Charles Carl Schroeder</a><ul><li><a href = "info.php?Family=Haverlah&ID=55&Gen=5">William J. Schroeder</a><a href = "info.php?Family=Haverlah&ID=94&Gen=5">Pauline Stulken</a><ul><li><a href = "info.php?Family=Haverlah&ID=95&Gen=5">William J. Schroeder Jr.</a></li><li><a href = "info.php?Family=Haverlah&ID=96&Gen=5">Clarence Schroeder</a><a href = "info.php?Family=Haverlah&ID=216&Gen=5">Grace Nixon</a><ul><li><a href = "info.php?Family=Haverlah&ID=217&Gen=5">Marion Schroeder</a></li></ul></li></ul></li><li><a href = "info.php?Family=Haverlah&ID=56&Gen=5">Rosalinda Schroeder</a><a href = "info.php?Family=Haverlah&ID=97&Gen=5">John Pfeil</a><ul><li><a href = "info.php?Family=Haverlah&ID=98&Gen=5">Esther Hertha Pfeil</a><a href = "info.php?Family=Haverlah&ID=218&Gen=5">Theodor Frederick Winter</a><ul><li><a href = "info.php?Family=Haverlah&ID=219&Gen=5">Florence Winter</a></li><li><a href = "info.php?Family=Haverlah&ID=220&Gen=5">Sandra Jean Winter</a></li></ul></li><li><a href = "info.php?Family=Haverlah&ID=221&Gen=5">William Goode</a><a href = "info.php?Family=Haverlah&ID=99&Gen=5">Edna Eltice Pfeil</a><a href = "info.php?Family=Haverlah&ID=222&Gen=5">Waldemar Otto Rehfeld</a></li><li><a href = "info.php?Family=Haverlah&ID=100&Gen=5">Walton James Pfeil</a></li><li><a href = "info.php?Family=Haverlah&ID=101&Gen=5">John Wallis Pfeil</a><a href = "info.php?Family=Haverlah&ID=228&Gen=5">Mae Jeanette Ermler</a><ul><li><a href = "info.php?Family=Haverlah&ID=229&Gen=5">Darrell Kent Pfeil</a></li><li><a href = "info.php?Family=Haverlah&ID=230&Gen=5">Paul Wallis Pfeil</a></li><li><a href = "info.php?Family=Haverlah&ID=231&Gen=5">Leona Rose Pfeil</a></li><li><a href = "info.php?Family=Haverlah&ID=232&Gen=5">Julie Gay Pfeil</a></li></ul></li></ul></li><li><a href = "info.php?Family=Haverlah&ID=57&Gen=5">Charles William Schroeder</a><a href = "info.php?Family=Haverlah&ID=102&Gen=5">Natalie Brinkoeter</a><ul><li><a href = "info.php?Family=Haverlah&ID=103&Gen=5">Charles Astor Schroeder</a><a href = "info.php?Family=Haverlah&ID=233&Gen=5">Sue Rose Jones</a></li></ul></li><li><a href = "info.php?Family=Haverlah&ID=58&Gen=5">G. Adolph Schroeder</a><a href = "info.php?Family=Haverlah&ID=104&Gen=5">Helen Stribeck</a><ul><li><a href = "info.php?Family=Haverlah&ID=105&Gen=5">Lorena Schroeder</a></li><li><a href = "info.php?Family=Haverlah&ID=106&Gen=5">Helen Schroeder</a></li><li><a href = "info.php?Family=Haverlah&ID=107&Gen=5">Glen Schroeder</a></li></ul></li></ul></li></ul></li></ul></div> </div>
</div>
</body>
</html>
最佳答案
这是一个纯 CSS 解决方案,如果你没有附加到 float (这可能会给你带来其他困难 - 因为只有 float 子元素的父元素将有一个折叠的内容框,你的 #c2 div 有一个高度0 的,其内容是“卡在底部”)。
CSS 中的 3 个步骤:
移除
#c2 {
width: 100000px;
}
(您可以将 #c2 div 完全从您的 HTML 中取出)
添加
.tree {
white-space: nowrap;
}
更改 .tree li
选择器中的规则,使该代码块看起来像这样:
.tree li {
display: inline-block;
vertical-align: top;
text-align: center;
list-style-type: none;
position: relative;
padding: 20px 5px 0 5px;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
这将使用 display: inline-block
将树的各个部分水平并排放置,使用 vertical-align: top
使它们垂直对齐在容器顶部,并在容器上放置 white-space: nowrap
以确保它们不会溢出到新行上。请注意,在您的 div #c1 上保留 overflow: auto
很重要,或者将 overflow-x: scroll
放在 div #tree 上,以启用水平滚动行为你想要的。
下面的工作片段:
* {margin: 0; padding: 0;}
.scrollbtn {
float: right;
cursor: pointer;
margin: 5px;
padding: 5px;
border: 1px solid #ccc;
color: #ccc;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-webkit-user-select: none; /* Chrome/Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE10+ */
}
.scrollbtn:hover {
background: #c8e4f8; color: #000; border: 1px solid #94a0b4;
}
#c1 {
width: 96%;
overflow: auto;
padding: 2%;
}
/*modified*/
#c2 {
width: auto;
}
/*modified*/
.tree {
/*overflow-x: scroll;*/
white-space: nowrap;
}
.tree ul {
padding-top: 20px; position: relative;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
/*modified*/
.tree li {
display: inline-block;
vertical-align: top;
text-align: center;
list-style-type: none;
position: relative;
padding: 20px 5px 0 5px;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
/*We will use ::before and ::after to draw the connectors*/
.tree li::before, .tree li::after{
content: '';
position: absolute; top: 0; right: 50%;
border-top: 1px solid #ccc;
width: 50%; height: 32px;
z-index: -1;
}
.tree li::after{
right: auto; left: 50%;
border-left: 1px solid #ccc;
}
/*We need to remove left-right connectors from elements without
any siblings*/
.tree li:only-child::after, .tree li:only-child::before {
display: none;
}
/*Remove space from the top of single children*/
.tree li:only-child{ padding-top: 0;}
.tree li li:only-child{ float: none;}
/*Remove left connector from first child and
right connector from last child*/
.tree li:first-child::before, .tree li:last-child::after{
border: 0 none;
}
/*Adding back the vertical connector to the last nodes*/
.tree li:last-child::before{
border-right: 1px solid #ccc;
border-radius: 0 5px 0 0;
-webkit-transform: translateX(1px);
-moz-transform: translateX(1px);
transform: translateX(1px);
-webkit-border-radius: 0 5px 0 0;
-moz-border-radius: 0 5px 0 0;
border-radius: 0 5px 0 0;
}
.tree li:first-child::after{
border-radius: 5px 0 0 0;
-webkit-border-radius: 5px 0 0 0;
-moz-border-radius: 5px 0 0 0;
}
/*Time to add downward connectors from parents*/
.tree ul ul::before{
content: '';
position: absolute; top: -12px; left: 50%;
border-left: 1px solid #ccc;
width: 0; height: 32px;
z-index: -1;
}
.tree li a{
border: 1px solid #ccc;
padding: 5px 10px;
text-decoration: none;
color: #666;
font-family: arial, verdana, tahoma;
font-size: 11px;
display: inline-block;
background: white;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
.tree li a+a {
margin-left: 20px;
position: relative;
}
.tree li a+a::before {
content: '';
position: absolute;
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
top: 47%; left: -21px;
width: 20px;
height: 6%;
}
/*Time for some hover effects*/
/*We will apply the hover effect the the lineage of the element also*/
.tree li a:hover, .tree li a:hover~ul li a {
background: #c8e4f8; color: #000; border: 1px solid #94a0b4;
}
/*Connector styles on hover*/
.tree li a:hover~ul li::after,
.tree li a:hover~ul li::before,
.tree li a:hover~ul::before,
.tree li a:hover~ul ul::before
{
border-color: #94a0b4;
}
a {
width: 130px;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf8" />
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
<title>fiddle</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<html>
<head>
<link rel="stylesheet" type="text/css" href="tree.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="c1">
<div id="c2">
<div class="tree" id="tree"><ul><li><a href = "?Family=Haverlah&ID=43&Gen=5">Up Tree</a><ul><li><a href = "info.php?Family=Haverlah&ID=45&Gen=5">Rosa Haverlah</a><a href = "info.php?Family=Haverlah&ID=54&Gen=5">Charles Carl Schroeder</a><ul><li><a href = "info.php?Family=Haverlah&ID=55&Gen=5">William J. Schroeder</a><a href = "info.php?Family=Haverlah&ID=94&Gen=5">Pauline Stulken</a><ul><li><a href = "info.php?Family=Haverlah&ID=95&Gen=5">William J. Schroeder Jr.</a></li><li><a href = "info.php?Family=Haverlah&ID=96&Gen=5">Clarence Schroeder</a><a href = "info.php?Family=Haverlah&ID=216&Gen=5">Grace Nixon</a><ul><li><a href = "info.php?Family=Haverlah&ID=217&Gen=5">Marion Schroeder</a></li></ul></li></ul></li><li><a href = "info.php?Family=Haverlah&ID=56&Gen=5">Rosalinda Schroeder</a><a href = "info.php?Family=Haverlah&ID=97&Gen=5">John Pfeil</a><ul><li><a href = "info.php?Family=Haverlah&ID=98&Gen=5">Esther Hertha Pfeil</a><a href = "info.php?Family=Haverlah&ID=218&Gen=5">Theodor Frederick Winter</a><ul><li><a href = "info.php?Family=Haverlah&ID=219&Gen=5">Florence Winter</a></li><li><a href = "info.php?Family=Haverlah&ID=220&Gen=5">Sandra Jean Winter</a></li></ul></li><li><a href = "info.php?Family=Haverlah&ID=221&Gen=5">William Goode</a><a href = "info.php?Family=Haverlah&ID=99&Gen=5">Edna Eltice Pfeil</a><a href = "info.php?Family=Haverlah&ID=222&Gen=5">Waldemar Otto Rehfeld</a></li><li><a href = "info.php?Family=Haverlah&ID=100&Gen=5">Walton James Pfeil</a></li><li><a href = "info.php?Family=Haverlah&ID=101&Gen=5">John Wallis Pfeil</a><a href = "info.php?Family=Haverlah&ID=228&Gen=5">Mae Jeanette Ermler</a><ul><li><a href = "info.php?Family=Haverlah&ID=229&Gen=5">Darrell Kent Pfeil</a></li><li><a href = "info.php?Family=Haverlah&ID=230&Gen=5">Paul Wallis Pfeil</a></li><li><a href = "info.php?Family=Haverlah&ID=231&Gen=5">Leona Rose Pfeil</a></li><li><a href = "info.php?Family=Haverlah&ID=232&Gen=5">Julie Gay Pfeil</a></li></ul></li></ul></li><li><a href = "info.php?Family=Haverlah&ID=57&Gen=5">Charles William Schroeder</a><a href = "info.php?Family=Haverlah&ID=102&Gen=5">Natalie Brinkoeter</a><ul><li><a href = "info.php?Family=Haverlah&ID=103&Gen=5">Charles Astor Schroeder</a><a href = "info.php?Family=Haverlah&ID=233&Gen=5">Sue Rose Jones</a></li></ul></li><li><a href = "info.php?Family=Haverlah&ID=58&Gen=5">G. Adolph Schroeder</a><a href = "info.php?Family=Haverlah&ID=104&Gen=5">Helen Stribeck</a><ul><li><a href = "info.php?Family=Haverlah&ID=105&Gen=5">Lorena Schroeder</a></li><li><a href = "info.php?Family=Haverlah&ID=106&Gen=5">Helen Schroeder</a></li><li><a href = "info.php?Family=Haverlah&ID=107&Gen=5">Glen Schroeder</a></li></ul></li></ul></li></ul></li></ul></div> </div>
</div>
</body>
</html>
</body>
</html>
关于javascript - 将 Parent Div 收缩为 Foated Children,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51574617/
我有一个 div(我认为是容器?)我希望它成为中心页面。 Billede 2 我只想让所有上下文都位于页面中心,这怎么可能? 最佳答案 Billede 2 根据您的要求
我只是在研究 jQuery,偶然发现了 Find 函数。 我是这样测试的: $(document).ready(function(){ $('button').click(function()
如何制定一个规则来做这样的事情: .container .unit:first-child(if it has inside div.box1.extra) + .box2 { top: 50px;}
我想了解为什么浏览器显示 和 的方式不同? 这是一个示例:片段 #1 的预期输出是三个并排的框:[黑色]、[蓝色]、[红色]。代码段 #2 仅显示 [black] 和 [red] - 为什么代码段 #
我有一个奇怪的问题,我无法使用正常的嘶嘶声选择器来正确选择 jQuery 中的某些内容: 这两行代码不做同样的事情。 ele.children("div.a > div").addClass("bad
我有一个包含另外两个 div 的 div first div second div 父 div 有最大高度,因此不能增长超过一定数量。但是两个子 div 可以有任何大小(动态
我在两个 div 之间有问题。 div#mainbody 是父 div 有一个背景,div 2 子 div 有自己的背景所以 div 2 浮出父级 div 但我希望它位于父级 div 中。 HTML:
我在另一个具有特定宽度的 div 中有一个 div,但我希望子 div 的宽度与浏览器屏幕大小成百分比而不是与其父 div 的百分比,这意味着当我将子 div 的宽度设置为 50% 时,我希望它的大小
我有以下代码。当单击 div 1 中的按钮时,我需要隐藏 div 1 并显示 div2。 (在 Angular HTML5 中)。我有一个带有 Controller 等的 JS 文件,目前我有两个不同
现在我可以将容器 div 的大小自动调整到内部 div,或者我可以将整个东西居中...但我不知道如何同时进行这两项操作。 下面是我拥有的 CSS/布局。现在 page 和 main 元素都居中,但如果
当一个单元格 div 包含绝对定位的 div 时,如何在表格 div 中顶部对齐两个单元格 div? 在此示例中,不包含绝对定位的 div 的单元格 div 被下推。 HTML: 1
我的程序是一个游戏,从 4 个可玩 Angular 色开始,每个 Angular 色都在自己的类 charContainer 中,这 4 个 div 位于类 character 的容器中。当玩家通过点
我有这样的东西: 现在,#page 中没有任何格式。它适用于一些内容,我的意思是,当内容更大时,#page 也有更高的高度。但是,当今天我在其中应用 #con
我有一个 React 应用程序,并且在一些 CSS 方面遇到了一个稍微大一点的问题。 我有一个 View 分为两部分。但这两个部分位于一个更大的组件中。左侧部分显示一些联系人,右侧我想显示这些联系人的
我想像 facebook 注册页面一样,一个div1(section width:1024px)有四个div,左边div2(width:50%) 有div3(fb slogan),下面div4(con
在我的网页上遇到一个问题,母版页中的页脚对于某个特定页面没有正确显示。在那个页面上,我有一个 在底部。 在我的头上敲了一会儿之后,我发现要让页脚正确显示,我需要做的就是将该行更改为: 我不明白为什么
我正在使用 this plugin用于跨浏览器兼容的灰度图像。基本上,图像最初处于低不透明度的灰度模式。当用户将鼠标悬停在图像上时,灰度逐渐变为彩色,不透明度返回到 1,之前隐藏的 div 从底部向上
这是一个 jsfiddle link of my issue HTML 8.123456 huh-fjiuetie 条件是: h
当前面的 div 中的文本溢出时,如何防止后面的内联 div 换行显示。 如您所见,对于第一个帖子,主要内容换行到第二行,因此它后面的链接显示在新行上(这是不正确的)。 但是对于第 3 篇文章,主标题
我有一个 div,当它悬停在上面时,它会激活另一个 div。当用户将鼠标移动到激活的 div 上时,我希望该 div 保留下来。这是一个片段。 当您将鼠标悬停在金色框上时,紫色框会隐藏并显示灰色框。当
我是一名优秀的程序员,十分优秀!