Проба пера

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

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


    Вы здесь » Проба пера » 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 » Блог


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