将css应用于一组网址中存在的元素

时间:2015-10-29 12:31:19

标签: javascript jquery html css asp.net

我相信如果没有javascript / jquery,以下情况是不可能的,但仍然想确认我在css / html / jquery中表现不佳。

我想将某种风格应用于元素,但仅限于在我的网站中访问特定网址时。

我正在使用asp.net,因此单个aspx页面模板可以满足一系列网址,因此我无法在模板的html中编写样式。

如果我在css文件中编写此样式并将其包含在模板中,它将应用于所有网址。

我可以通过jquery有选择地加载这个css文件,但我不想让jquery尽可能多地参与其中。

我也可以使用asp.net literal control并根据代码隐藏的url加载css,但是添加新的url会涉及代码更改。它听起来也很混乱。

目前我通过javascript / jquery在document.ready

上应用此功能
if (window.location.href.toLowerCase().indexOf("/some-url/") > 0)
{
    $('#some-element-id').attr('style', 'display:none');
}

但这显示了在消失之前分裂的元素。

涉及jquery / javascript但解决上述问题的解决方案也会有所帮助。

我希望我能够正确解释它。

如果需要澄清,请告诉我。

4 个答案:

答案 0 :(得分:1)

它可能首先显示,因为它在页面加载之前至少呈现一次,因此它将显示,直到在页面加载时调用jQuery ready()函数。

我认为最简单的解决方法是默认隐藏元素,然后在URL中 时显示它:

#some-element-id{
    display:none;
}
if (window.location.href.toLowerCase().indexOf("/some-url/") < 0)
{
    $('#some-element-id').attr('style', 'display:block');
}

答案 1 :(得分:0)

如果#some-element-id位于单独的页面上,则

  1. some-class添加到您的元素
  2. 在新的.css文件中定义该类
  3. 仅在您想要样式的页面上导入新的.css文件 适用于

答案 2 :(得分:0)

URL不属于DOM,因此CSS无法选择任何元素。

正如您所说,在特定URL中应用css的唯一方法是使用javascript。

我可以告诉您的建议是使用addClass代替

.attr('style', 'display:none');

或者如果您需要添加大量的CSS,您还可以包含或替换完整的文件,如:

$('head').append('<link rel="stylesheet" href="youStilefile.css" type="text/css" />');

我希望它有所帮助!

答案 3 :(得分:0)

最佳解决方案是通过从服务器生成的代码(独立于客户端)来分离您的CSS样式。

此外,您可以测试以下代码而不是// TitlePage.qml import QtQuick 2.0 Item { property string title TitleText { size: 22 anchors.top: parent.top } TitleText { size: 18 anchors.bottom: parent.bottom } } // TitleText.qml import QtQuick 2.0 Text { property int size text: "<b>" + title + "</b>" font.pixelSize: size }

$('#some-element-id').attr('style', 'display:block');

请确保您的jq lib导入成功。