2014-10-03 1 views
0

Что является преимуществом использования переменных LESS для изменения таких свойств, как;Что является преимуществом использования переменных LESS

@Margin-10: 10px; 
@Margin-12: 12px; 
@Margin-19: 19px; 
@Margin-110: 110px; 
@Margin-189: 189px; 
@Margin-115: 115px; 
@Margin-150: 150px; 
.................and so on. 

И создание тех переменных, которые не будут изменяться в будущем.

@PullLeft: left; 
@PullRight: right; 

Я вновь факторинге LESS в моем приложении, которое имеет слишком много CSS свойства, которые используют переменные для указанных выше сценариев. Есть ли преимущество использования переменных в этом случае?

+1

Для первого набора, я согласен с ответом Даррена. Это выглядит очень странно. Для второго набора не видно никакой необходимости в переменной. Переменные лучше использовать в тех местах, где вы знаете, что одинаковое значение требуется для нескольких свойств в разных селекторах, и хотите иметь одно общее место для их обслуживания, чтобы облегчить их изменение в будущем. Наконец, я также думаю, что этот вопрос может привлечь ответы на основе мнения. – Harry

+0

Я согласен, что на этом может быть много вещей, основанных на мнениях! Однако я хочу добавить, что второй набор такой же, как и первый. В обоих случаях специфика определения вылилась в имя переменной, не делая желаемого по той же причине :) –

ответ

2

Его очень не рекомендуется использовать имя переменной так же, как значение. Цель использования переменных заключается в том, что если требуется изменение, то модификация минимальна. например, вы указали переменную @ Container-width: 100px, и вы используете ее в 10 файлах. Поэтому, если вы хотите изменить его значение на 200px, вам просто нужно будет изменить значение больше.

Есть два недостатка использования имен переменных, как вы предлагаете:

  1. Если вы хотите изменить переменную @ Margin-10 значение сказать 15 @ Маржа например, 10: 15 это будет выглядеть странно.
  2. Если вы объявляете переменные для каждого значения, то нет никакой выгоды объявить его как переменной, потому что вы должны изменить его в нескольких местах (который не выполняет назначение переменных)

Сейчас подходит к имя переменной @PullRight или @PullLeft. Опять же, нет пользы от использования таких имен, поскольку значения (слева, справа, сверху, снизу) ограничены не переменными. Поэтому я бы предположил, что вы не создаете переменные, а используете значения как есть.

Создайте имена переменных на основе их функциональности. Используйте существительное и глаголы.

6

Думаю, у нас может быть молот в доме с этими переменными. Их так называемая проблема является проблематичной как потому, что она действительно не работает с семантическими концепциями макетов, а потому, что если вы измените некоторые из них, то вскоре произойдет полный хаос. Только представьте себе:

@margin-189: 27px; 
@margin-115: 46px; 

У меня возникли проблемы с вводом этого, даже в качестве примера. Я чувствую что-то вроде сцены с душем от The Crying Game.

Нет, эти переменные являются примером того, когда ваш единственный инструмент - молоток, все, что вы видите, - это гвозди.

Правильнее может быть что-то более семантически ароматизированный, как:

@container-margin-left: 36px; 
@panel-margin-left: 20px; 

Те, по крайней мере говорить о том, как ваш сайт будет стиль и, если значения были изменить, это не приведет к немедленному обслуживания Trainwreck ,

1

Это то же самое, что использование переменных на любом языке. Вы можете просто изменить их, когда захотите.

Теперь вы можете думать - они никогда не изменятся, но в будущем вы можете внести некоторые изменения. Вы даже можете переместить CSS в другой проект, где вы решите внести некоторые изменения. Используя переменные, вы сделаете это за минуту.

Другой пример. Давайте предположим, что у вас есть следующий код в CSS:

#page { 
    width: 800px; 
} 
#content { 
width: 600px; 
} 
#sidebar { 
    width: 200px; 
} 

теперь вы решили изменить #page ширину 780px

SO изменить его:

#page { 
    width: 780px; 
} 
#content { 
width: 600px; 
} 
#sidebar { 
    width: 200px; 
} 

и теперь у вас есть проблема - вы нужно посмотреть во всем файле, что не так (в реальном файле это будет не так просто, как в примере выше).

Используя переменные, которые вы могли бы иметь:

@page-width: 800px 
@content-width: 600px; 
@sidebar-width: @page-width - @content-width; 

так без проблем вы можете изменить значение или сделать небольшие изменения в этих 3-х линий.

Однако в примере из вопроса я думаю, что это не было сделано так, как должно.Если вы определяете:

@Margin-10: 10px; 
@Margin-12: 12px; 
@Margin-19: 19px; 

вы ожидаете, что Margin-10 10 Маржа блок, но вы можете решить, чтобы изменить значение, скажем, 11, и вы можете иметь:

@Margin-10: 11px; 
@Margin-12: 15px; 
@Margin-19: 24px; 

Это сделает вас полностью беспорядок, потому что на самом деле, даже если вы посмотрите на этот файл, вы теперь не знаете, что такое переменная Margin-10 и какова ее цель. Он имеет даже другую ценность, чем его название, поэтому вы не знаете, чего ожидать, и вам снова нужно взглянуть на весь источник CSS.

Так что переменные полезны, но они должны иметь имена, которые вы легко можете запомнить и узнать, какова их цель. Вы никогда не должны связывать имя переменной с переменным значением, потому что значение может измениться, и вы получите бесполезное имя.

Однако это также возможно в приведенном выше примере, что кто-то определить эти поля даже не менять их значения, но изменить их единицы, например, для использования EM:

@Margin-10: 10em; 
@Margin-12: 12em; 
@Margin-19: 19em; 

Однако я до сих пор считаю, что это не самое лучшее решение потому что это ограничивает повторное использование этого файла

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