#node.js #css #gruntjs #csslint
#node.js #css #gruntjs #csslint
Вопрос:
У меня есть это в моем css:
@media screen and (max-width:1200px) {
#cssmenu {
background:url(/public/system/assets/img/profile.png) no-repeat , url(/public/system/assets/img/bgprofile.jpg) repeat-x;
width: 100%;
}
}
@media screen and (max-width:970px) {
#cssmenu {
background:url(/public/system/assets/img/profile.png) no-repeat , url(/public/system/assets/img/bgprofile.jpg) repeat-x;
width: 150px;
}
}
Я получаю сообщение об ошибке с задачей csslint:
Background image '/public/system/assets/img/bgprofile.jpg' was used multiple times, first declared at line 753, col 3. Every background-image should be unique. Use a common class for e.g. sprites. (duplicate-background-images)
Есть ли способ объявить эти изображения, чтобы я не получал эту ошибку?
Редактировать (другой случай):
.linkmycars
{
background:url('/public/system/assets/img/sub.png') no-repeat right 20px, url('/public/system/assets/img/bglinkcars.png') repeat-x #ececec;
}
.addcars
{
background:url('/public/system/assets/img/add.png') no-repeat right 17px, url('/public/system/assets/img/bglinkcars.png') repeat-x #ececec;
}
И я получаю эту ошибку: [L651: C1]
Фоновое изображение ‘/public/system/assets/img/bglinkcars.png’ использовалось несколько раз, впервые объявленное в строке 628, раздел 1. Каждое фоновое изображение должно быть уникальным. Используйте общий класс, например, для спрайтов. (d
увеличить-background-images)
Ответ №1:
Одно из ваших правил здесь кажется совершенно избыточным. Правило под max-width: 970px
уже выполняется, когда под max-width: 1200px
.
Резюмируя, измените его на:
@media screen and (max-width:1200px) {
#cssmenu {
background:url(/public/system/assets/img/profile.png) no-repeat , url(/public/system/assets/img/bgprofile.jpg) repeat-x;
width: 100%;
}
}
@media screen and (max-width:970px) {
#cssmenu {
width: 150px;
}
}
Что касается вашего отредактированного вопроса, у вас есть несколько вариантов. Поскольку у вас разные изображения, вы не можете объединить два правила там.
Вариант первый: спрайт sub.png и add.png вместе, затем используйте background position, чтобы переместить их в нужное положение / с глаз долой. Это сработало бы только в некоторых случаях, и это немного запутанно, в зависимости от макета. Я привел своего рода ленивый пример, просто чтобы вы поняли, что я имею в виду. Вероятно, вам придется создать спрайт с большим прозрачным пространством между sub.png и add.png: jsfiddle
Вариант второй: проще, но менее семантичный. Вместо использования нескольких фонов используйте несколько элементов. jsfiddle и пример:
HTML:
<div class="tiles"><div class="linkmycars"></div></div>
<div class="tiles"><div class="addcars"></div></div>
css:
.tiles {
background: url(/public/system/assets/img/bgprofile.jpg) repeat-x;
}
.linkmycars, .addcars {
width: 100%;
height: 100%;
}
.linkmycars {
background: url('/public/system/assets/img/sub.png') no-repeat right 20px;
}
.addcars {
background: url('/public/system/assets/img/add.png') no-repeat right 17px;
}
Третий вариант: не слишком беспокойтесь о csslint. Оно предназначено для того, чтобы помочь вам, а не заставлять вас прыгать через обручи. Ваш код будет отлично работать в любом случае.
Надеюсь, это помогло.
Комментарии:
1. Тх, это решило проблему (для этого случая), но есть другой подобный случай (я отредактировал свой вопрос)
2. Да, это очень помогло. Спасибо. Я вижу свой вариант здесь. Я попробую 2-й, а если у меня не получится, переходите к третьему 😉