Pinch-to-zoom, но только в определенной div (не полная страница) [дублировать]

Я слишком поздно в игре для этого, но вы можете сделать сравнение производительности некоторых из вышеупомянутого кода с этим, два из самых быстрых соперников:

list(set(x).symmetric_difference(set(y)))
list(set(x) ^ set(y))

Извиняюсь для элементарного уровня кодирования.

import time
import random
from itertools import filterfalse

# 1 - performance (time taken)
# 2 - correctness (answer - 1,4,5,6)
# set performance
performance = 1
numberoftests = 7

def answer(x,y,z):
    if z == 0:
        start = time.clock()
        lists = (str(list(set(x)-set(y))+list(set(y)-set(y))))
        times = ("1 = " + str(time.clock() - start))
        return (lists,times)

    elif z == 1:
        start = time.clock()
        lists = (str(list(set(x).symmetric_difference(set(y)))))
        times = ("2 = " + str(time.clock() - start))
        return (lists,times)

    elif z == 2:
        start = time.clock()
        lists = (str(list(set(x) ^ set(y))))
        times = ("3 = " + str(time.clock() - start))
        return (lists,times)

    elif z == 3:
        start = time.clock()
        lists = (filterfalse(set(y).__contains__, x))
        times = ("4 = " + str(time.clock() - start))
        return (lists,times)

    elif z == 4:
        start = time.clock()
        lists = (tuple(set(x) - set(y)))
        times = ("5 = " + str(time.clock() - start))
        return (lists,times)

    elif z == 5:
        start = time.clock()
        lists = ([tt for tt in x if tt not in y])
        times = ("6 = " + str(time.clock() - start))
        return (lists,times)

    else:    
        start = time.clock()
        Xarray = [iDa for iDa in x if iDa not in y]
        Yarray = [iDb for iDb in y if iDb not in x]
        lists = (str(Xarray + Yarray))
        times = ("7 = " + str(time.clock() - start))
        return (lists,times)

n = numberoftests

if performance == 2:
    a = [1,2,3,4,5]
    b = [3,2,6]
    for c in range(0,n):
        d = answer(a,b,c)
        print(d[0])

elif performance == 1:
    for tests in range(0,10):
        print("Test Number" + str(tests + 1))
        a = random.sample(range(1, 900000), 9999)
        b = random.sample(range(1, 900000), 9999)
        for c in range(0,n):
            #if c not in (1,4,5,6):
            d = answer(a,b,c)
            print(d[1])
34
задан GJDesigns 9 October 2013 в 17:13
поделиться

4 ответа

Вы не можете этого сделать без умных хаков.

Однако вы можете (и должны) использовать следующий CSS для устранения проблем с масштабированием на мобильных устройствах:

header {
    position: fixed;
    ...
}

@media only screen and (max-width: 720px) {
    header {
        position: absolute;
    }
}

Этот код позволяет position: absolute, когда ширина экрана меньше или равна 720px, а заголовок становится частью страницы, а не фиксируется сверху.

7
ответ дан Aleksej Komarov 22 August 2018 в 18:58
поделиться
  • 1
    Теоретически это возможно, проверьте ответ этого парня: stackoverflow.com/questions/15233076/… – ido 17 June 2014 в 17:26
  • 2
    Это аналогичный вопрос с тем же решением? stackoverflow.com/questions/29674936/… & gt; gt; Не работал для меня – the_farmer 16 April 2015 в 12:59
  • 3
    Обнаружите сенсорные и гибридные сенсорные / мышиные устройства с помощью этого , а затем измените значение стиля заголовка или фиксированного элемента на absolute. Подобно этому при масштабировании на мобильных или сенсорных устройствах ввода фиксированный элемент (элементы) не разбивает остальную часть сайта, а масштабируется на каждом браузере и ОС и большинство пользовательских спецификаций (уровень масштабирования и т. Д.). – lowtechsun 23 January 2017 в 12:53
  • 4
    Я бы даже сказал, в целом , когда пользовательский масштаб установлен на абсолютное значение для рабочего стола, а также мобильных и гибридных устройств Touch / Mouse. Будущее доказательство, пусть браузер и ОС обрабатывают Zoom, пользователь счастлив, предоставлен доступ, сделан. Помните, что не ваша ответственность за то, чтобы сайт выглядел отзывчивым, когда он увеличен! Это решение пользователя, и при этом пользователь хочет увеличить каждую часть страницы, а не только содержимое. Таким образом, исключение некоторых divs из масштабирования не очень хорошо. – lowtechsun 23 January 2017 в 13:21
  • 5
    Я попробовал, но это не сработало @АлексейКомаров. Не могли бы вы привести пример выполнения? (не в фрагменте SO, так как фрагменты SO не выполняются на телефонах Android - я уже отправил запрос meta-SO об этом) – Basj 14 February 2018 в 14:04

Короче, вы, конечно, можете это сделать.

Вы можете захватывать события изменения размера окна и изменять размер вашего плавающего div в соответствии с изменением dpi, вычисленным из различных новых атрибутов окна и внутренней ширины и высоты.

Итак, когда вы увеличиваете , вы хотите сжимать плавающий div, чтобы он сохранял исходные значения dpi, и наоборот.

] Это будет эпическая скрипка - скоро повторите этот ответ, так как мне, возможно, придется это сделать. Уже заметили некоторые кросс-браузерные несоответствия с разрешением dpi, так что да, весело.

0
ответ дан Dominic Cerisano 22 August 2018 в 18:58
поделиться
  • 1
    У вас есть runnable пример @DominicCerisano? Было бы очень полезно, так как принятый ответ действительно не работает (см. imgur.com/a/Yumvk ). – Basj 20 February 2018 в 15:34
  • 2
    Как я уже упоминал, это будет большой работой, поскольку для каждого браузера потребуются отдельные реализации (Chrome, MOZ и т. Д.) И платформа (ПК, мобильный и т. Д.). – Dominic Cerisano 20 February 2018 в 23:42

Если вы используете угловой, есть способ дать одному id вашему заголовку div, а затем записать следующий код в контроллере:

document.getElementById("viewport").setAttribute('content','user-scalable=yes, width=device-width, minimum-scale=1, maximum-scale=1');

Я использовал в своем проект, и он работал хорошо ..

-2
ответ дан Luka Kerr 22 August 2018 в 18:58
поделиться

Я не думаю, что вы можете сделать это напрямую. Один из возможных вариантов - обнаружить масштабирование через js-события и элементы масштабирования соответственно.

Другой вариант - «разбить» клавишу CTRL, чтобы отключить масштабирование на вашем веб-сайте, но это просто большой нет-нет .

0
ответ дан mkey 22 August 2018 в 18:58
поделиться