2015-10-29 75 views
0

我相信以下是不可能沒有javascript/jquery,但仍然想確認,因爲我不擅長css/html/jquery。將css應用於存在於一組網址的元素

我想某些樣式應用到一個元素,但只有當一個特定的URL在我的網站被訪問。

我正在使用asp.net,因此一個單獨的aspx頁面模板可以迎合大量的url,所以我無法在模板的html中編寫樣式。

如果我寫這篇文章的風格在CSS文件並將其包含在它會被應用到所有的URL模板。

我可以有選擇地通過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,但解決上述問題,也將有助於解決方案。

我希望我能好好解釋一下吧。

請讓我知道是否需要任何澄清。

+0

我會根據URL加載樣式表。一個.net或php代碼來檢查url並相應地應用css。 –

回答

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'); 
} 
+0

嗨雅各,這隻會是一回事。它會停止閃爍,雖然 – samar

+0

@samar是的,但它不會在頁面加載時短暫顯示 –

0

如果#some-element-id是一個單獨的頁面上,然後

  1. 添加some-class到你的元素
  2. 定義一個新的.css文件只
  3. IM該類該網頁上的新.css文件,你想要的樣式 端口適用於
0

URL不是DOM的一部分,所以沒有通過CSS選擇元素。

正如你所說,你可以將css應用於特定URL的唯一方法是使用javascript。

的建議,我可以告訴你的是使用addClass而不是使用

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

或者,如果您需要添加大量的CSS,你也可以包括或更換一個完整的文件,如:

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

我希望這會有所幫助!

0

最好的解決方案是通過從服務器生成的代碼(獨立於客戶端)來分隔您的CSS樣式。你

還可以測試下面的代碼,而不是$('#some-element-id').attr('style', 'display:block');

$('#some-element-id').hide(); 

,並請確保您的JQ LIB成功導入。

相關問題