首页
社区
课程
招聘
[原创]Django Web 框架和 zTree jquery 插件中 CSS 冲突调试及解决
发表于: 2013-9-12 18:57 6708

[原创]Django Web 框架和 zTree jquery 插件中 CSS 冲突调试及解决

2013-9-12 18:57
6708

最近想在使用 Django 框架的一个 Web 项目中使用 zTree jquery 插件(561K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4A6@1M7X3g2W2i4K6u0W2L8h3g2Q4x3V1k6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0k6Q4z5o6c8Q4z5f1k6Q4c8e0S2Q4b7e0N6Q4z5o6W2Q4c8e0k6Q4z5e0S2Q4b7V1g2Q4c8e0N6Q4b7e0c8Q4b7V1q4Q4c8e0k6Q4z5e0g2Q4z5o6S2Q4c8e0k6Q4z5f1g2Q4z5f1y4Q4c8e0W2Q4z5f1c8Q4z5f1g2Q4c8e0g2Q4b7U0S2Q4b7U0S2Q4c8e0g2Q4b7e0g2Q4b7V1c8Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0k6Q4z5o6c8Q4z5f1k6Q4c8e0S2Q4b7U0m8Q4b7e0u0Q4c8e0c8Q4b7V1c8Q4z5f1y4Q4c8e0S2Q4z5o6m8Q4z5o6g2Q4c8f1k6Q4b7V1y4Q4z5o6q4Q4c8e0g2Q4z5f1u0Q4b7V1c8Q4c8e0c8Q4b7V1q4Q4b7V1q4Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0S2Q4z5p5c8Q4b7e0y4Q4c8e0S2Q4z5o6m8Q4z5o6m8Q4c8f1k6Q4b7V1y4Q4z5o6q4Q4x3U0W2Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4z5p5k6Q4z5e0q4Q4c8e0N6Q4z5p5g2Q4b7U0m8Q4c8e0k6Q4z5e0S2Q4b7V1g2Q4c8e0N6Q4b7e0c8Q4b7V1q4Q4c8e0k6Q4z5f1y4Q4z5o6W2Q4c8e0W2Q4z5e0N6Q4b7f1g2Q4c8e0W2Q4b7e0u0Q4z5e0S2Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4b7e0k6Q4z5o6u0Q4c8e0c8Q4b7U0S2Q4z5p5u0Q4c8e0g2Q4z5f1u0Q4b7V1g2Q4c8e0k6Q4z5o6W2Q4z5o6m8Q4c8e0N6Q4b7e0c8Q4b7V1q4Q4c8f1k6Q4b7V1y4Q4z5f1p5`.



zTree demo 显示链接为:

a5dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4A6@1M7X3g2W2i4K6u0W2L8h3g2Q4x3V1k6$3x3#2)9J5c8X3c8W2L8h3!0Q4x3X3g2H3K9s2m8Q4x3U0y4Q4y4h3j5I4x3o6t1`.

简单测试了下发现 zTreeStyle.css 和 Django  中的 modern.css 冲突。框架中 “metrouicss” 这个类选择器是加在了 body 上:
        <BODY class="metrouicss">

参考作者在 blog 上给出的 zTree DOM 结构:



在页面异常元素中右键点击“审查元素”调试分析。
li 内的第一个 span 对应着父节点的 +/- 号,应该使用如下样式:

.ztree li span.button.root_open{background-position:-92px -54px; width:18px; height:18px}

可在 Properties 窗口中看到的 width * height 确是 90px * 32px。



从 “Matched CSS Rules” 开始往下看,发现了如下样式定义:

        .metrouicss .button {
                font-family: 'Segoe UI', 'Open Sans', Verdana, Arial, Helvetica, sans-serif;
                font-weight: 400;
                font-size: 9pt;
                font-smooth: always;
                line-height: 11pt;
                font-size: 14px;
                padding: 4px 12px;
                line-height: 20px;
                vertical-align: middle !important;
                min-width: 90px;
                min-height: 32px;
                ...
        }

zTree 定义中的 被 width, height Django CSS 中的 min-width, min-height 覆盖了。在zTreeStyle.css 中如下几处定义中:

.ztree li span.button.chk {width:13px; height:13px;  margin:0 3px 0 0; cursor: auto}
.ztree li span.button.switch {width:18px; height:18px}
.ztree li span.button {line-height:0; padding:0; margin:0; width:16px; height:16px;...}

加入 “min-width:1px; min-height:1px;” 屏蔽掉 “.metrouicss .button” 中的对应值,然后测试一下。本来以为这样就可以了,可还是有问题,如下图所示:



文件夹图标之后多了点东西,是 “zTreeStandard.png” 图片中的一部分。同样用以上方式调试,发现是 “padding” 设置被覆盖导致的。zTreeStyle.css 中的设置为 “.ztree * {padding:0;”,有些被框架中的如下设置覆盖了:

        .metrouicss .button {
                ...
                padding: 4px 10px;
                position: relative;
                ...
        }

在 zTreeStyle.css 中的相关位置加上 “padding:0;”,问题就解决了。


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 5
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回