所以基本上我有一个拥有自己CSS的页面。在我的服务器上,我有一个不同的CSS样式文件的文件夹,所以我想在他们的页面上有一个“预览”窗口。我可以以某种方式,也许使用JavaScript,只将外部CSS文件应用于某个DIV,而不是整个页面,以便我可以获得自定义CSS文件的“预览”?我宁愿不使用iframe。为特定的DIV加载外部CSS
11
A
回答
5
CSS适用于整个文档。
如果你想限制范围,那么你需要使用后代选择器。
例如#id_of_div .the .rest .of .the .selector {}
则必须将此应用到每一个选择,并考虑到groups(所以它并不像前缀整个样式表和后面添加简单的每}
)
你也将找到一个样式表主要文件适用于您的预览。
一个框架可能是解决这个问题的最好方法。
2
您可以使用iframe加载预览页面或动态加载CSS到页面中。但是,如果你想让样式只应用于div,你必须在CSS选择器前加上div的id。 #div-id #element-inside-div { }
。
在加载它可能看起来像这样的脚本:
var cssFile = document.createElement("link");
cssFile.rel = "stylesheet";
cssFile.type = "text/css";
cssFIle.href = "file.css";
document.getElementsByTagName("head")[0].appendChild(cssFile);
11
像昆汀说,你可以用后代选择限制范围。像less可以帮助很多。例如,我想有“bootstrap.css”仅适用于#MyDiv,在“my.less”:
#MyDiv {
@import "bootstrap.less";
}
“bootstrap.css”应该改名(或链接),以“bootstrap.less ”。运行:
lessc my.less my.css
会将#MyDiv添加到导入文件中的每个选择器。
4
对于我的一个项目,我需要完全一样的东西,但也支持CSS版本2
长搜索所有网站上后,我并没有发现任何有用的东西,所以我决定使用JavaScript实现了这个功能,它实际上可以将整个CSS应用于DOM中的特定元素。
只需调用函数applyCSSFileToElement,下面(取决于jQuery库)所描述的:
function renderCSSForSelector(css, selector) {
return ((css+"")||"").replace(/\n|\t/g, " ")
.replace(/\s+/g, " ")
.replace(/\s*\/\*.*?\*\/\s*/g, " ")
.replace(/(^|\})(.*?)(\{)/g, function($0, $1, $2, $3) {
var collector = [], parts = $2.split(",");
for (var i in parts) {
collector.push(selector + " " + parts[i].replace(/^\s*|\s*$/, ""));
}
return $1 + " " + collector.join(", ") + " " + $3;
});
}
function applyCSSToElement(css, elementSelector) {
$("head").append("<style type=\"text/css\">" + renderCSSForSelector(css, elementSelector) + "</style>");
}
function applyCSSFileToElement(cssUrl, elementSelector, callbackSuccess, callbackError) {
callbackSuccess = callbackSuccess || function(){};
callbackError = callbackError || function(){};
$.ajax({
url: cssUrl,
dataType: "text/css",
success: function(data) {
applyCSSToElement(data, elementSelector);
callbackSuccess();
},
error: function(jqXHR) {
callbackError();
}
})
}
功能说明:
- renderCSSForSelector - 实际上预先考虑每个样式定义选择。
- applyCSSToElement - 获取CSS源数据,应用renderCSSForSelector并将其注入到HEAD标记中。
- applyCSSFileToElement - 应用CSS文件(cssUrl)到一个特定的区域(elementSelector)在DOM。 回调成功在成功加载文件并应用CSS时调用。加载CSS文件时出现错误时会调用回调错误。
祝你好运!
相关问题
- 1. 如何从外部网页加载特定DIV到我网站的特定DIV?
- 2. 如何加载浏览器特定的外部css文件?
- 3. 用php加载外部div
- 4. 如何只为特定的div添加外部jQuery?
- 5. 从外部文件加载div到div
- 6. 为特定div重置css
- 7. 如何从外部内容特定div中将jQuery内容加载到div中
- 8. 如何为div加载css?
- 9. 重新加载特定div
- 10. Jquery加载特定Div
- 11. jQuery/ajax - 加载外部Div的
- 12. 将CSS class添加到DnnModule外部div
- 13. 为特定页面加载特定的css文件?
- 14. 使用它自己独特的css加载外部html
- 15. 从另一个域的外部网站加载特定的div到iframe
- 16. 是否有可能在html中加载外部css“特定的一些行”?
- 17. jQuery将外部swf加载到div中
- 18. 从外部加载一个div
- 19. jQuery来加载外部网页中DIV
- 20. 在div中加载外部ajax内容
- 21. 将外部文件加载到div中
- 22. 使用iFrame加载外部Div替代
- 23. ajax在外部div下不加载
- 24. 将外部页面加载到DIV中
- 25. 将外部HTML加载到DIV
- 26. 如何从外部网站加载DIV?
- 27. Jquery - 在DIV中加载外部页面
- 28. CSS底部0对齐div的外部
- 29. 在特定部门中加载外部页面内容
- 30. 在div上加载外部网页并同时获取特定网址
我们可以使用javascript来做到这一点吗? –
@Jayanta你可以使用less.js来做到这一点,这意味着渲染过程在客户端完成。尽管如此,不建议在生产中使用。有关详细信息,请参阅http://lesscss.org/#client-side-usage。 – SubRed
不应该@import规则总是先于所有其他类型的规则? –