将样式表链接到 ID
Link stylesheet to ID
我想知道是否有解决方案可以实现这样的事情,其中样式表仅设置页面的一部分样式。
<link href="/Content/stylesheet.css" for="OnlyApplyStylesWithinHere" rel="stylesheet" type="text/css" />
<div id="OnlyApplyStylesWithinHere">
</div>
我知道我可以在样式表本身中执行此操作,但这在我的场景中是不可能的。
这种效果可以用Javascript/Jquery来完成吗?
如果样式表不违反同源策略,我让这个插件女巫做你想做的事。
你可以像这样使用它:
<link rel="stylesheet" href="..." data-wrapper="#mySelector" />
<style data-wrapper="#mySelector">
.ninja {
visibility: hidden;
}
</style>
初始化后再次:
$("link[rel='stylesheet']").addWrapperToStyle("#mySelector");
$("style").addWrapperToStyle("#mySelector");
(function($) {
var $styleSheet = $("<style type='text/css'/>").appendTo("head");
function getStyle( $element, callback ) {
callback($element.text());
}
function getLink( $element, callback ) {
$.get($element.attr("href"), function( style ) {
callback(style);
});
}
function appendStyle( style ) {
$styleSheet.text(function(i, text) {
return text + "'n" + style;
});
}
function wrapStyle( element, selector ) {
var $element = $(element);
if ( $element.is("style") ) {
getStyle( $element, callback );
} else {
getLink( $element, callback );
}
function callback( style ) {
if ( style ) {
style = ("" + style).replace(/([^}]+){/g, function(match) {
var matches = match.split(","),
i = 0,
len = matches.length;
for ( ; i < len; i++ ) {
matches[i] = selector + " " + $.trim(matches[i])
}
match = matches.join(",");
return match;
});
appendStyle(style);
$element.remove();
}
}
}
$(function() {
$("link[rel='stylesheet'][data-wrapper], style[data-wrapper]").each(function() {
wrapStyle( this, this.getAttribute("data-wrapper") );
});
});
$.fn.addWrapperToStyle = function( wrapper ) {
return this.each(function() {
wrapStyle(this, wrapper);
});
}
})(jQuery);
我不确定跨浏览器兼容性。但你可以试试...
有一个HTML5功能,称为作用域样式表;它是WHATWG草案的一部分,但浏览器支持不存在(Chrome通过about:flags
支持它,但没有开箱即用的支持)。您可以使用此JavaScript插件来使其工作。
或者,如果服务器端可以重写样式表,则可以使用 SASS 之类的东西:
#my-section {
@import "local-copy-of-the-stylesheet.scss";
}
检查媒体属性是否对您有帮助。 media="handheld"不仅会为苹果定义CSS,还会为所有小屏幕设备定义CSS。
http://www.w3schools.com/tags/att_link_media.asp
我们可以用3种方式放置样式,
1)Internal
将所有样式放在同一个HTML页面中,带有样式标签
2)External
通过在 HTML 页面的头部部分为样式表提供参考
3)In-line
这可以使用 HTML 元素的样式属性来完成即。 <div style="some styles"></div>
我认为以上任何人都可以解决您的疑问。
我不相信你的要求是可能的。
然而,一种黑客方法是将此HTML标记放入一个单独的文件中,样式表在head
中链接,然后使用iframe
将其包含在原始文件中。
<head>
<link href="[main stylesheet" />
<link href="[this page only stylesheet]" />
</head>
就像我说的,它很笨拙,但我认为这是不更改样式表的唯一方法。
相关文章:
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 如何进行AJAX调用,使其仅在我单击包含在特定类中的链接时触发;id”;父元素的
- 通过单击链接(兄弟姐妹?)从无线电输入中获取id
- 通过id查找元素并附加链接
- url中没有id的内部链接
- 如何绑定多个具有相同敲除功能、传递不同ID的链接
- 修复Javascript代码以将文本中的所有Youtube链接转换为Youtube ID功能
- 如何从链接中检索 ID
- 检测单击的链接的 ID 以更改链接的去向
- 获取单击的链接的 ID
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- 使用animate将标签链接锚定到不同页面上的ID
- 如何设置从数据库到php会话的id点击链接
- VBA IE单击/显示没有id或标记而不是超链接的javascript
- Meteor发布中通过id链接用户
- 更改切换 ID 链接的颜色
- 铬错误或编码错误?目标页面中的锚/ID 链接不起作用
- 如何控制页面上的#id链接
- 想在其他html页面上只运行匹配id链接吗
- 使 id 链接可见 - 防止单击定位点时发生默认事件