继承/覆盖来自不同外部文件的现有CSS规则
本文关键字:文件 规则 CSS 外部 覆盖 继承 | 更新日期: 2023-09-27 18:24:26
我得到了一个现有的项目,它过去没有Bootstrap(3),但现在我必须更改它并保留旧的css内容。
我当前的CSS订单:
var bundleCSS = new StyleBundle("~/Views/bundle/newBundle").Include(
"~/Views/Shared/normalize.css",
"~/Scripts/jquery.ui/jquery-ui-latest.custom.css",
"~/Scripts/jquery.jqGrid/ui.jqgrid.css",
"~/Scripts/sweetalert/sweet-alert.css",
"~/Content/bootstrap.css",
"~/Views/Shared/OldButNeededLayout.css",
"~/Content/custom.css"); //will be rendered in that order
custom.css
用于修复在项目中添加bootstrap.css
时出现的所有错误。
这里的问题是,OldButNeededLayout.css
有大约3000行css代码,顺便说一下,当前的项目相当大。
因此,当用旧css覆盖bootstrap并通过添加bootstrap来修复错误时,我会得到不可预测的结果。(因为我不知道它会在哪里改变什么)
如何解决将bootstrap css/js集成到(我的)现有项目中的问题?
这听起来像是一种集成Bootstrap的混乱方式,同时试图避免对OldButNeededLayout
文件进行任何更改。。。
根据我的经验,将Bootstrap集成到现有项目中是一项艰巨的任务,需要对HTML进行大量修改(添加类和修改标记结构),并对现有CSS进行大量修改,以使其在Bootstrap中发挥良好的作用。
您的方法会使维护变得困难,还会向客户端提供许多不必要的CSS代码。
我建议:
-
从项目中删除
OldButNeededLayout
css并清除custom
的内容,使得绝大多数css来自独自创立 -
显然,这看起来一点也不像你的网站应该,所以
-
有方法地固定每一个需要改变的布局或样式,在你的
custom
css中,直到你有一个类似于你的预引导站点。使用OldButNeededLayout
中的位必要,但要确保每个样式属性都是必要的。
当然,这是一项艰巨的工作,但它将为客户带来一个更具可维护性、可预测性和简洁性的项目。
我认为这不是一个合理的期望,你可以把Bootstrap放到一个大项目上,而不期望对现有的HTML和CSS进行重大更改。
以下建议并不理想,当然还有更好的方法来实现您的需求,但我的建议符合您的要求。。。
在新的custom.css文件中,可以尝试在声明元素时更加具体。因此,如果在OldButNeedLayout.css中,您覆盖了Bootstrap的样式,例如:
.divclass .jumbotron h1 {
color: red;
}
您可以在custom.css文件中声明更高级别的特定性,以确保它将覆盖OldButNeedLayout.css:中的内容
.parent .divclass .jumbotron h1 {
color: blue;
}