2013-09-26 12 views
11

Próbujesz utworzyć responsywną siatkę wideo. Zamiast używać różnych% dla każdego zapytania o media, miałem nadzieję użyć standardowej formuły SASS, która oblicza się na podstawie szerokości 100%, ale nie jestem pewien, czy SASS może to zrobić. Formuła 40 w poniższym wzorze uwzględnia stałe marginesy 2 x 20 pikseli (tj. Jest to siatka 3-kolumnowa).Obliczanie matematyczne SASS

Idealna formuła:

ul.videos { 
    li { 
    width: ((100%/3) - 40); 
    } 
} 

jakikolwiek sposób CSS/SASS może obsłużyć to? Wolałby nie używać JS, jeśli to możliwe.

Odpowiedz

19

Niestety nie można odjąć 40px od 33%. SASS generuje standardowy plik CSS do interpretacji przez przeglądarkę, a w czasie budowy SASS nie zna wymiarów przeglądarki.

Jednakże, powinno być możliwe, aby osiągnąć pożądany efekt za pomocą marginesów CSS, np

ul.videos { 
    li { 
    width: (100%/3); 
    div { 
     margin: 0 20px; 
    } 
    } 
} 
+0

Wyszukiwanie z google jest to składnia, której szukałem. – jchook

+0

Potrzebne są nawiasy okrągłe. Nie ma potrzeby, aby calc() –

25

jest to możliwe w all major browsers użyciu calc().

Demo: http://jsfiddle.net/gb5HM/

li { 
    display: inline-block; 
    width: calc(100%/3 - 40px); 
} 

Oczywiście, nadal można zadeklarować to w pliku Sass, ale jest to czysty roztwór CSS. W SASS nie jest to możliwe, ponieważ SASS nie wie, co to jest 100% w czasie generowania arkusza stylów, a wartość 100% piksela może się zmieniać wraz ze zmianą rozmiaru dokumentu.

Spec: http://www.w3.org/TR/css3-values/#calc

+0

wow, tak dawno temu .. – Martian2049

Powiązane problemy