当前位置:  开发笔记 > 编程语言 > 正文

HTML/CSS:嵌套元素树的布局比嵌套表更好的选择是什么?

如何解决《HTML/CSS:嵌套元素树的布局比嵌套表更好的选择是什么?》经验,为你挑选了2个好方法。

好的,我有一组用于选择标准的复选框.为了论证,我们会说数据看起来像这样:

[] Vehicles
   [] Unpowered
      [] Bicycle
      [] Skateboard
   [] Powered
      [] Two-wheeled
         [] Motorcycle
         [] Scooter
      [] Four-wheeled
etc

[]代表复选框.

忽略这个例子明显做作的本质,这个想法是这样的:

首先,只有"车辆"复选框可见;

如果用户点击"车辆"复选框,则操作上一级(有电,无电);

如果用户选择"动力",则打开下一级(两轮,四轮);

如果用户取消选中"已启动",则该级别将消失.

现在,使用onclick切换block和none之间的显示CSS属性相对容易.

目前在页面上构建如下:

Vehicles
Unpowered etc

在有人问之前我应该​​指出:复选框放在表格单元格中的原因是为了控制格式.它使得有效缩进变得容易,因为下一个表格单元格中的所有内容都会排成一行.

一切正常,但表嵌套变得非常深.我一直认为必须有比这更好的方法.它必须能够轻松动态构建,并具有良好的跨浏览器支持格式化"树".

我还应该提一下jQuery是可用的.我正在将它用于其他事情.

建议?

编辑:是的复选框样式很重要,因为有几条评论已经注意到.另外,我已经根据我得到的回复发布了一个解决方案,作为下面的答案(太大了,不能在这里添加),只是为那些好奇的人看到一个例子.



1> davethegr8..:
  • Vehicles
    • Unpowered
    • Bicycle
    • Skateboard
  • Powered
    • Two-wheeled
      • Motorcycle
      • Scooter
    • Four-wheeled

编辑:一个小css&js来显示和隐藏嵌套元素(没有复选框)

li.opened ul {
display: block;
}

li.closed ul {
    display: none;
}

和js ......

$(document).ready(function() {

$('li input:checkbox').click(function () {
    $(this).parent().toggleClass('opened');
    $(this).parent().toggleClass('closed');
});

$('li').addClass('closed');
});

再次编辑,因为Sparr想要一些更好的样式(假设复选框的样式为"复选框"

li input.checkbox { /* input:checkbox is not 100% compatible */
    width: 6px;
    margin: 0 2px;
    /* This makes 10px be the total "width" ofh the checkbox */
}

ul {
    margin: 0 0 0 10px; /* Or whatever your total checkbox width is */
    padding: 0;
}

li {
    padding: 0;
}



2> Sampson..:

你可以这样做:

  • Option 1
    • Option 1 Sub Option A

然后,您将UL的填充/边距设置为0和0.然后将LI的填充左侧设置为10px.

ul {
  margin:0;
  padding:0;
}

li {
  margin:0;
  padding:0 0 0 20px; /* Each nested li will be padded incrementally */
}

对于javascript,将事件附加到每个复选框,以确定兄弟UL(如果存在)是否应该可见.如果选中该框,则显示该框,否则将其隐藏.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有