2013-11-07 2 views
5

У меня есть DIV так:Возможно передать аргументы классам CSS?

<div class="center small-top-margin"> 
    <%= rails code %> 
</div> 

где `малых верхняя наценка выглядит следующим образом:

.small-top-margin { 
    margin-top: 2em; 
} 

Есть ли способ, чтобы передать аргумент класса CSS таким образом, что

class="top-margin(2) # =>margin-top: 2em;
class="top-margin(5) # =>margin-top: 5em; и т.д ..

или даже лучше

class="margin(top, 2) # =>margin-top: 2em;

Я включил Rails тегов в случае, если есть способ сделать это через рельсы, хотя чисто CSS решение/дерзость будет лучше.

+0

Невозможно отправить как параметр в класс css –

+2

Нет. Я очень сомневаюсь. SASS работает путем компиляции CSS, но идентификатор 'class =" 'не является CSS. Это HTML, и он содержится в файле 'ERB'. Вы передаете аргументы в CSS через структуры имен, такие как 'top-margin-2', и вы можете создавать динамически названные классы из SASS: http://stackoverflow.com/questions/16496353/create-dynamic-class-names-using -while-loop –

ответ

6

Нет, но вы можете генерировать достаточное количество готовых классов:

.top-margin-2 { 
    margin-top: 2em; 
} 
.top-margin-5 { 
    margin-top: 5em; 
} 

Тогда вы можете создать свой HTML с class="top-margin-#{margin}"

обычно это не очень хорошая вещь, но если вы на самом деле нужно это, это возможно. Я настоятельно призываю вас хотя бы пересмотреть и спросить, что вы действительно хотите; CSS-классы должны быть семантически значимыми, иначе вы могли бы также применить CSS к атрибуту стиля. Что для вас значит 2em? Что такое 5em?

+0

вы правы в отношении «возможно, а также непосредственно применить» к стилю attr. Был более заинтересован, если бы я мог минимизировать классы CSS, но опять же вы правы - разумное число кажется лучшим способом. – dax

0

Вы можете передать параметры в файл CSS с помощью php. 1. Создайте свой стиль по имени style.php как:

<?php 
/*** set the content type header ***/ 
header("Content-type: text/css"); 
/** set the color ***/ 
$page = $_GET['page']; 
$font_size = $_GET['font_size']; 
if($page==1){ 
    $color = 'red'; 
}else{ 
    $color = 'yellow'; 
} 
?> 
#test{ 
    color:<?=$color;?>; 
    font-size:<?=$font_size;?>; 
} 
  1. В HTML файл вызова style.php и передать параметр к нему

    \ ссылка отн = "таблица стилей" медиа = экран " "Тип =" текст/CSS» HREF = "/ CSS/style.php? страница = 1 & font_size = 35px"/>

    DIV ID = "тест"> тест тест/DIV>

Смежные вопросы