Otrzymuję Invalid property valuebłąd. W każdej przeglądarce, w tym w wersji Canary Chrome.
Mike Fielden
Jeśli istnieje funkcja Sass thatd dostać mnie co chcę thats cool, ja po prostu bawi się z calc...
Mike Fielden
Tak :) Tak jak powiedziałem, nie obchodzi mnie, jak to się stanie, calckiedy poszedłem pierwszy i nie zadziałało. Wygląda na to, że calcnie działa w żadnej z moich przeglądarek, więc domyślam się, że najlepsza byłaby implementacja Sass.
Mike Fielden
1
Sass nie może działać jako wypełnienie funkcji calc (). Nie wie, jak przekonwertować 25% na px, więc może wykonać obliczenia i wygenerować CSS. W zależności od Twoich potrzeb, może istnieć alternatywa, na przykład użycie rodziny stołów displayowych, zmiana rozmiaru pudełka lub użycie ujemnych marginesów ( jsfiddle.net/5JZGt )
cimmanon
Odpowiedzi:
255
Sass nie może wykonywać arytmetyki na wartościach, których nie można przekształcić z jednej jednostki na drugą. Sass nie ma sposobu, aby dowiedzieć się dokładnie, jak szerokie jest „100%” pod względem pikseli lub jakiejkolwiek innej jednostki. Wie o tym tylko przeglądarka.
Jeśli twoje wartości są w zmiennych, być może będziesz musiał użyć interpolacji, aby zamienić je na ciągi (w przeciwnym razie Sass spróbuje po prostu wykonać arytmetykę):
Powiedziałbym, że calc () w ogóle nie działa w większości przeglądarek. Platformy mobilne są tak samo ważne jak komputery stacjonarne.
dalgard,
3
Brak argumentów, ale policz przeglądarki! Więcej wsparcia dla funkcji calc () niż nie, a nawet więcej będzie obsługiwać go w najbliższej przyszłości!
chrisgonzalez
5
Miałem problemy szerokość użyciu zmiennej wewnątrz funkcji calc, ale znaleźć tutaj: stackoverflow.com/questions/13542164/... że mogę odwołać zmiennej takiego: calc(25% - #{$var}).
mlunoe
3
Zawsze możesz skorzystać z opcji powrotu, dodając width: 22%przede wszystkim widths zcalc
Hengjie
1
Stary wątek, ale najwyraźniej możesz również przechowywać samą komendę "calc ()" w zmiennej, więc nie musisz powtarzać operacji arytmetycznych w całym pliku. Przykład: $ wysokość-wideo: calc (# {$ szerokość-wideo} * # {współczynnik-proporcji}); .my-elements {height: $ video-height; }
Stephen Kaiser
25
Tam jest calc funkcja zarówno w SCSS [czas kompilacji], jak i CSS [czas wykonywania]. Prawdopodobnie odwołujesz się do tego pierwszego zamiast drugiego.
Z oczywistych powodów jednostki miksujące nie będą działać w czasie kompilacji, ale będą działać w czasie wykonywania.
Możesz wymusić to drugie używając unquotefunkcji SCSS.
Dziękujemy za wysłanie odpowiedzi na to pytanie! Odpowiedzi zawierające tylko kod są odradzane w przypadku przepełnienia stosu, ponieważ zrzut kodu bez kontekstu nie wyjaśnia, w jaki sposób ani dlaczego rozwiązanie będzie działać, co utrudnia oryginalnemu plakatowi (lub przyszłym czytelnikom) zrozumienie logiki stojącej za nim. Zmień swoje pytanie i dołącz wyjaśnienie kodu, aby inni mogli skorzystać z Twojej odpowiedzi. Dzięki!
Przepraszamy za ożywienie starego wątku - rozciągnięcie Compassa z pseudo-selektorem: after może pasować do twojego celu - np. jeśli chcesz, aby div wypełniał szerokość od lewej do (50% + 10px) ekranu, możesz użyć (w składni z wcięciem SASS):
.example
background: red
+stretch(0, -10px, 0, 0)
&:after
+stretch(0, 0, 0, 50%)
content: ' '
background: blue
Element: after wypełnia 50% na prawo od .example (pozostawiając 50% dostępnego dla szerokości .example), a następnie .example jest rozciągane do tej szerokości plus 10 pikseli.
Invalid property value
błąd. W każdej przeglądarce, w tym w wersji Canary Chrome.calc
...calc
kiedy poszedłem pierwszy i nie zadziałało. Wygląda na to, żecalc
nie działa w żadnej z moich przeglądarek, więc domyślam się, że najlepsza byłaby implementacja Sass.Odpowiedzi:
Sass nie może wykonywać arytmetyki na wartościach, których nie można przekształcić z jednej jednostki na drugą. Sass nie ma sposobu, aby dowiedzieć się dokładnie, jak szerokie jest „100%” pod względem pikseli lub jakiejkolwiek innej jednostki. Wie o tym tylko przeglądarka.
Zamiast tego musisz użyć
calc()
. Sprawdź zgodność przeglądarki w Czy mogę używać ...Jeśli twoje wartości są w zmiennych, być może będziesz musiał użyć interpolacji, aby zamienić je na ciągi (w przeciwnym razie Sass spróbuje po prostu wykonać arytmetykę):
źródło
calc(25% - #{$var})
.width: 22%
przede wszystkimwidth
s zcalc
Tam jest
calc
funkcja zarówno w SCSS [czas kompilacji], jak i CSS [czas wykonywania]. Prawdopodobnie odwołujesz się do tego pierwszego zamiast drugiego.Z oczywistych powodów jednostki miksujące nie będą działać w czasie kompilacji, ale będą działać w czasie wykonywania.
Możesz wymusić to drugie używając
unquote
funkcji SCSS..selector { height: unquote("-webkit-calc(100% - 40px)"); }
źródło
źródło
JEŚLI znasz szerokość pojemnika, możesz zrobić tak:
Zdaję sobie sprawę, że w wielu przypadkach #container może mieć względną szerokość. Wtedy to nie zadziała.
źródło
Przepraszamy za ożywienie starego wątku - rozciągnięcie Compassa z pseudo-selektorem: after może pasować do twojego celu - np. jeśli chcesz, aby div wypełniał szerokość od lewej do (50% + 10px) ekranu, możesz użyć (w składni z wcięciem SASS):
Element: after wypełnia 50% na prawo od .example (pozostawiając 50% dostępnego dla szerokości .example), a następnie .example jest rozciągane do tej szerokości plus 10 pikseli.
źródło
Po prostu dodaj wartość procentową do zmiennej i użyj
#{$variable}
na przykładźródło