1

我制作了一个自定义的 dnn 模块。但是我模块中的元素从 dnn 获取所有样式。是否有可能仅在模块中进行 css 重置以删除所有 dnn 样式并仅应用我的?

4

2 回答 2

1

这是加载时 DotNetNuke 的 CSS 优先级。

DefaultCss: 5
ModuleCss: 10
SkinCss: 15
SpecificSkinCss: 20
ContainerCss: 25
SpecificContainerCss: 30
PortalCss: 35

以上信息取自DotNetNuke Wiki - 客户端资源管理 API

数字是加载 css 的顺序(5 然后 10 等,默认值为 100,因此这意味着它应该最后加载。

您可以轻松地将自己的 css 文件添加到模块中,或者如果合适,您可以将它们添加到模块中的 module.css 文件中。如果您要使用自己的 CSS/JS 文件,请使用以下代码

<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %>    
<dnn:DnnJsInclude runat="server" ID="jsBootstrap" FilePath="~/DesktopModules/MyModuleFolder/js/bootstrap.min.js" />
<dnn:DnnCssInclude runat="server" ID="cssBootstrap" FilePath="~/DesktopModules/MyModuleFolder/css/bootstrap.min.css" />

如果您是 DotNetNuke 模块开发的新手,我建议您查看 Chris Hammond 的这个模块开发模板(Christoc 的 DotNetNuke 模块开发模板

阅读他的博客以了解如何使用和安装模板(使用 DotNetNuke 7 的新模块开发模板

于 2013-04-04T19:38:09.343 回答
1

我能给你的最好的建议是“css specificity”。使用第一个答案提供的 DNN Wiki 链接,您可以了解 DNN 如何/何时加载每个 .css 文件,但要克服样式渗入您的模块,您需要了解“css 特异性”。

遵循 DNN 使用的加载顺序是一个好主意,因为这样做有好处,例如当您想从皮肤中覆盖模块中的样式时。

您可以最后加载您的自定义模块 css 文件,这可能会有所帮助,但您还应该考虑以更具体的方式实现您的样式,以防止其他 DNN 样式渗入。

例如,您可以将模块 html 包装在 div 标记中,并给它一个 my-foo-module 类。

<div class="my-foo-module">
Module content here
</div>

在 html 结构中使用诸如命名空间之类的 css 类将导致您的模块样式优先于加载的任何其他更通用的样式。我不建议使用重置 css 文件,除非您将其限定为仅影响元素在你的 my-foo-module 包装器中。

这里有一些很好的信息,应该可以帮助你..

http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/

https://www.google.com/#bav=on.2,or.r_cp.r_qf.&fp=4977db6ad6ac1fe8&q=%22css+specificity%22

最后我要说的是,如果您尝试为您的模块加载第三方 css 库,例如 twitter bootstrap,并且您的皮肤正在使用另一个库,或者根本不使用,这至少可以说是非常具有挑战性的。您不想编辑整个引导库以便为您的模块获得更多“Css 特异性”,因此在这种情况下,我无法提供解决方案,因为我自己正在寻找一个解决方案。

于 2013-08-14T03:55:58.243 回答