filter
Устанавливает фильтр (визуальный эффект) или их сочетание для элемента. К фильтрам относится изменение прозрачности, добавление тени, трансформация и др.
Синтаксис
filter: progid:DXImageTransform.Microsoft.Фильтр(свойства)
Фильтры
Alpha Настраивает прозрачность объекта. BasicImage Устанавливает параметры цвета, поворота изображения или прозрачности. Blur Размывает содержимое. Chroma Показывает определенные цвета прозрачными. DropShadow Отображает тень. Emboss Показывает содержимое объекта в виде барельефа. Engrave Показывает содержимое объекта в виде черно-белой гравюры. Glow Добавляет свечение вокруг краев. Gradient Создаёт линейный градиент. ICMFilter Преобразует цвета содержимого на основе профиля системы управления цветом (Image Color Management, ICM). Light Создает эффект лучей света. MaskFilter Показывает прозрачные пикселы как цветную маску, а непрозрачные пикселы наоборот, прозрачными. Matrix Изменяет размер, поворачивает или отражает объект на основе матричных преобразований. MotionBlur Размывает объект так, словно он быстро движется. Shadow Добавляет тень. Wave Вносит волнообразные искажения.
HTML5 CSS2.1 IE Cr Op Sa Fx
filter
Браузеры
В IE6 и в IE7 фильтры применяются только для элементов, у которых установлено свойство hasLayout.
Internet Explorer 9 не добавляет фильтры к элементам при печати документа.
как сделать фильтр поиска?
всем привет не судите строго за вопрос, только начинаю изучать) нужно сделать меню поиска, состоящее из фильтров. в меню фильтра должен показывать выбранный фильтр, а весь список фильтра показывается в выпадающем меню, проблема в том что не получается «поставить» выбранный фильтр в меню данного фильтра.
Отслеживать
задан 12 июн 2020 в 12:11
23 3 3 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
надеюсь правильно тебя понял, вот примерный код того что ты хочешь
public selectedFilter: string; // . public selectFilter(filter: string): void
Немного обьясню что происходит, на каждый элемент ngFor мы указыва функцию на клик которая принимает как параметр название фильтра, либо сам фильтр (это может быть как обьект так и простой тип данных), ну присваеваем в переменную выбранный фильтр
Также такие вот действия в представлении: typeDropdown = !typeDropdown я бы советовал всё таки вынести в компонент (ts файл), это неявная логика и вообщемто принято разделять логику от представления, инлайн функции не приветствуются
Как сделать — Фильтр элементов
Узнать, как фильтровать элемент DIV на основе его имени класса.
Фильтр элементов DIV
Показать все Машины Животные Фрукты Цветы
Создание фильтра элементов DIV
Шаг 1) Добавить HTML:
Пример
Шаг 2) Добавить CSS:
Пример
.filterDiv float: left;
background-color: #2196F3;
color: #ffffff;
width: 100px;
line-height: 100px;
text-align: center;
margin: 2px;
display: none; /* Скрыто по умолчанию */
>
/* В класс «show» добавляется к отфильтрованные элементы */
.show display: block;
>
/* Стиль кнопок */
.btn border: none;
outline: none;
padding: 12px 16px;
background-color: #f1f1f1;
cursor: pointer;
>
/* Добавить светло-серый фон на наведении курсора мыши */
.btn:hover background-color: #ddd;
>
/* Добавить темный фон для активной кнопки */
.btn.active background-color: #666;
color: white;
>
Шаг 3) Добавить JavaScript:
Пример
filterSelection(«all»)
function filterSelection(c) var x, i;
x = document.getElementsByClassName(«filterDiv»);
if (c == «all») c = «»;
// Добавить класс «show» (display:block) к отфильтрованным элементам и удалите класс «show» из элементов, которые не выбраны
for (i = 0; i < x.length; i++) w3RemoveClass(x[i], "show");
if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], «show»);
>
>
// Показать отфильтрованные элементы
function w3AddClass(element, name) var i, arr1, arr2;
arr1 = element.className.split(» «);
arr2 = name.split(» «);
for (i = 0; i < arr2.length; i++) if (arr1.indexOf(arr2[i]) == -1) element.className += " " + arr2[i];
>
>
>
// Скрыть элементы, которые не выбраны
function w3RemoveClass(element, name) var i, arr1, arr2;
arr1 = element.className.split(» «);
arr2 = name.split(» «);
for (i = 0; i < arr2.length; i++) while (arr1.indexOf(arr2[i]) > -1) arr1.splice(arr1.indexOf(arr2[i]), 1);
>
>
element.className = arr1.join(» «);
>
// Добавить активный класс к текущей кнопке управления (выделите ее)
var btnContainer = document.getElementById(«myBtnContainer»);
var btns = btnContainer.getElementsByClassName(«btn»);
for (var i = 0; i < btns.length; i++) btns[i].addEventListener("click", function() var current = document.getElementsByClassName("active");
current[0].className = current[0].className.replace(» active», «»);
this.className += » active»;
>);
>
Как создать фильтр результатов поиска в WordPress
Нативный поиск в WordPress работает неплохо. Но его возможности можно расширить с помощью системы фильтров. Всё, что вам нужно для этого, немного PHP-кода и небольшое ноу-хау.
Итоговый результат

Вот как будет выглядеть итоговый результат.
1. HTML- код
Мы будем использовать тему Twenty Seventeen. Скачайте ее и откройте в редакторе кода. В файле search.php перейдите на строку 26. Под ней добавьте HTML-код меню фильтров.
Filter By
Как видите, мы используем стандартный элемент nav с несколькими ссылками внутри него.
Также добавьте заголовок, применив для этого стандартный класс page-title из темы Twenty Seventeen.
2. CSS- код
CSS- код достаточно прост. Тема Twenty Seventeen предоставляет большинство стилей для отступов и шрифтов.
Откройте файл style.css, прокрутите его в самый низ и добавьте следующий CSS-код:
.page-nav < margin-bottom: 70px; padding-bottom: 70px; display: flex; flex-wrap: wrap; border-bottom: 2px solid #eee; >.page-nav a < padding: 5px 20px; border-radius: 1000px; background: #eee; >.page-nav a:hover < background: #ddd; >.page-nav a.current < background: #222; color: #fff; >.page-nav a:not(:last-child)
Единственный момент, требующий внимания, это использование .page-nav a:not(:last-child). Это значит: “применить ко всем ссылкам, кроме последней” .
3. PHP- код
Откройте файл functions.php. Добавьте приведенный ниже код в самый низ, чтобы отделить этот код от основного.
Чтобы применять CSS-класс .current к ссылкам элемента nav, нужно создать новую функцию ip_search_filter_item_class();.
Заметьте, что мы используем префикс ip_ в начале имени функции. На сайте могут быть установлены другие плагины, которые используют функцию search_filter_item_class();. Применение префикса существенно снижает вероятность возникновения ошибки.
function ip_search_filter_item_class($passed_string = false)
Затем нужно получить тип поста, который будет передаваться в строку запроса. И после этого проверить, совпадает ли он с тем, что передаётся в функцию:
$post_type = (isset($_GET[‘post_type’]) ? $_GET[‘post_type’] : false); if($passed_string == $post_type)
Перед тем, как создать основную функцию, добавьте следующий код в HTML-файл:
Теперь добавим корректные URL- адреса к этим ссылкам:
Мы получаем адрес URL-адрес домашней страницы и добавляем к нему параметр ?s= вместе с поисковым запросом. У вас должен получиться примерно такой URL- адрес:
http://localhost:8888/wordpress/?s=test&post_type=page
Ссылка на пост работает, а ссылка на страницу – нет. Исправим это в следующей функции фильтра результатов поиска:
function ip_search_filter($query) < >add_filter('pre_get_posts', 'ip_search_filter');
Затем настроим возврат запроса и проверку того, не находимся ли мы в панели администрирования:
function ip_search_filter($query) < // Проверяем, что мы не в панели администрирования if(!is_admin()) < >// Возвращаем результат return $query; > add_filter('pre_get_posts', 'ip_search_filter');
Теперь нужно убедиться в том, что мы работаем с правильным запросом. В данном случае это главный запрос поиска:
// Проверяем, что это главный запрос поиска if($query->is_main_query() && $query->is_search())
Последним шагом будет получение значения переменной $_GET[‘post_type’], его обработка и применение к текущему запросу:
// Проверяем, задана ли $_GET['post_type'] if(isset($_GET['post_type']) && $_GET['post_type'] != '') < // Фильтруем его для безопасности $post_type = sanitize_text_field($_GET['post_type']); // Устанавливаем тип поста $query->set('post_type', $post_type); >
PHP-код создан и размещён в нужном месте.
4. Итоговый код примера
HTML-код
Filter By
CSS-код
.page-nav < margin-bottom: 70px; padding-bottom: 70px; display: flex; flex-wrap: wrap; border-bottom: 2px solid #eee; >.page-nav a < padding: 5px 20px; border-radius: 1000px; background: #eee; >.page-nav a:hover < background: #ddd; >.page-nav a.current < background: #222; color: #fff; >.page-nav a:not(:last-child)
PHP-код
function ip_search_filter_item_class($passed_string = false) < $post_type = (isset($_GET['post_type']) ? $_GET['post_type'] : false); if($passed_string == $post_type) < echo 'current'; >> function ip_search_filter($query) < // Проверяем, что мы не в административной области if(!is_admin()) < // Проверяем, что это главный запрос поиска if($query->is_main_query() && $query->is_search()) < // Проверяем, задана ли $_GET['post_type'] if(isset($_GET['post_type']) && $_GET['post_type'] != '') < // Фильтруем его для безопасности $post_type = sanitize_text_field($_GET['post_type']); // Устанавливаем тип поста $query->set('post_type', $post_type); > > > // Возвращаем результат return $query; > add_filter('pre_get_posts', 'ip_search_filter');
Созданный нами поисковый фильтр легко расширяется. На его основе можно создать более мощные системы сортировки поисковых результатов для WordPress-сайта.
