Страницы

Поиск по вопросам

воскресенье, 31 марта 2019 г.

Как обойти текст при наведении на svg элемент?

Есть следующий код, при наведении на блок у svg должна меняться обводка, но если наводить на текст, который находится над самим svg элементом, то естественно обводка не появляется, пробовал делать вот так:
.accordion_name h2:hover svg { stroke: orange; }
Но это не привело ни к каким результатам, что можно сделать в данной ситуации?
И сразу еще вопрос, я разместил вот этот svg блок относительно родительского блока, мне нужно что бы текст всего был в районе данного треугольника:
Но если текст будет больше, то он выйдет за пределы:
Оно так и должно происходить с моим выполнением задачи, но есть ли способ сделать это правильно: Что бы если текст выходил за пределы треугольника, то треугольник делался больше в ширину, либо другие решения (Пробовал задавать максимальную ширину блоку с текстом, но не помогло).
* { margin: 0; padding: 0; } body { backgoround-color: #ddddd; } .wrapper { margin: 30px; max-width: 600px; } .accordion_item { margin-top: 4px; } .accordion_name { padding: 10px; cursor: pointer; position: relative; } .accordion_name h2 { position: relative; z-index: 3; display: inline-block; } .accordion_name h2:hover svg { stroke: orange; } svg { stroke: transparent; position: absolute; fill: #dddddd; height: 100%; width: 100%; top: 0; left: 0; right: 0; bottom: 0; z-index: 0; transition: 0.2s; } svg:hover { stroke: orange; } .accordion_content { height: 0; overflow: hidden; }

One accordiont line

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Sapiente molestias inventore cum. Eligendi ad quae, veritatis nostrum dolores doloremque culpa. Nam sequi omnis fugiat sed. Enim ipsum rerum iure quisquam.

One accordiont line

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Sapiente molestias inventore cum. Eligendi ad quae, veritatis nostrum dolores doloremque culpa. Nam sequi omnis fugiat sed. Enim ipsum rerum iure quisquam.

One accordiont line

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Sapiente molestias inventore cum. Eligendi ad quae, veritatis nostrum dolores doloremque culpa. Nam sequi omnis fugiat sed. Enim ipsum rerum iure quisquam.


Ответ

Сделайте табы при помощи css:
* { margin: 0; padding: 0; } div { border-bottom: 1px solid #ccc; margin: 20%; cursor: pointer; } span { position: relative; display: table; border: 1px solid #ccc; border-right: none; background: #eee; line-height: 28px; margin-bottom: -1px; padding: 0 30px; } span:before, span:after { content: ''; position: absolute; top: -1px; left: 100%; width: 0; height: 0; border-style: solid; border-width: 30px 0 0 50px; /* Изменяя цифру 50 можно менять угол наклона */ border-color: transparent transparent transparent #ccc; z-index: -1; } span:after { margin-left: -2px; border-color: transparent transparent transparent #eee; } div:hover { border-bottom-color: orange; } div:hover span { border-color: orange; } div:hover span:before { border-color: transparent transparent transparent orange; }

Пунтк 1

Не будет проблем с шириной. Ограничение для текста тоже можно приделать используя overflow: hidden и white-space: nowrap. Можете дорабатывать как захочется.

Объясните на пальцах совместимость библиотек в .Net Core, .Net Framework, .Net Standart

Изучаю .Net. Хочу написать некое серверное приложение (думаю что учеба лучше на реальном примере, нежели писать примитивные hello world). Выбор уходит в сторону .Net Core (микросервис). В проекте нужно будет использовать некоторые библиотеки (далее пример приведу). Из всего прочитанного понял следующее (если что не правильно понял поправьте):
Net Standart - вершина "айсберга" (своего рода типа интерфейс для остальных проектов) Net Core, Net Framework, Xamarin - ниже по иерархии (типа как классы реализующие интерфейс), но могут (и скорее всего так и делают) добавлять свои специфические фичи, характерные для каждого из них. Библиотеки (dll-ки) написанные как классы Net Standart могут использоваться в любом из наследников (Net Core, Net Framework, Xamarin) с полной совместимостью (а если быть точным то смотреть таблицу реализации https://docs.microsoft.com/en-us/dot...tation-support), но не наоборот (т.е. к примеру если библиотека написана как Net Framework dll (со специфическими для Net Framework фичами), то не факт что ее можно использовать в Net Core, потому как он не поддерживает специфические фичи из Net Framework) Каждая последующая версия Net Standart, Net Core, Net Framework, Xamarin включает в себя все фичи из предыдущей версии самой себя + некоторые новые. Т.е. к примеру код написанный под Net Standart 1.3 будет 100% работать в Net Standart 2.0, НО код написанный под Net Standart 2.0 не будет работать в Net Standart 1.3 и выше.
И теперь собственно на реальном примере. Буду использовать .Net Core 2.0 и смотреть совместимость естественно с Net Standart 2.0 и .NETFramework 4.6.1. Выбираю два пакета (библиотеки) на сайте nuget. Первый к примеру Selenium Webdriver https://www.nuget.org/packages/Selenium.WebDriver/ Во вкладке dependencies смотрю что ему надо (я понимаю что все это подтянется автоматом в visual studio, вручную не надо):
.NETFramework 3.5 No dependencies.
.NETFramework 4.0 No dependencies.
.NETFramework 4.5 No dependencies.
.NETStandard 2.0 Newtonsoft.Json (>= 10.0.3)
Как я понимаю ему не нужны никакие зависимости из .NETFramework, но нужна одна зависимость из .NETStandard 2.0. Но для Newtonsoft.Json (>= 10.0.3) тоже нужны зависимости https://www.nuget.org/packages/Newtonsoft.Json/
.NETFramework 2.0 No dependencies.
.NETFramework 3.5 No dependencies.
.NETFramework 4.0 No dependencies.
.NETFramework 4.5 No dependencies.
.NETStandard 1.0 Microsoft.CSharp (>= 4.3.0) NETStandard.Library (>= 1.6.1) System.ComponentModel.TypeConverter (>= 4.3.0) System.Runtime.Serialization.Primitives (>= 4.3.0)
.NETStandard 1.3 Microsoft.CSharp (>= 4.3.0) NETStandard.Library (>= 1.6.1) System.ComponentModel.TypeConverter (>= 4.3.0) System.Runtime.Serialization.Formatters (>= 4.3.0) System.Runtime.Serialization.Primitives (>= 4.3.0) System.Xml.XmlDocument (>= 4.3.0)
.NETStandard 2.0 No dependencies.
Вот тут я немного в ступоре. Если я буду использовать .Net Core 2.0, а он в свою очередь реализует .NETStandard 2.0, то как я понимаю для Newtonsoft.Json уже не нужны зависимости из .NETStandard 1.0 и .NETStandard 1.3, потому как все это уже есть в .NETStandard 2.0.
Т.е. будет ли пакет Selenium.WebDriver совместим с .Net Core в данном случае?
И еще один пример, есть пакет cefSharp: https://www.nuget.org/packages/CefSharp.OffScreen/65.0.0-pre01 Он тянет зависимость CefSharp.Common (= 65.0.0-pre01) Та еще две, но эти последние две не тянут ничего https://www.nuget.org/packages/cef.redist.x64/
This package has no dependencies.
В этом случае ни слова про .NETStandard и .NETFramework. Т.е. как я понимаю они вообще самодостаточные? Т.е. как они будут работать в .Net Core?
Длинный вопрос получился, но надеюсь вы поняли, в чем я хочу разобраться: Как выяснить совместимость пакета с определенной реализацией .NET?


Ответ

Вы немного неправильно читаете раздел "dependencies". Вы читаете его как "поддерживаемые фреймворки, и необходимые части фреймворков". На самом деле это "необходимые дополнительные пакеты, при использовании этого пакета под конкретный фреймворк".
Например:
Как я понимаю ему не нужны никакие зависимости из .NETFramework, но нужна одна зависимость из .NETStandard 2.0.
Это не "одна зависимость из .NETStandard 2.0". Это "другие nuget-пакеты, которые нужны для использования версии Selenium.WebDriver, собранной под .NETStandard 2.0.".
Если ваше приложение собирается под .NETFramework 4.5 - вы можете подключить пакет Selenium.WebDriver, и код из него будет работать сам по себе, без необходимости подключать дополнительные пакеты.
Если ваше приложение собирается под .NETStandard 2.0 (или любую его реализацию, под которую нет более специфической версии, например под .NET Core) - то при подключении Selenium.WebDriver вам придется подключить еще и Newtonsoft.Json.

Вывести тип, использованный в шаблонных параметрах аргумента

Можно ли сделать так, чтобы тип CharT выводился автоматически в C++17?
template void test(std::basic_string_view string) {
} test("hello world"); //ok test("hello world"); //compile error


Ответ

Можно добавить перегрузку:
template void test(CharT const ( & string )[x_array_size]) { return test(std::basic_string_view{string}); }

Что означает данное приведение типа

В статье в по адресу https://ru.cppreference.com/w/cpp/algorithm/transform наткнулся на такое приведение типа:
(int (*)(int))std::toupper
Как правильно прочитать данное приведение типа, и для чего оно нужно.


Ответ

int (*)(int) - указатель ((*)) на функцию от int ((int)), которая возвращает int
int (*)(int) ^ указатель ^ на функцию от int ^ возвращающую int

Как написать regex, не принимающий пустую строку?

Мне нужно, чтобы выражение могло читать: символ -, либо же слово состоящее из букв KQkq. Порядок важен, каждая буква может присутствовать ноль либо один раз. Слово должно состоять минимум из одной буквы.
Я написал такое выражение (-|K?Q?k?q?), но оно, к сожалению принимает и пустую строку. Есть идеи как его можно улучшить?
Строки которые должны приниматься
- KQkq K Q Qk
не должны приниматься
QK QQ // пустая строка qQ


Ответ

Вроде так:
/^(\-|KQ?k?q?|K?Qk?q?|K?Q?kq?|K?Q?k?q)$/g
Проверить можете тут

Как ограничить время работы сценария?

Как ограничить время работы сценария? Например я поставил чтобы через 5 минут программа закрылась, она работает и как только 5 минут пройдет программа закроется. Как это можно реализовать? В windows.


Ответ

Код сценария выполняется в функции run. Функция join ждет указанное количество времени, блокируя дальнейшее выполнение кода в главном потоке. После окончания указанного времени скрипт напечатает в консоль сообщение и закроется.
Параметр daemon=True указывает, что поток при завершении главного потока также завершится:
import threading
def run(): import time
i = 1
# Бесконечный цикл while True: print i i += 1
time.sleep(1)
if __name__ == '__main__': thread = threading.Thread(target=run) thread.daemon = True thread.start() thread.join(5 * 60)
print 'Quit!'

Что значит :: знак в java? [дубликат]

На данный вопрос уже ответили: Что значит оператор ::? 1 ответ Часто вижу :: при определении нового экземпляра, в стримах, иногда в лямда выражениях. Что он значит? Что значит List :: stream?
P.S. И как он называется?


Ответ

Оператор "ссылка на метод" (Method Reference). По сути - сокращенная запись для ссылки на метод из функционального интерфейса при использовании лямбды.
List::stream
является ссылкой на метод stream() из интерфейса List
List> list = Arrays.asList( Arrays.asList(1,2,3), Arrays.asList(4,5,6) ); list.steam() .flatMap(List::stream) .forEach(System.out::println);
приведенный отрывок кода означает: 1. Мы инициализируем поток, в котором будет список чисел (Stream>) 2. с помощью flatMap мы объединяем список чисел в поток чисел (Stream) 3. с помощью forEach и ссылки на метод println для каждого элемента из потока вызывается вывод на экран
Если владеете английским, хорошее объяснение с примерами приведено в этом ответе