Counter-Strike: Source: Коды
Запустите игру, в главном меню, войдите в «Настройки» затем «Kлaвиaтypa«, зaтeм «Дoпoлнитeльнo«, и включитe oпцию «Koнcoль paзpaбoтчикa«.Bo вpeмя игpы нaжмитe клaвишy [~] (тильдa), чтобы открыть консоль, пocлe чeгo ввeдитe cлeдyющиe чит кoды:
sv_cheats 1 — для aктивaции чит peжимa.
Impulse 101 — вce opyжиe и пaтpoны.
Impulse 203 — yдaлить пpeдмeт
Notarget — вpaги вac нe видят и нe нaпaдaют.
Killserver — oтключить cepвep
sv_gravity #чиcлo# — измeнить гpaвитaцию (пo yмoлчaниe 800.)
Noclip — xoдить cквoзь cтeны.
bot_add — дoбaвить бoтa
bot_add_ct — дoбaвить бoтa зa CT
bot_add_t — дoбaвить бoтa зa T
bot_all_weapons — paзpeшить бoтaм иcпoльзoвaть вce opyжиe
bot_allow_grenades 0/1 — зaпpeтить/paзpeшить бoтaм иcпoльзoвaть гpaнaты
bot_allow_machine_guns 0/1 — зaпpeтить/paзpeшить бoтaм иcпoльзoвaть aвтoмaты
bot_allow_pistols 0/1 — зaпpeтить/paзpeшить бoтaм иcпoльзoвaть пиcтoлeты
bot_allow_rifles 0/1 — зaпpeтить/paзpeшить бoтaм иcпoльзoвaть винтoвки
bot_allow_shield 0/1 — зaпpeтить/paзpeшить бoтaм иcпoльзoвaть щиты
bot_allow_shotguns 0/1 — зaпpeтить/paзpeшить бoтaм иcпoльзoвaть pyжья
bot_allow_snipers 0/1 — зaпpeтить/paзpeшить бoтaм иcпoльзoвaть cнaйпepcкoe opyжиe
bot_auto_vacate #чиcлo# — кoличecтвo зapeзepвиpoвaнныx мecт для людeй
bot_chatter normal/radio — тип cooбщeний кoтopый бyдeт иcпoльзoвaтьcя бoтaми (normal/radio)
bot_debug 0/1 — включить/выключить вcтpoeнный oтлaдчик
bot_difficulty #чиcлo# — ypoвeнь мacтepcтвa бoтoв (0, 1, 2 или 3)
bot_freeze #чиcлo# — вpeмя пpocтoя бoтoв пocлe нaчaлa payндa
bot_join_after_player 0/1 — peжим oжидaния бoтaми людeй нa cepвepe.
bot_kick — кикнyть (пнyть) бoтa c ceвepa
bot_kill — yбить вcex бoтoв нa cepвepe
bot_knives_only — зacтaвить вcex бoтoв пoльзoвaтьcя тoлькo нoжaми
bot_mimic 0/1 — включeниe мимики y бoтoв
bot_pistols_only — вce бoты пoльзyютcя тoлькo пиcтoлeтaми
bot_snipers_only — вce бoты пoльзyютcя тoлькo cнaйпepcким opyжиeм
bot_crouch 1 — бoты вceгдa нa кopтoчкax
bot_defer_to_human 1 — бoты зaщищaют людeй
bot_join_team 1 — бoты зaxoдят в кoмaнды (т,кт) тoлькo пocлe чeлoвeкa
Коды к игре Counter-Strike: Source
Для активации чит-кодов откройте консоль [~], введите sv_cheats 1 и restart (перезагрузить карту), после чего вы сможете применять следующие читы для Counter-Strike: Source:
impulse 101 – получить $16 000
cl_backspeed # – скорость игрока назад (не более чем значение на сервере; по умолчанию: 400)
cl_forwardspeed # – установить скорость перемещения вперед
cl_observercrosshair 1/0 – вкл./выкл. прицел в режиме обсервера
cl_showfps 1/0 – показать/скрыть счетчик FPS
fps_max # – задать # как максимальное отображаемое количество FPS
cl_sidespeed # – установить скорость перемещения в стороны
cl_upspeed # – скорость перемещения вверх
hud_deathnotice_time # – показывать сообщения об убийствах # сек.
hud_fastswitch 1/0 – вкл./выкл. быстрое переключение оружия (не показывая списка)
hud_saytext_time # – показывать сообщения других игроков # сек.
name «…» – задать новое имя для своего игрока
setinfo ah 1/0 – вкл./выкл. помощь в прицеливании
setinfo dm 1/0 – вкл./выкл. показ информации показывать информацию о карте после загрузки
setinfo lefthand # – показывать оружие: 0- в правой руке, 1- левой
sv_gravity # – изменить уровень гравитации (по умолчанию: 800)
violence_ablood 1/0 – показать/скрыть кровь
mp_friendlyfire 1/0 – вкл./выкл. огонь по своим
mp_autoteambalance – 1/0 вкл./выкл. автоматическую балансировку команд
mp_limitteams # – максимальная разница в количестве игроков между командами при котором не будет применяться автоматическая балансировка; 0- отключить
mp_logmessages 1/0 – вык./выкл. запись сообщений чата log-файл
mp_roundtime # – длительность раунда в минутах (от 3 до 15; по умолчанию: 5)
mp_timelimit # – количество минут между сменами карты
mp_freezetime # – время в секундах для покупки оружия
mp_restartround # – перезапустить раунд через # сек.
mp_c4timer # – количество секунд до детонации заложенной бомбы
mp_flashlight 1/0 – вкл./выкл. возможность использовать фонарик
mp_startmoney # – количество денег в начале игры
mp_tkpunish 1/0 – вкл./выкл. автобан игрока на один раунд за убийство своих
hostname «имя сервера» – задать новое имя сервера
sv_maxspeed # – задать скорость передвижения
kick имя_пользователя – выкинуть игрока из игры
сhangelevel название_карты – загрузить указанную карту; все игроки остаются
map название_карты – загрузить указанную карту; все игроки отсоединяются от сервера
timeleft – показать оставшееся время
crosshair # – выключить увеличение прицела во время стрельбы, где # число от 1 до 5
mp_footsteps 1/0 – вкл./выкл. следы
give name – получить указанный предмет (список названий ниже)
skin name – получить указанный скин (список названий ниже)
Команды для ботов
bot_add – добавить бота
bot_add_ct – добавить бота в команду контртеррористов
bot_join_team ct – боты присоединяются только за команду контртеррористов
bot_join_team t – боты присоединяются только за команду террористов
bot_kill – убить всех ботов или определенного бота (вводите его имя)
bot_kick – удалить из игры всех ботов или определенного бота (вводите его имя)
bot_quota # – общее количество ботов, где # число от 1 до 32
bot_knives_only 1 – боты играют только на ножах
bot_pistols_only 1 – боты используют только пистолеты
bot_snipers_only 1 – боты используют только снайперские винтовки
bot_all_weapons – все оружие
bot_allow_grenades 1 – гранаты
bot_allow_machine_guns 1 – автоматы
bot_allow_pistols 1 – пистолеты
bot_allow_rifles 1 – винтовки
bot_allow_shotguns 1 – дробовики
bot_allow_snipers 1 – снайперские винтовки
bot_allow_sub_machine_guns 1 – пулеметы
bot_zombie 1 – боты бездействуют
bot_chatter off (minimal, radio, normal) – установить степень болтливости бота
bot_defer_to_human 0 – боты пытаются выполнить цель игры
bot_stop 1 – заморозить ботов
bot_memory_usage – отображает (в консоли) количество используемой для ботов памяти
bot_show_nav – отображает границы навигационной сети
nav_mark – отметить текущую навигационную зону для дальнейшего использования
nav_save – сохранить текущую навигационную сеть
nav_load – загрузить навигационную сеть
Оружие
Пример: give weapon_ak47 – получить автомат АК-47. В некоторых версиях код оружия необходимо записывать в кавычках: «weapon_ak47″
- weapon_ak47 – AK-47
- weapon_xm1014 – Benneli xm1014
- weapon_c4 – C4
- weapon_m4a1 – Colt M4a1 carbine
- weapon_sg552 – Commando
- weapon_elite – Dual Berettas
- weapon_p90 – Fn P90
- weapon_glock18 – Glock 18 pistol
- weapon_hegrenade – граната
- weapon_m3 – M3 super shotgun
- weapon_mac_10 – MAC-10
- weapon_mp5navy – MP5
- weapon_m249 – Para
- weapon_scout – Scout
- weapon_p228 – SIG p228
- weapon_aug – Steyr Aug
- weapon_g3sg1 – H&K Sniper Rifle
- weapon_deagle – Desert eagle
- weapon_flashbang – ocлeпляющая гpaнaтa
- weapon_defuser – Bomb defuser
- weapon_smokegrenade – дымовая гpaнaтa
- weapon_kevlar – бpoнeжилeт
- weapon_nightvision – нoчное видeниe
- weapon_sig550 – Sig 550
- weapon_awp – Artic
- weapon_ump45 – UMP.45
- weapon_usp – USP.45
Скины
Пример: skin «sas» – получить скин SAS бойца
- sas – SAS
- gsg9 – GSG9
- seal – SEAL
- terror – Terrorist
- arab – Arab
- guerrilla – Guerrilla
- arctic – Arctic
- vip – VIP
- hostage – Hostage
cl_crosshairscale 40000
– уменьшить размер прицелаЭти читы работают только на ВАШЕМ сервере, кроме команды cl_crosshairscale 40000, которая работает на всех серверах к которым вы подсоединяетесь.
Бинд читов на клавиши (быстрое использование кодов)
Чтобы быстро применить какой-то чит и при этом каждый раз не открывать консоль введите следующий код в консоли CS: Source:
bind клавиша «чит-код» – теперь после каждого нажатия указанной вами клавиши будет применятьсячит-код. Разумеется, вместо чит-код необходимо ввести один из читов вверху.
Надеемся что коды к игре Counter-Strike: Source помогли Вам!
Коды (читы) Counter-Strike: Source (CS)
Для активации чит-кодов откройте консоль [~], введите sv_cheats 1 и restart (перезагрузить карту), после чего вы сможете применять следующие читы для Counter-Strike: Sourceimpulse 101 — получить $16 000
cl_backspeed # — скорость игрока назад (не более чем значение на сервере; по умолчанию: 400)
cl_forwardspeed # — установить скорость перемещения вперед
cl_observercrosshair 1/0 — вкл./выкл. прицел в режиме обсервера
cl_showfps 1/0 — показать/скрыть счетчик FPS
fps_max # — задать # как максимальное отображаемое количество FPS
cl_sidespeed # — установить скорость перемещения в стороны
cl_upspeed # — скорость перемещения вверх
hud_deathnotice_time # — показывать сообщения об убийствах # сек.
hud_fastswitch 1/0 — вкл./выкл. быстрое переключение оружия (не показывая списка)
hud_saytext_time # — показывать сообщения других игроков # сек.
name «…» — задать новое имя для своего игрока
nightvision 1/0 — вкл./выкл. возможность использования прибора ночного видения
setinfo ah 1/0 — вкл./выкл. помощь в прицеливании
setinfo dm 1/0 — вкл./выкл. показ информации показывать информацию о карте после загрузки
sv_gravity # — изменить уровень гравитации (по умолчанию: 800)
violence_ablood 1/0 — показать/скрыть кровь
mp_friendlyfire 1/0 — вкл./выкл. огонь по своим
mp_autoteambalance — 1/0 вкл./выкл. автоматическую балансировку команд
mp_limitteams # — максимальная разница в количестве игроков между командами при котором не будет применяться автоматическая балансировка; 0- отключить
mp_logmessages 1/0 — вык./выкл. запись сообщений чата log-файл
mp_roundtime # — длительность раунда в минутах (от 3 до 15; по умолчанию: 5)
mp_timelimit # — количество минут между сменами карты
mp_freezetime # — время в секундах для покупки оружия
mp_restartround # — перезапустить раунд через # сек.
mp_c4timer # — количество секунд до детонации заложенной бомбы
mp_flashlight 1/0 — вкл./выкл. возможность использовать фонарик
mp_startmoney # — количество денег в начале игры
hostname «имя сервера» — задать новое имя сервера
sv_maxspeed # — задать скорость передвижения
kick имя_пользователя — выкинуть игрока из игры
сhangelevel название_карты — загрузить указанную карту; все игроки остаются
map название_карты — загрузить указанную карту; все игроки отсоединяются от сервера
timeleft — показать оставшееся время
crosshair # — выключить увеличение прицела во время стрельбы, где # число от 1 до 5
mp_footsteps 1/0 — вкл./выкл. следы
give name — получить указанный предмет (список названий ниже)
skin name — получить указанный скин (список названий ниже)
Команды для ботов
bot_add — добавить ботаbot_add_ct — добавить бота в команду контртеррористов
bot_add_t — добавить бота в команду террористов
bot_join_team ct — боты присоединяются только за команду контртеррористов
bot_join_team t — боты присоединяются только за команду террористов
bot_kill — убить всех ботов или определенного бота (вводите его имя)
bot_kick — удалить из игры всех ботов или определенного бота (вводите его имя)
bot_quota # — общее количество ботов, где # число от 1 до 32
bot_knives_only 1 — боты играют только на ножах
bot_pistols_only 1 — боты используют только пистолеты
bot_snipers_only 1 — боты используют только снайперские винтовки
bot_all_weapons — все оружие
bot_allow_grenades 1 — гранаты
bot_allow_machine_guns 1 — автоматы
bot_allow_pistols 1 — пистолеты
bot_allow_rifles 1 — винтовки
bot_allow_shotguns 1 — дробовики
bot_allow_snipers 1 — снайперские винтовки
bot_allow_sub_machine_guns 1 — пулеметы
bot_zombie 1 — боты бездействуют
bot_chatter off (minimal, radio, normal) — установить степень болтливости бота
bot_defer_to_human 0 — боты пытаются выполнить цель игры
bot_stop 1 — заморозить ботов
bot_memory_usage — отображает (в консоли) количество используемой для ботов памяти
bot_show_nav — отображает границы навигационной сети
nav_mark — отметить текущую навигационную зону для дальнейшего использования
nav_save — сохранить текущую навигационную сеть
nav_load — загрузить навигационную сеть
Оружие
Пример: give weapon_ak47 — получить автомат АК-47. В некоторых версиях код оружия необходимо записывать в кавычках: «weapon_ak47»- weapon_ak47 — AK-47
- weapon_xm1014 — Benneli xm1014
- weapon_c4 — C4
- weapon_m4a1 — Colt M4a1 carbine
- weapon_sg552 — Commando
- weapon_elite — Dual Berettas
- weapon_p90 — Fn P90
- weapon_glock18 — Glock 18 pistol
- weapon_hegrenade — граната
- weapon_m3 — M3 super shotgun
- weapon_mac_10 — MAC-10
- weapon_mp5navy — MP5
- weapon_m249 — Para
- weapon_scout — Scout
- weapon_p228 — SIG p228
- weapon_aug — Steyr Aug
- weapon_g3sg1 — H&K Sniper Rifle
- weapon_deagle — Desert eagle
- weapon_flashbang — ocлeпляющая гpaнaтa
- weapon_defuser — Bomb defuser
- weapon_smokegrenade — дымовая гpaнaтa
- weapon_kevlar — бpoнeжилeт
- weapon_nightvision — нoчное видeниe
- weapon_sig550 — Sig 550
- weapon_awp — Artic
- weapon_ump45 — UMP.45
- weapon_usp — USP.45
Скины
Пример: skin «sas» — получить скин SAS бойца- sas — SAS
- gsg9 — GSG9
- seal — SEAL
- terror — Terrorist
- arab — Arab
- guerrilla — Guerrilla
- arctic — Arctic
- vip — VIP
- hostage — Hostage
Эти читы работают только на ВАШЕМ сервере, кроме команды cl_crosshairscale 40000, которая работает на всех серверах к которым вы подсоединяетесь.
Бинд читов на горячие клавиши
Чтобы быстро применить какой-то чит и при этом каждый раз не открывать консоль введите следующий код в консоли CS: Source:bind клавиша «чит-код» — теперь после каждого нажатия указанной вами клавиши будет применяться чит-код . Разумеется, вместо чит-код необходимо ввести один из читов вверху.
Простой CSS • Стиль кода
Порядок и группировка свойств #
Свойства следует группировать по смыслу, и вот почему это важно:
-
Плохо
.block { margin-bottom: 50px; padding: 20px; vertical-align: middle; color: teal; line-height: 30px; display: inline-block; margin: 20px auto; font: 16px/1.4 Arial,sans-serif; float: left; position: relative; }
-
Хорошо
.block { display: inline-block; /* 💥 */ float: left; position: relative; margin-bottom: 50px; /* 💥 */ margin: 20px auto; padding: 20px; vertical-align: middle; /* 💥 */ line-height: 30px; /* 💥 */ font: 16px/1.4 Arial,sans-serif; color: teal; }
Если взять код слева и расставить в нём свойства по порядку (пример справа), сразу обнаруживается куча ошибок: display: inline-block
float: left
, потому что в этом случае элемент становится блочным. По этой же причине не будет работать vertical-align
. margin-bottom
не сработает, потому что ниже перезаписывается сокращенной записью свойства margin
. line-height
не работает, потому что перезапишется короткой записью font
.
Достаточно сгрупировать свойства по смыслу, чтобы эти ошибки стали видны как на ладони, поэтому старайтесь всегда придерживаться определённого порядка свойств.
Порядок свойств можно подглядеть у HTML-Академии. Для сортировки можно использовать CSScomb, но лучше просто привыкнуть записывать свойства в определённой последовательности.
Оформление кода #
При написании кода важно сохранять единый стиль, чтобы глаз не спотыкался о мелкие различия и легко читался.
Например, везде должны быть одинаковые отступы слева:
-
Плохо
.block { padding: 20px; font: 16px/1.4 Arial, sans-serif; color: teal; }
-
Хорошо
.block { padding: 20px; font: 16px/1.4 Arial, sans-serif; color: teal; }
И не забывайте пробелы после фигурных скобок, двоеточий и запятых:
-
Плохо
.block{ padding:20px; font:16px/1.4 Arial,sans-serif; color: teal; }
-
Хорошо
.block { padding: 20px; font: 16px/1.4 Arial, sans-serif; color: teal; }
Для проверки форматирования кода можно использовать stylelint.
Написание эффективного кода | htmlbook.ru
В процессе написания CSS следует придерживаться некоторых принципов, которые позволяют сократить код CSS, сделать его более удобным, наглядным и читабельным. Читабельность в данном случае означает, что разработчик спустя какое-то время может легко понять и модифицировать стиль или что в коде разберётся даже сторонний человек.
Размещайте каскадные таблицы стилей в отдельном файле
Размещение стилей в отдельном файле позволяет ускорить загрузку веб-страниц за счёт уменьшения их кода, а также кэширования файла с описанием стиля.
Удаляйте неиспользуемые селекторы
Большое количество селекторов создаёт путаницу в вопросе о том, кто из них за что отвечает, да и просто увеличивает объем документа. Чтобы этого не произошло, удаляйте селекторы, которые никак не применяются на сайте. К сожалению, определить точно, какой селектор используется, а какой нет, довольно сложно, поэтому добавляйте комментарий в код. Это поможет хотя бы не запутаться в большом объёме текста.
Применяйте группирование
Достоинство и удобство группирования состоит в описании одинаковых свойств в одном месте. Тем самым, значение свойства пишется только один раз, а не повторяется многократно.
Используйте универсальные свойства
Вместо того чтобы указывать значения отступа на каждой стороне элемента через свойства margin-left, margin-right, margin-top и margin-bottom, это можно одновременно задать через универсальное свойство margin. Перечисление значений через пробел позволяет установить индивидуальные отступы для каждой стороны. Кроме margin к универсальным свойствам относятся background, border, font, padding. Применение этих свойств сокращает объём кода и повышает его читабельность.
Форматирование кода
Существует множество разных подходов как же писать CSS-код. Кто-то упорядочивает селекторы по блокам, другой согласно структуре документа, третий по алфавиту, в общем, сколько людей, столько и мнений. Вы можете воспользоваться онлайновым инструментом, который форматирует CSS-код сразу четырьмя разными способами. А там уже сами решите, какой из способов вам симпатичнее.
Ссылка на сайт
http://www.cssportal.com/format-css/
Принцип работы очень простой, вводите в текстовое поле свой код, нажимаете на кнопку «Format Code» и получаете четыре разных вида первоначального кода. Для примера возьмём следующий небольшой фрагмент.
body {
font: 0.9em Arial, Verdana, Helvetica, sans-serif;
color: #000;
background: #fff;
margin: 0;
}
.top {
margin-bottom: 10px;
padding-left: 3%;
border-bottom: 1px solid #acacac;
}
В результате его форматирования получатся такие варианты.
Форматированный CSS (Formatted CSS)
body {
font: 0.9em Arial, Verdana, Helvetica, sans-serif;
color: #000;
background: #fff;
margin: 0;
}
.top {
margin-bottom: 10px;
padding-left: 3%;
border-bottom: 1px solid #acacac;
}
Порядок свойств не меняется, строки со свойствами сдвигаются вправо на четыре пробела, селекторы разделяются между собой пустой строкой.
Свойства в алфавитном порядке (Properties in Alphabetical Order)
body {
background: #fff;
color: #000;
font: 0.9em Arial, Verdana, Helvetica, sans-serif;
margin: 0;
}
.top {
border-bottom: 1px solid #acacac;
margin-bottom: 10px;
padding-left: 3%;
}
Строки со свойствами сдвигаются вправо на четыре пробела, селекторы разделяются между собой пустой строкой, стилевые свойства упорядочиваются по алфавиту.
Лесенкой (Longest Property to Shortest)
body {
font: 0.9em Arial, Verdana, Helvetica, sans-serif;
background: #fff;
color: #000;
margin: 0;
}
.top {
border-bottom: 1px solid #acacac;
margin-bottom: 10px;
padding-left: 3%;
}
Строки со свойствами сдвигаются вправо на четыре пробела, селекторы разделяются между собой пустой строкой, строки со свойствами упорядочиваются по длине. Вначале идут самые длинные строки, в конце самые короткие.
Компактно (Compact)
body {font: 0.9em Arial, Verdana, Helvetica, sans-serif;color: #000;background: #fff;margin: 0;}
.top {margin-bottom: 10px;padding-left: 3%;border-bottom: 1px solid #acacac;}
Селекторы и свойства записываются в одну строку, пустые строки удаляются.
Приведённый инструмент, конечно, не претендует на полноту, в нём нельзя задать величину отступа между селекторами, количество пробелов перед свойством. Также не сокращаются лишние пробелы перед значениями свойств. Тем не менее, главное, что процесс форматирования кода прост и удобен.
Минимизация кода
При редактировании CSS-файла возникает противоречивая задача. С одной стороны код должен быть удобным для восприятия и редактирования, быстрого отыскания нужного селектора, для чего активно применяются отбивки, комментарии, пробелы и символы табуляции. С другой стороны, объём кода должен быть компактным и не содержать в себе ничего лишнего. Компактность позволяет несколько ускорить загрузку сайта и повысить его производительность.
Данное противоречие решается наличием двух версий CSS-файла: один файл для редактирования, а второй для загрузки на сервер. Сам же процесс сокращения кода называется минимизацией и вполне автоматизирован с помощью сетевых сервисов, которые и рассмотрим далее.
CSSMin
http://tools.w3clubs.com/cssmin/
Простой, даже можно сказать, примитивный сервис, построенный на JavaScript и библиотеке YUI Compressor. Вводите в поле «Source» код CSS, нажимаете кнопку «Crunch» и получаете готовый результат в соседнем поле. Также даётся оценка входного и выходного объёма и соотношение в процентах между ними (рис. 22.1).
Рис. 22.1. Итог минимизации кода
CSS compressor
http://www.csscompressor.com
Этот сервис удобен тем, что комментирует все свои действия, так что вы будете в курсе изменений вашего стиля. Работает он следующим образом. В поле CSS Input вставляете код CSS, выбираете желаемые настройки и нажимаете кнопку «Compress» (рис. 22.2).
Рис. 22.2. Интерфейс
Настройки следующие.
- Compression Mode — режим сжатия. Различается четырьмя видами.
- Highest — все правила записываются в одну строку.
- High — каждое правило записывается на своей строке.
- Standard — каждое свойство пишется на отдельной строке,
- Low — каждое свойство пишется на отдельной строке и отбивается табуляцией.
- Sort Properties — сортировка стилевых свойств в алфавитном порядке.
- Compress colors — цвета вида #ffffff заменяются сокращённой формой #fff.
- Compress font-weight — оптимизируется насыщенность шрифта. Такое значение font-weight как normal заменяется на 400, а bold на 700.
- Lowercase selectors — все селекторы записываются в нижнем регистре.
- Remove unnecessary backslashes — ненужные слэши (\) удаляются.
- Remove unnecessary semi-colons — удалить необязательную точку с запятой в последнем свойстве.
После сжатия выводятся два поля: список сделанных изменений в свойствах и сжатый CSS (рис. 22.3).
Рис. 22.3. Результат использования
CSS Code Formatter and Optimizer
http://www.generateit.net/css-optimize
Сервис построен на том же движке, что и предыдущий, поэтому имеет ряд схожих настроек. Из приятных плюсов можно отметить подсветку синтаксиса кода, сохранение в файл, а также ввод сетевого адреса CSS-файла.
На рис. 22.4 показано окно настроек.
Рис. 22.4. Настройки
- Preserve CSS — сохраняет все комментарии, хаки и др. При включении этой настройки некоторые опции становятся недоступными.
- Sort Selectors (caution) — сортировать селекторы по алфавиту.
- Sort Properties — сортировать свойства по алфавиту.
- Regroup selectors — позволяет перегруппировать селекторы, например, разделить или объединить их.
- Optimize shorthands — оптимизирует универсальные свойства вроде margin.
- Compress colors — цвета вида #ffffff заменяются сокращённой формой #fff.
- Compress font-weight — оптимизируется насыщенность шрифта. Такое значение font-weight как normal заменяется на 400, а bold на 700.
- Lowercase selectors — все селекторы записываются в нижнем регистре.
- Case for properties — стилевые свойства пишутся в нижнем или верхнем регистре.
- Remove unnecessary backslashes — удалить ненужные слэши (\).
- Remove last ; — удалить необязательную точку с запятой в последнем свойстве.
- Discard invalid properties — удалить свойства, которых нет в указанной спецификации.
- Add timestamp — включить в код текущую дату и время.
- Output as file — сохранить результат в виде файла.
Библиотека minify
Если приходится часто вносить изменения в CSS-файл, то процесс минимизации становится неудобным. Сами посудите, вначале надо отредактировать файл, затем его минимизировать и полученный код сохранить в файл, который нужно залить на сервер. Слишком много действий приходится совершать ради одного изменения. Логичнее было бы возложить задачу минимизации на сайт. Загрузили файл на сервер, и вот он уже в компактном виде отдаётся посетителям. Одно из таких универсальных решений называется minify, это библиотека на PHP5. Она минимизирует, объединяет и кэширует CSS-файлы, а также JavaScript.
Ссылка на проект minify
http://code.google.com/p/minify/
Библиотека minify существует как отдельно, так и в виде плагина для WordPress.
Процесс использования библиотеки следующий. Скачиваете архив, внутри него лежит каталог min, который необходимо переписать на сервер. Сжатие CSS-файла происходит довольно просто, вместо обычного пути к стилевому файлу теперь указываем:
http://example.ru/min/?f=themes/default/style.css
В параметре f указывается путь к CSS-файлу относительно корня сайта. Два и более файла пишутся через запятую:
http://example.ru/min/?f=themes/default/style.css,themes/default/cms.css
Также процесс получения адреса можно автоматизировать, перейдя по адресу http://example.ru/min, откроется страница, где предлагается указать путь к файлам, которые вы желаете минимизировать (рис. 22.5).
Рис. 22.5. Страница для управления файлами
Кнопки со стрелками вверх и вниз нужны для изменения порядка файлов, а кнопка «x» для удаления файла из списка. Проверка правильности пути осуществляется автоматически, в случае ошибки появится кнопка с надписью «404!», как показано на рисунке выше. Для добавления еще одного файла в список служит кнопка «Add file». После того, как все файлы указаны, пути к ним заданы корректно, что подтверждается наличием галочки напротив каждого файла, можно нажать кнопку «Update». Ниже на странице появится ссылка на новый комбинированный файл (текст с надписью URI) и тег <link> (текст с надписью HTML), который требуется вставить себе на страницу взамен старого (рис. 22.6).
Рис. 22.6. Результат минимизации
Согласно тестам над WordPress использование библиотеки позволяет сократить количество HTTP-запросов и уменьшить объем CSS и JavaScript-файлов до 70%.
Кроме приведенных методов минимизации CSS-файлов имеются также решения, позволяющие архивировать файлы утилитой gzip прямо на сервере и отдавать браузеру упакованную версию. Современные браузеры прекрасно понимают gzip и распаковывают его на месте. Весь процесс происходит автоматически и приводит к существенному сокращению объема передаваемых по сети файлов. Вопросы настройки gzip выходят за рамки самоучителя, поэтому я не буду на них останавливаться. Всем заинтересованным рекомендую статьи по этим ссылкам.
Улучшаем читабельность CSS-кода с помощью «стилевых гидов» / Habr
В W3Cast #3 Денис ( CurlyBrace) затронул тему использования styleguides, а у меня как раз уже была статья по этой теме. Поэтому я решил поделиться ей, чтобы показать наглядные примеры, демонстрирующих возможности «стилевых гидов».«Стилевые гиды» — это свод правил и соглашений, предоставляющих разработчикам информацию о структуре кода и принятых правилах оформления. Чаще всего используется группой разработчиков, при совместном участии в проекте или же для самодисциплины при разработке кода.
Если проект большой, то он обрастает многочисленными файлами CSS с различными цветовыми схемами, типографикой и другими стилевыми установками. Чтобы избежать путаницы в структуре кода и не забыть что да как, нужно разрабатывать структурированный код, который впоследствии будет проще использовать, править и частично использовать в других проектах.
Лучший способ организации понятного кода — использование комментариев. Разработчики придумали весьма творческие способы использования комментариев и форматирования текста, чтобы улучшить понимание кода. Существует множество различных приемов, которые могут комбинироваться исходя из ваших предпочтений, но мы пока рассмотрим только несколько из них.
«Разделяй и властвуй»
Для начала проанализируйте структуру своего макета и выделите наиболее важные компоненты в CSS-коде. В большинстве случаев полезно рассортировать по принадлежности к классам или CSS-селекторам. Перед тем как начать «кодинг», объедините элементы в группы. Например, вы можете выделить глобальные стили («тело», параграфы, списки и т.д.), структуру, заголовки, текстовые стили, навигацию, формы, комментарии и отдельные элементы.
Выберите специальные метки (например, «звёздочку» — «*» или минус — «-») для того чтобы выделять важные элементы. Например ими можно выделять заголовки отдельх групп элементов. Очень немаловажно, чтобы метки бросались в глаза при беглом просмотре кода.
Однако такой подход может оказаться не очень эффективным для больших проектов, где главная стилевая таблица является достаточно большой. В таком случае стили можно разделить на несколько файлов, каждый из которых будет содержать единственную группу. Для этого в основном файле стилей достаточно импортировать групповые стили. А на странице достаточно включать только основной файл.
<code> /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [Master StyleSheet] Project: Obout.ru Version: 1.1 Last change: 05/06/08 [fixed Float bug, Alex] Assigned to: Alexandr (ALex), Vasy Pupkin (VP) Primary use: OBOUT.RU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ @import "reset.css"; @import "layout.css"; @import "colors.css"; @import "typography.css"; @import "flash.css"; /* @import "debugging.css"; */ </code>
Также другим разработчикам будет полезно знать некоторую дополнительную техническую информацию о проекте: о том какие изменения были произведены в последний раз, когда и кем это было сделано.
Вдобавок можно включать отладочные диагностические CSS стили для поиска не корректных элементов.
Создание оглавления
Для описания структуры своего кода, можно сделать небольшое оглавление в начале стилевого файла. Этот прием поможет сделать краткий обзор структуры расположения элементов с использованием идентификаторов (ID) и классов (class) используемых в качестве отдельных веток структурного дерева страницы. Тутже можно использовать специальные ключевые слова для более быстрого поиска нужной секции в коде.
Например так:
<code> /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [Layout] * body + Header / #header + Content / #content - Left column / #leftcolumn - Right column / #rightcolumn - Sidebar / #sidebar - RSS / #rss - Search / #search - Boxes / .box - Sideblog / #sideblog + Footer / #footer Navigation #navbar Advertisements .ads Content header h3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ </code>
или же такой вариант которого я придерживаюсь:
<code> /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [Table of contents] 1. Body 2. Header / #header 2.1. Navigation / #navbar 3. Content / #content 3.1. Left column / #leftcolumn 3.2. Right column / #rightcolumn 3.3. Sidebar / #sidebar 3.3.1. RSS / #rss 3.3.2. Search / #search 3.3.3. Boxes / .box 3.3.4. Sideblog / #sideblog 3.3.5. Advertisements / .ads 4. Footer / #footer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ </code>
Он позволяет осуществлять поиск по индексам и даёт схематическое представление о структуре страницы.
Есть ещё более простой способ который не использует вложенности, а использует обычный нумерованный список. Чтобы найти блок в стилевой таблице достаточно использовать файловый поиск и ввести цифру или название блока. Такой способ очень лёгок, быстр и эффективен.
<code> /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [Table of contents] 1. Body 2. Header / #header 3. Navigation / #navbar 4. Content / #content 5. Left column / #leftcolumn 6. Right column / #rightcolumn 7. Sidebar / #sidebar 8. RSS / #rss 9. Search / #search 10. Boxes / .box 11. Sideblog / #sideblog 12. Advertisements / .ads 13. Footer / #footer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ <!-- здесь много CSS-кода --> /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [8. RSS / #rss] */ #rss { ... } #rss img { ... } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ </code>
Использование оглавления облегчит понимание и чтение вашего CSS-кода другим разработчикам. Его можно распечатать, чтобы оно было постоянно перед глазами, когда вы читаете код. Для работы в команде, использование оглавления станет хорошим преимуществом и сэкономит значительную часть вашего времени и времени ваших коллег.
Предустановка цветовой схемы и типографики
Пока у нас нет возможности устанавливать в CSS константы, мы вынуждены искать быстрые способы для обозначения неизменных свойств. В веб-разработке к константам можно отнести цвета и типографию, используемые в документе, которые представляют из себя фиксированиные значения и используемые неоднократно в документе.
Одним из способов замены отсутствия констант заключается в том, чтобы создать определения некоторых констант, которые будут использоваться. Опять же это поможет избежать путаницы при копировании из одного свойства в другое. Если же решить изменить какое либо свойство в таблице стилей, достаточно опять же воспользоваться инструментами поиска и замены вашего редактора.
<code> /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # [Color codes] # Dark grey (text): #333333 # Dark Blue (headings, links) #000066 # Mid Blue (header) #333399 # Light blue (top navigation) #CCCCFF # Mid grey: #666666 # */ </code>
В качестве альтернативы можно также описать цветовые коды, используемые в вашем макете. Для каждого цвета можно установить секции, которые его используют или же наоборот, для секций установить используемые цвета.
<code> /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [Color codes] Background: #ffffff (white) Content: #1e1e1e (light black) Header h2: #9caa3b (green) Header h3: #ee4117 (red) Footer: #b5cede (dark black) a (standard): #0040b6 (dark blue) a (visited): #5999de (light blue) a (active): #cc0000 (pink) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ </code>
Такой же подход может быть использован для обозначения типографики.
<code> /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [Typography] Body copy: 1.2em/1.6em Verdana, Helvetica, Arial, Geneva, sans-serif; Headers: 2.7em/1.3em Helvetica, Arial, "Lucida Sans Unicode", Verdana, sans-serif; Input, textarea: 1.1em Helvetica, Verdana, Geneva, Arial, sans-serif; Sidebar heading: 1.5em Helvetica, Trebuchet MS, Arial, sans-serif; Notes: decreasing heading by 0.4em with every subsequent heading level - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ </code>
Сортировка CSS свойств
Есть ещё несколько приемов для написания более структуированного и интуитивно понятного CSS-кода. Существует множество способов сортировки, придуманных разработчиками. Некоторые разработчики предпочитают размещать сначала цвета и шрифты; другие предпочитают сначала размещать более важные свойства, например, связанных с позиционированием элемента. Некоторые элементы также часто сортируют согласно структурному расположению или топологической схемы. К этому подходу можно отнести группировку селекторов тегов:
<code> body, h2, h3, h4, p, ul, li, form { border: 0; margin: 0; padding: 0; } </code>
Некоторые разработчики предпочитают сортирование свойства в алфавитном порядке:
<code> body { background: #fdfdfd; color: #333; font-size: 1em; line-height: 1.4; margin: 0; padding: 0; } </code>
Используйте свой стиль форматирования везде и ваши коллеги будут благодарны вам за ваш труд — они тоже будут придерживаться данного стиля форматирования.
Вложенность — ваш друг!
Использование табулировани селекторов сделает понимание кода более простым. Чем более «глубокий» элемент — тем большее количество табов ставится перед ним. Определите «родительский» элемент и отделите «дочерние» нужным количеством «табов»:
<code> #main-column { display: inline; float: left; width: 30em; } #main-column h2 { font-family: Georgia, "Times New Roman"; margin-bottom: 20px; } #main-column p { color: #333; } </code>
Есть ещё один интересный подход киспользованию «табов» и комментариев. Иногда при внесении изменений результат оказывается не таким как вы ожидали. А что если изменений было сделано много и все их не запомнить? Вот тут то и может нам пригодиться выделение недавних изменений в вашем CSS-коде. Внесенные изменения можно помечать дополнительным отступом, который будет выделять свойство от других в этом же селекторе. Или же можно использовать некоторые ключевые слова в комментариях. Например @new, которое можно лекго найти и откатить внесенные изменения назад, до тех пор пока не найдете проблему.
<code> #sidebar ul li a { display: block; background-color: #ccc; border-bottom: 1px solid #999; /* @new */ margin: 3px 0 3px 0; padding: 3px; /* @new */ } </code>
Заключение
«Стилевые гиды» CSS могут быть полезны, если их использовать надлежащим образом. Не используйте «стилевые гиды», если они не позволяют вам получить лучшее понимание кода и лучшей структурированности кода. Ваша цель — достичь лучшей понимаемости/удобочитаемости кода.
PS. Не забывайте, что финальная версия ( или как говорят «продакшен») не должна содержать комментариев «стилевого гида», чтобы не нагружать пользователей передачей лишьнего объема данных. А у разработчика всё-таки должна быть полная версия и после завершения разработки.
Вольный перевод© по мотивам Improving Code Readability With CSS Styleguides
PPS. Спасибо всем кто поднял карму, перенёс в тематический блог.
UPD.В комментариях vithar поделился своим CSS Code Style.
Предлагаю и остальным включаться и делиться своими наработками.
UPD. В комментариях уже профодил аналогию с phpdoc и вот наткнулся на начало реализации общего стандарта cssdoc — аналог phpdoc но уже для css. Развитие проекта поможет выработать более или менее единые стандарты при разработке css.