Страницы

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

Показаны сообщения с ярлыком масштабирование. Показать все сообщения
Показаны сообщения с ярлыком масштабирование. Показать все сообщения

среда, 22 января 2020 г.

DPI виртуализация

#windows #масштабирование #dpi


Что конкретно обозначается под DPI, когда речь идёт о масштабировании интерфейса?
Простое определение: dpi - это количество точек на дюйм бумаги при печати. Не совсем
ясна суть, когда речь идёт о методе виртуализации DPI в Windows. Чем больше это значение
указываешь в настройках, тем крупнее становится изображение. Но в чём логика, если
точек на дюйм становится больше, а изображение не становится от этого меньше - всё
наоборот.

Возьмём для примера отрисовку линии длиной 96 пикселей. DPI системы равен 120, PPI
- 144. Какова будет длина линии в дюймах? Ответ: 5/6 дюйма. Но как это работает?
    


Ответы

Ответ 1



DPI в Windows - это число пикселей на логический дюйм, а не физический. Нет смысла на его основе пытаться вычислить "размер чего-то в дюймах", так как эта настройка на самом деле предназначена для обратного, вычисления "размера чего-то в пикселях". Логический дюйм задается как высота строки 72-го шрифта. Тогда высота строки N-го шрифта в пикселях определяется формулой: DPI * N / 72 Отсюда и происходит увеличение размеров. Разумеется, шрифт здесь только для примера. Масштабирование DWM затрагивает не только шрифты, все линейные размеры элементов UI увеличиваются на фиксированный масштабный коэффициент, равный DPI / 96. Подробная информация: DPI and Device-Independent Pixels

пятница, 27 декабря 2019 г.

Масштабирование страницы при изменении разрешения

#масштабирование #javascript #css


Добрый день, о лучшие умы планеты!
Есть задача, при изменении разрешения экрана, контент уменьшать пропорционально (все
внутри страницы, оставлять на местах, только уменьшать). Нагуглил про тему viewport
@media screen and (max-width: 1376px) {
@-ms-viewport { width: 1920px; }

Но это работает только в опере и эксплорер. Пожалуйста, подскажите, как можно добиться
кроссбраузерного эффекта как у viewport?     


Ответы

Ответ 1



Не знаю на сколько это вам поможет, есть плагин jquery.fullPage.js Плагин реализует как раз маштабирование контента. Я конектил к нему стили bootstrap все работает.

среда, 11 декабря 2019 г.

Горизонтальное масштабирование

#php #yii #mongodb #highload #масштабирование


Для одного из PHP + MongoDB проектов возникла необходимость осуществления горизонтального
масштабирования.


Учитывая, что будет использоваться несколько серверов, как лучше реализовать актуальность
своих же скриптов? Разные мелочи появляются довольно часто, как бы их из одного централизованного
хранилища сразу везде обновлять? sshfs, или gluster, или есть более простые способы?
В идеале хотелось бы иметь где-то директорию с ядром проекта, которое бы использовалось
напрямую остальными серверами.
Кэширование сейчас организовано в файловой системе, но, как я понимаю, будет необходимо
делать его общим для всех серверов. Как это делать лучше? Завести ещё одну БД под кэш,
или как-то ещё "выкручиваться"? Особенность у нас - в кэше есть данные общим объёмом
в несколько гигабайт, которые изменяются от силы раз в год, а используются чуть ли
не каждую минуту, именно из-за этого когда-то кэш не стали делать в redis. Как с такими
данными быть, тоже в БД? И какую БД для этого выбрать?
Правильно ли я понимаю, что при горизонтальном масштабировании сессии тоже 
необходимо хранить в БД?

    


Ответы

Ответ 1



Использовать сетевое хранилище для исходников - не самая лучшая идея. Каждый раз когда появляются разные мелочи - они должны пройти тестирование в отдельном окружении и только после этого следует использовать скрипт развертывания (deployment) актуальной версии и только на одном сервере, - после чего при помощи a/b-тестирования убедиться, что все работает как нужно. И только после того как все изменения протестированы, - запускать скрипт развертывания на остальных серверах. Использование файлового хранилища для исходников возможно, но это выглядит как неоправданная жертва стабильности в угоду удобству. Чем не подошел кэш в redis? - Несколько ГБ данных не создаст для него проблемы. Или вы имеете в виду, что одна запись в кэшэ занимает несколько ГБ ? - В таком случае следует разделить легкий и тяжелый кэш на раздельные сервисы. Нет. При горизонтальном масштабировании вы можете привязать пользователя к определенному серверу с которым он будет работать, в частности это используется для a/b-тестирования. В любом случае хранить сессии в реляционной БД не нужно, - они очень хорошо лежат в memcached.

пятница, 12 июля 2019 г.

Масштабирование страницы колёсиком мыши

Подскажите, как реализовать масштабирование страницы колёсиком мыши, без применения каких-либо клавиш дополнительно?


Ответ

Благодарю за помощь, сам разобрался.Вот кому интересно: //Реализация масштабирования при помощи скролинга колёсиком мыши
//Переменные var delta; // Направление колёсика мыши //Объявление переменной значения зума var isCall = false; if(!isCall){ var zoom = 1; isCall = true;//Чтобы начальное значение было присвоено 1 раз }
//Функция для добавления обработчика событий function addHandler(object, event, handler){ if(object.addEventListener){ object.addEventListener(event, handler, false); }else if(object.attachEvent){ object.attachEvent('on' + event, handler); }else alert("Обработчик не поддерживается"); }
// Добавляем обработчики для разных браузеров addHandler(window, 'DOMMouseScroll', wheel); addHandler(window, 'mousewheel', wheel); addHandler(document, 'mousewheel', wheel);
// Функция, обрабатывающая событие function wheel(event){ event = event || window.event; // Opera и IE работают со свойством wheelDelta if (event.wheelDelta){ // В Opera и IE delta = event.wheelDelta / 120; // В Опере значение wheelDelta такое же, но с противоположным знаком if (window.opera){ delta = -delta;// Дополнительно для Opera } }else if(event.detail){ // Для Gecko delta = -event.detail / 3; } // Запрещаем обработку события браузером по умолчанию if (event.preventDefault){ event.preventDefault(); }else{ event.returnValue = false;//Для ослика }
//Выполняем зум if(delta > 0){ zoom += 0.1;//Шаг document.body.style.MozTransform = zoom; // для FireFox document.body.style.OTransform = zoom; // для Opera document.body.style.zoom = zoom; }else{ zoom -= 0.1;//Шаг document.body.style.MozTransform = zoom; // для FireFox document.body.style.OTransform = zoom; // для Opera document.body.style.zoom = zoom; } }

пятница, 5 июля 2019 г.

Верстка, css. Артефакты при масштабировании

Всем привет. Возникла такая проблема. При изменении масштаба в хроме (зажать Ctrl и крутить колесико) в верстке возникают артефакты, в виде 1 лишнего пикселя, или же наоборот, обрезание дивов на пиксель где - нибудь сбоку. Подскажите, пожалуйста, как с этим можно бороться? А если нельзя, то как объяснить появление этих пикселей. Адрес сайта для наглядности сброшу, если будет нужен


Ответ

На все воля браузера. Происходит естественно в результате округлений при расчетах масштабирования. Для примера 955 px как уменьшить в 2 раза? 955/2=477,5. Как отобразить полпикселя? Естественно округлив до целого числа, 478. Вот и весь секрет.