Вы можете использовать словари для этого. Словари - это хранилища ключей и ценностей.
>>> dct = {'x': 1, 'y': 2, 'z': 3}
>>> dct
{'y': 2, 'x': 1, 'z': 3}
>>> dct["y"]
2
Вы можете использовать имена переменных ключей для достижения эффекта переменных переменных без риска для безопасности.
>>> x = "spam"
>>> z = {x: "eggs"}
>>> z["spam"]
'eggs'
В тех случаях, когда вы думаете сделать что-то вроде
var1 = 'foo'
var2 = 'bar'
var3 = 'baz'
...
список может быть более подходящим, чем dict. Список представляет упорядоченную последовательность объектов с целыми индексами:
l = ['foo', 'bar', 'baz']
print(l[1]) # prints bar, because indices start at 0
l.append('potatoes') # l is now ['foo', 'bar', 'baz', 'potatoes']
Для упорядоченных последовательностей списки удобнее, чем dict с целыми ключами, потому что списки поддерживают итерацию в порядке индекса, slicing , append
и другие операции, которые потребуют неудобного управления ключами с помощью dict.
Невозможно активно определить, есть ли зум. Я нашел хорошую запись здесь о том, как вы можете попытаться ее реализовать.
Я нашел два способа определения уровня масштабирования. Один из способов обнаружения изменений уровня масштабирования зависит от того, что процентные значения не увеличены. Процентное значение относительно ширины окна просмотра и, таким образом, не зависит от масштабирования страницы. Если вы вставляете два элемента: один с положением в процентах и один с одинаковой позицией в пикселях, они будут раздвигаться, когда страница будет увеличена. Найдите соотношение между положениями обоих элементов, и у вас есть уровень масштабирования. См. Тестовый пример. http://web.archive.org/web/20080723161031/http://novemberborn.net/javascript/page-zoom-ff3
Вы также можете сделайте это, используя инструменты вышеупомянутого сообщения. Проблема в том, что вы более или менее принимаете обоснованные предположения относительно того, увеличилась ли страница. Это будет работать лучше в некоторых браузерах, чем в других.
Невозможно определить, масштабируется ли страница, если они загружают вашу страницу при увеличении.
Я хотел бы предложить усовершенствование предыдущего решения с отслеживанием изменений в ширину окна. Вместо сохранения собственного массива прослушивателей событий вы можете использовать существующую систему событий javascript и запускать собственное событие при изменении ширины и привязывать к нему обработчики событий.
$(window).bind('myZoomEvent', function() { ... });
function pollZoomFireEvent()
{
if ( ... width changed ... ) {
$(window).trigger('myZoomEvent');
}
}
Дроссель / debounce может помочь снизить скорость вызовов вашего обработчика.
На iOS 10 можно добавить прослушиватель событий к событию touchmove
и обнаружить, если страница будет увеличена текущим событием.
var prevZoomFactorX;
var prevZoomFactorY;
element.addEventListener("touchmove", (ev) => {
let zoomFactorX = document.documentElement.clientWidth / window.innerWidth;
let zoomFactorY = document.documentElement.clientHeight / window.innerHeight;
let pageHasZoom = !(zoomFactorX === 1 && zoomFactorY === 1);
if(pageHasZoom) {
// page is zoomed
if(zoomFactorX !== prevZoomFactorX || zoomFactorY !== prevZoomFactorY) {
// page is zoomed with this event
}
}
prevZoomFactorX = zoomFactorX;
prevZoomFactorY = zoomFactorY;
});
Вы также можете получить события изменения размера текста и коэффициент масштабирования, введя div, содержащий по крайней мере неразрывное пространство (возможно, скрытое) и регулярно проверяя его высоту. Если высота изменяется, размер текста изменился (и вы знаете, сколько - это также срабатывает, кстати, если окно будет увеличено в полностраничном режиме, и вы все равно получите правильный коэффициент масштабирования с одинаковой высотой / высота соотношение).
Хорошая новость, все люди! Новые браузеры вызывают событие изменения размера окна при изменении масштаба.
Это работает для меня:
var deviceXDPI = screen.deviceXDPI;
setInterval(function(){
if(screen.deviceXDPI != deviceXDPI){
deviceXDPI = screen.deviceXDPI;
... there was a resize ...
}
}, 500);
Это необходимо только для IE8. Все другие браузеры, естественно, генерируют событие изменения размера.
Существует отличный плагин, построенный из yonran
, который может выполнять обнаружение. Вот его ранее ответил вопрос на StackOverflow. Он работает для большинства браузеров. Приложение так же просто:
window.onresize = function onresize() {
var r = DetectZoom.ratios();
zoomLevel.innerHTML =
"Zoom level: " + r.zoom +
(r.zoom !== r.devicePxPerCssPx
? "; device to CSS pixel ratio: " + r.devicePxPerCssPx
: "");
}
Always enable zoom
в опции «Доступность». Демонстрация не будет реагировать на изменение.
– lowtechsun
25 January 2017 в 02:10
Я использую этот фрагмент JavaScript, чтобы реагировать на «события» Zoom. Он проверяет ширину окна. (Как несколько предложено на этой странице (к которому привязал Иэн Эллиот): http://novemberborn.net/javascript/page-zoom-ff3 [архив] )
Протестировано с Chrome, Firefox 3.6 и Opera, а не с IE.
С уважением, Magnus
var zoomListeners = [];
(function(){
// Poll the pixel width of the window; invoke zoom listeners
// if the width has been changed.
var lastWidth = 0;
function pollZoomFireEvent() {
var widthNow = jQuery(window).width();
if (lastWidth == widthNow) return;
lastWidth = widthNow;
// Length changed, user must have zoomed, invoke listeners.
for (i = zoomListeners.length - 1; i >= 0; --i) {
zoomListeners[i]();
}
}
setInterval(pollZoomFireEvent, 100);
})();
Я отвечаю на 3-летнюю ссылку, но я думаю, что это более приемлемый ответ:
Создать файл .css as,
@media screen and (max-width: 1000px)
{
// things you want to trigger when the screen is zoomed
}
EG: -
@media screen and (max-width: 1000px)
{
.classname
{
font-size:10px;
}
}
Приведенный выше код делает размер шрифта «10px» при увеличении экрана примерно до 125%. Вы можете проверить различные уровни масштабирования, изменив значение «1000px».
max-width
и коэффициентом масштабирования?
– seebiscuit
11 January 2016 в 23:56
у меня была эта проблема и наконец. У меня есть решение. это просто и работает для меня. ("Mozilla / 5.0 (X11; Linux x86_64; Gecko / 20100101 Firefox / 50.0).
px ratio = отношение физического пикселя к css px. При любом одном увеличении пиксели окна просмотра уменьшаются и должны соответствовать экран должен увеличиваться, но при изменении размера окна размер экрана уменьшается, а также и пиксели. Таким образом, соотношение будет поддерживаться.
[g2] zoom: инициировать событие windows.resize -> и изменять px_ratio resizing: вызвать событие windows.resize -> не изменяется px_ratio [/g2]function chkboxToggle() {
if ($('input#chkbox').attr('checked'))
// do something
else
// do something else
}
document.body.offsetWidth
– Samy Bencherif 5 July 2017 в 22:23