2011-09-03 113 views
0

我使用此代碼刪除第三元素的邊距(縮略圖):將CSS樣式應用於右側的最後一個元素?

$j('.project:nth-child(3n)').addClass('odd-element'); 

enter image description here

我開始使用媒體查詢,使網站移動準備好,但我得到了這個問題:

enter image description here

當屏幕伸展,類不再需要被施加到第三元件,但到第二元件:

有沒有什麼辦法修改上面的jQuery代碼來說一些類似的話:將類應用於右邊的最後一個元素?

回答

3

你想用JS,沒有母校做些什麼呢?

我會做這樣的:

.project { float:left;margin-left:20px } 
.projectParent { margin-left:-20px } 

你去那裏。除了添加右邊距,只需添加左邊距並將容器幾個像素向左移動即可。

沒有js參與!

//編輯:哦,是的,你擺脫了所有靈活的盒子問題!

+0

+1會做到完全一樣(可能與位置:相對,但這是irelevant) – mreq

+0

@Ionut Staicu你能舉個例子嗎?因爲我嘗試了它,整個容器(包括'.project' divs移動到左邊。 – alexchenco

+0

你去了:http://jsfiddle.net/xrJkB/ –

1

我會做沿着此線的東西:

$j(function() { 

    if($j(window).width() < 500) { 

     $j('.project').removeClass('odd-element'); 
     $j('.project:nth-of-type(2n)').addClass('odd-element'); 

    }); 

}); 
+0

奇怪的是,該代碼沒有工作。 – alexchenco

+0

試一下'j'後每'$' –

+0

@Bobby - 我把那裏,因爲他顯然沒有衝突設置... – daryl

0

有可能是一個更好的辦法,但我的本能會看你的主柱的寬度,按項目分(項目)的寬度,這將告訴你每行有多少項目,然後可以將該值輸入到第n個選擇器中。

如果沒有看到您的頁面結構,無法真正顯示任何代碼。

1

爲什麼不處理這個「愚蠢」的方式,並使用此算法:通過所有相關要素

  1. 基於自己的立場,制定出哪些是最遠右
  2. 添加對這些元素的類

例如

$(function() { 
    var max = 0; 

    $('li').each(function() { 
     max = $(this).offset().left > max ? $(this).offset().left : max; 
    }); 

    $('li').each(function() {  
     if ($(this).offset().left == max) 
     { 
      // add your class here - this is just an example 
      // for the purposes of demo'ing 
      $(this).css('margin-left', 0); 
     } 
    }); 
}); 

http://jsfiddle.net/S9TpX/1/

相關問題