2016-12-20 2 views
0

Чтобы уменьшить размер моего CSS-файла, я хотел разложить некоторые команды, например background-size. Скажем, у меня есть много разделов, как это:Не удается ли установить фоновые настройки фона из фонового изображения?

#interlude { 
    background: url(https://.../unsplash.jpg) no-repeat center fixed; 
    -webkit-background-size: cover; 
    -moz-background-size: cover; 
    -o-background-size: cover; 
    background-size: cover; 
} 

При использовании:

<div id="interlude"></div> 

Если у меня есть много разных «Interlude» дивы, все размеры, связанные строки в CSS дублируются. Я хотел бы получить что-то вроде этого:

#interlude { 
    background: url(https://.../unsplash.jpg) no-repeat center fixed; 
} 
.bw-back-cover { 
    -webkit-background-size: cover; 
    -moz-background-size: cover; 
    -o-background-size: cover; 
    background-size: cover; 
} 

В этом случае bw-back-cover класс объявлен только один раз. Но это не работает, и я не знаю, что это нормальное поведение или нет.

Оба случая на Codepen

+0

У вас не может быть нескольких div 'interlude'. По крайней мере, не с тем же «id». – Ionut

+0

@crazymatt, кажется, из кодекса, который есть. – Ionut

+0

Да, я видел это позже, поэтому я удалил свой комментарий. Для быстрого и грязного исправления вы можете перезаписать класс ID, если вы добавите «важное» правило в свой класс, но я действительно не рекомендую его. – crazymatt

ответ

3

В случае Вашего CodePen, то сокращенная background свойства перекрывая всех фоновых связанные свойств, указанные не только те, - так background-size игнорируются, поскольку background имеет более высокий приоритет (находясь в ID по сравнению с классом).

Есть два способа исправить это.

1) Простой способ состоит в том, чтобы добавить !important в каждую строку объекта background-size, чтобы они не были перезаписаны стенографией background. (Тем не менее, я хотел бы предложить второе решение ниже, поскольку !important трудно отменить, если это необходимо.) Код:

.bw-back-cover { 
    -webkit-background-size: cover !important; 
    -moz-background-size: cover !important; 
    -o-background-size: cover !important; 
    background-size: cover !important; 
} 

2) Очиститель фикс будет разделить ваши свойства фона вместо того, чтобы использовать сокращенную, так background-size не перезаписывается. Код:

#interlude { 
    background-image: url(https://.../unsplash.jpg); 
    background-repeat: no-repeat; 
    background-position: center; 
    background-attachment: fixed; 
} 
+1

Хотя я ненавижу ваше объяснение, это правильный ответ. Нет ничего «хакерского» о **! Important ** Этот тип сценария является точной причиной, по которой вызов существует. Он должен поместить все свои обычные вызовы на свои идентификаторы, а затем установить класс с важным тегом. Дело в том, что класс специально предназначен для изменения только одной конкретной части, поэтому важно, что важно. Соглашение об именовании также хорошо сочетается с типом настройки для важного вызова. – jjeining

+1

Спасибо @JonUleis, работал как шарм. Принято – paradise

+0

@jjeining. Вы правы - если этот класс существует с единственной целью добавления 'background-size' к любому элементу, то'! Important' здесь не хаки. Я просто привык к тому, чтобы препятствовать его использованию, потому что это сложно переопределить, но вы правы, что это одна из ситуаций, когда это неприменимо. –