Проба пера

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Проба пера » welcome » Блог


Блог

Сообщений 61 страница 62 из 62

61

0

62

Иконки Material Icons и Font Awesome в форме ответа вместо стандартных - вариант без скрипта.

Для тех, кто не хочет загружать хтмл-формы лишними скриптами. Ставим вниз первого окна стиля в админке.

[иконки в представленных на скриншотах примерах могут отличаться от тех, что в кодах]

Material Icons
https://i.imgur.com/kR6M0bZ.jpg

Код
Код:
/* Material Icons */

@import url('https://fonts.googleapis.com/css2?family=Material+Icons&family=Material+Icons+Outlined');

/* Иконки в форме ответа 
-------------------------------------------------------------*/

.punbb #main-reply {box-sizing: border-box;}
.punbb #form-buttons table {width: 100%;}

.punbb #form-buttons tr {
display: flex;
display: -webkit-flex;
flex-wrap: wrap;
-webkit-flex-wrap: wrap;
justify-content: space-between;
padding: 0 0 5px;
width: 100%;
}

#post-form #form-buttons td {
background-image: none !important;
position: relative;
display: inline-block;
width: 30px;
height: 30px;
}

.punbb #form-buttons td img {
width: 30px;
height: 30px;
}

#form-buttons td:before {
content: " ";
font-family: 'Material Icons Outlined';
font-size: 24px;
color: #000;
position: absolute;
pointer-events: none;
transition: all .5s linear 0s;
width: 30px;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
left: 0;
top: 0;
}

#form-buttons td:hover:before {color: #808080;}

/* Стандартные кнопки */

td#button-font:before {content: "\e167";}
td#button-size:before {content: "\e262";}
td#button-bold:before {content: "\e238";}
td#button-italic:before {content: "\e23f";}
td#button-underline:before {content: "\e249";}
td#button-strike:before {content: "\e257";}
td#button-left:before {content: "\e236";}
td#button-center:before {content: "\e234";}
td#button-right:before {content: "\e237";}
td#button-link:before {content: "\e157";}
td#button-spoiler:before {content: "\e8f5";}
td#button-spoiler:hover:before {content: "\e8f4";}
td#button-image:before {content: "\e43e";}
td#button-video:before {content: "\e070";}
td#button-hide:before {content: "\e898";}
td#button-hide:hover:before {content: "\e897";}
td#button-quote:before {content: "\e8af";}
td#button-code:before {content: "\e86f";}
td#button-color:before {content: "\e40a";}
td#button-table:before {content: "\e3ec";}
td#button-smile:before {content: "\ea22";}
td#button-keyboard:before {content: "\f028";}
td#button-addition:before {content: "\ea20";}
td#button-files_rusff:before {content: "\e2c7";}
td#button-files_rusff:hover:before {content: "\e2c8";}
td#button-graffiti_rusff:before {content: "\e3ae";}

/* Дополнительные кнопки */

td#button-indent:before {content: "\e23e";} /* тег абзаца */
td#button-styles:before {content: "\e41d";} /* дополнительные стили */
td#floatbut:before {content: "\efe0";} /* тег обтекания изображения от Romych */
td#button-justify:before {content: "\e235";} /* тег выравнивания по ширине */
td#button-mask:before {content: "\f218";} /* тег для скрипта ролевой маски от человека-шамана */
td#button-sticker:before {content: "\e91d";} /* тег для дополнительных смайлов от человека-шамана */

Font Awesome
https://i.imgur.com/I4didhO.jpg

Вариант с Font Awesome Pro
Код
Код:
/* Font Awesome */

@import url('https://use.fontawesome.com/releases/v5.15.1/css/all.css');

/* Иконки в форме ответа 
-------------------------------------------------------------*/

.punbb #main-reply {box-sizing: border-box;}
.punbb #form-buttons table {width: 100%;}

.punbb #form-buttons tr {
display: flex;
display: -webkit-flex;
flex-wrap: wrap;
-webkit-flex-wrap: wrap;
justify-content: space-between;
padding: 0 0 5px;
width: 100%;
}

#post-form #form-buttons td {
background-image: none !important;
position: relative;
display: inline-block;
width: 30px;
height: 30px;
}

.punbb #form-buttons td img {
width: 30px;
height: 30px;
}

#form-buttons td:before {
content: " ";
font-family: "Font Awesome 5 Free";
font-size: 20px;
color: #000;
font-weight: 700;
position: absolute;
pointer-events: none;
transition: all .5s linear 0s;
width: 30px;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
left: 0;
top: 0;
}

#form-buttons td:hover:before {color: #808080;}

/* Стандартные кнопки */

td#button-font:before {content: "\f031";}
td#button-size:before {content: "\f034";}
td#button-bold:before {content: "\f032";}
td#button-italic:before {content: "\f033";}
td#button-underline:before {content: "\f0cd";}
td#button-strike:before {content: "\f0cc";}
td#button-left:before {content: "\f036";}
td#button-center:before {content: "\f037";}
td#button-right:before {content: "\f038";}
td#button-link:before {content: "\f0c1";}
td#button-spoiler:before {content: "\f070";}
td#button-spoiler:hover:before {content: "\f06e";}
td#button-image:before {content: "\f1c5";}
td#button-video:before {content: "\f144";}
td#button-hide:before {content: "\f13e";}
td#button-hide:hover:before {content: "\f023";}
td#button-quote:before {content: "\f086";}
td#button-code:before {content: "\f121";}
td#button-color:before {content: "\f53f";}
td#button-table:before {content: "\f0ce";}
td#button-smile:before {content: "\f59a";}
td#button-keyboard:before {content: "\f11c";}
td#button-addition:before {content: "\f0fe";}
td#button-files_rusff:before {content: "\f07b";}
td#button-files_rusff:hover:before {content: "\f07c";}
td#button-graffiti_rusff:before {content: "\f5bd";}

/* Дополнительные кнопки */

td#button-indent:before {content: "\f03c";} /* тег абзаца */
td#button-styles:before {content: "\f1de";} /* дополнительные стили */
td#floatbut:before {content: "\f1ea";} /* тег обтекания изображения от Romych */
td#button-justify:before {content: "\f039";} /* тег выравнивания по ширине */
td#button-mask:before {content: "\f630";} /* тег для скрипта ролевой маски от человека-шамана */
td#button-sticker:before {content: "\f1b0";} /* тег для дополнительных смайлов от человека-шамана */
Разбор кода
Что с чем и зачем, для продвинутых или желающих понять суть самостоятельно. На примере Material Icons.

.punbb #main-reply {box-sizing: border-box;}
.punbb #form-buttons table {width: 100%;}

Это нужно, чтобы выровнять ширину окна формы ответа и панели и кнопками тегов. Необязательные пункты.

.punbb #form-buttons tr - это строка таблицы с кнопками над формой ответа. Её настройки и все дела. Собственно, о настройках этого селектора:

  • display: flex и display: -webkit-flex - способ отображения блока со, скажем так, расширенными возможностями выравнивания элементов внутри. Может работать не во всех браузерах, но я хочу надеяться, что ваш браузер всё же регулярно обновляется.

  • flex-wrap: wrap - чтобы иконки переносились на следующую строку в случае, если не умещаются на одной

  • justify-content: space-between - чтобы равномерно распределялись по всей ширине строки. Без display: flex не будет работать.

  • padding: 0 0 5px - чтобы не прилипли к форме ответа. Можно указать свои значения, если разбираетесь. В данном случае указан отступ снизу.

  • width: 100% - на всю ширину

#post-form #form-buttons td - собственно, кнопки над формой ответа. Точнее сказать, ячейки таблицы. И их настройки:

  • background-image: none !important - убираем стандартные картинки от сервиса. !important, потому что граффити и вложения идут отдельно, как сервисное дополнение и иначе не спрячутся.

  • position: relative - чтобы в дальнейшем манипуляции с новыми иконками происходили внутри границ кнопки, а не выходили за её пределы.

  • width: 30px - ширина кнопки. Можно указать своё значение, если слишком широко или, напротив, слишком узко.

  • height: 30px - высота кнопки. Тоже можно указать другое значение.

.punbb #form-buttons td img - настройки картинок внутри кнопок. Они нужны, поскольку к ним прикруче скрипт, активирующий теги. Иными словами, если убрать, то при нажатии ничего не произойдёт. Поэтому не убираем.

  • width: 30px и height: 30px - ширина и высота. Должны быть равны тем, что в блоке выше.

#form-buttons td:before - псевдоэлемент, куда мы будем добавлять наши новые иконки. Это общие настройки для всех кнопок, далее будут индивидуальные.

  • content: " " - строчка, куда можно добавить текст, символы и т.д. к псевдоэлементу. Очень важный атрибут, без него псевдоэлемент работать не будет. В данном случае оставляем его пустым.

  • font-family: 'Material Icons Outlined' - тут указан иконочный шрифт, который мы используем. Я выбрал контурный вариант. Если используем Font Awesome, то меняем то, что в кавычках, на Font Awesome 5 Free.

  • font-size: 24px - размер шрифта, иными словами, размер иконок. Лучше не делать больше 30 пикселей, т.к. помним о ширине и высоте кнопок. В случае с Font Awesome использован кегль поменьше - 20px.

  • color: #000 - цвет иконок. Можно указать на свой вкус.

  • position: absolute - просто нужно, без него не будет работать.

  • pointer-events: none - см. пункт выше.

  • transition: all .5s linear 0s; - для плавной смены цвета при наведении на кнопку, если такая смена цвета предполагается.

  • width: 30px и height: 30px - ширина и высота. Разумеется, лучше сделать точно в размер ячейки.

  • display: flex - чтобы можно было установить ровно по центру кнопки

  • align-items: center и justify-content: center - выравнивание по центру относительно ширины и высоты. Без пункта выше не будет работать.

  • left: 0 и top: 0 - чтобы новая иконка находилась в пределах своих границ, а не уехала куда-нибудь.

#form-buttons td:hover:before {color: #808080;} - в фигурных скобках указан цвет иконок при наведении на них курсора. Необязательный пункт, просто для красоты. Можно указать свой цвет.

Далее сами иконки:

td#button-font:before {content: "\e167";} - Шрифт
td#button-size:before {content: "\e262";} - Размер шрифта
td#button-bold:before {content: "\e238";} - Жирный
td#button-italic:before {content: "\e23f";} - Курсив
td#button-underline:before {content: "\e249";} - Подчёркнутый
td#button-strike:before {content: "\e257";} - Зачёркнутый
td#button-left:before {content: "\e236";} - Выравнивание по левому краю
td#button-center:before {content: "\e234";} - Выравнивание по центру
td#button-right:before {content: "\e237";} - Выравнивание по правому краю
td#button-link:before {content: "\e157";} - Ссылка
td#button-spoiler:before {content: "\e8f5";} - Свёрнутый текст (спойлер)
td#button-spoiler:hover:before {content: "\e8f4";} - Свёрнутый текст (спойлер) при наведении (зачёркнутый глаз меняется на незачёркнутый. Необязательная строчка, можно вообще убрать.
td#button-image:before {content: "\e43e";} - Изображение
td#button-video:before {content: "\e070";} - Видео
td#button-hide:before {content: "\e898";} - Скрытый текст.
td#button-hide:hover:before {content: "\e897";} - Скрытый текст при наведении. Тоже необязательная строчка.
td#button-quote:before {content: "\e8af";} - Цитата
td#button-code:before {content: "\e86f";} - Код
td#button-color:before {content: "\e40a";} - Цвет
td#button-table:before {content: "\f1be";} - Таблица
td#button-smile:before {content: "\ea22";} - Смайлики
td#button-keyboard:before {content: "\f028";} - Виртуальная клавиатура
td#button-addition:before {content: "\ea20";} - Дополнительно
td#button-files_rusff:before {content: "\e2c7";} - Вложения
td#button-files_rusff:hover:before {content: "\e2c8";} - Вложения при наведении курсора. Необязательный пункт. Кому нафиг сдались эти вложения...
td#button-graffiti_rusff:before {content: "\e3ae";} - Граффити

Дополнительные кнопки подписаны уже в коде. Если вам они не нужны - можете убрать.

Стилизация

Все вышеуказанные иконки менябельны. Чтобы заменить иконку, вы можете открыть соответствующие каталоги шрифтов, найти иконку по вкусу, скопировать её четырёхзначный код и заменить то, что выделено красным (на примере кнопки "Шрифт"): td#button-font:before {content: "\e167";}

Обратите внимание, что в Font Awesome некоторые бесплатные иконки поддерживаются в 2х вариациях: с заливкой и контурные. К примеру, иконка, использованная для кнопки цитаты. Вид иконок варьируется через font-weight. По умолчанию он указан как жирный: font-weight: 700 - это иконки стиля solid. При желании некоторые иконки можно сделать контурными, прописав конкретной иконке font-weight: 400 - это стиль regular, т.е. только контуры. Выглядеть это будет вот так:
td#button-quote:before {content: "\e8af"; font-weight: 400;}
Также в Font Awesome есть Light и Duotone стили, но они только в версии Pro, т.е. платной. Впрочем, стили платной версии тоже можно найти на просторах интернета или купить. Принципы стилизации схожи с нижеописанными в Material Icons.

В Material Icons вид иконок регулируется не толщиной шрифта, а его подсемейством, так сказать. Я выбрал стиль Outlined, но помимо него есть стиль с заливкой (Filled/Baseline/Regular - называйте, как хотите), с закруглёнными краями Rounded, с заострёнными краями Sharp и Two Tone (двухцветный - контур одного цвета, заливка другого).
Выбрать можно тут: Readme.
Для добавления сразу в стиль копируем эту часть:

<!-- https://material.io/resources/icons/?style=baseline -->
<link href="https://fonts.googleapis.com/css2?family=Material+Icons"
      rel="stylesheet">

И вставляем в шаблон: @import url('сюда текст, выделенный выше красным');
Должно получиться так: @import url('https://fonts.googleapis.com/css2?family=Material+Icons');
Если хотите добавить несколько подсемейств шрифтов (допустим, не решили, хочется вам с заливкой или без заливки, то делаем так:
@import url('https://fonts.googleapis.com/css2?family=Material+Icons&family=Material+Icons+Outlined&family=Material+Icons+Two+Tone');
Так можно добавлять шрифты в одну строку, обязательно разделяя их значком &. По умолчанию в коде уже имеются вариации шрифта с заливкой, без заливки и двухцветного. Чтобы стилизовать конкретную иконку, добавляем к её конкретному коду текст: font-family: "Material Icons Two Tone" или font-family: "Material Icons". Получится вот так:
td#button-hide:before {content: "\e898"; font-family: "Material Icons Two Tone";}

P.S. Я пока не нашёл решения, как кастомизировать цвета контура и заливки в двухтонной вариации шрифта - Two Tone в MI и Duotone в FA.

Каталоги
Material Icons | Font Awesome

P.S. Я не утверждаю, что это идеальное решение для установки своих иконок над формой ответа. Вполне вероятны мелкие косяки, поэтому я буду по возможности совершенствовать код. Если у вас что-то будет отображаться некорректно - пишите, будем выяснять причины и исправлять.

0

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»



Вы здесь » Проба пера » welcome » Блог


Рейтинг форумов | Создать форум бесплатно