При масштабировании съезжают блоки – absolute при масштабировании позиционируются относительно окна и разлетаются кто куда. Почему и как исправить? — Хабр Q&A

Как сделать так,чтобы картинка не съезжала при масштабировании? — Хабр Q&A

В общем,суть вопроса. Делаю интерактивную картинку с помощью SVG,всё бы ничего,выглядит классно,работает клёво,НО! При масштабировании всё съезжает.Даже если делать положение элемента в процентах (бяда!).Помогите,как исправить эту ситуацию?
Код:
<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="UTF-8">
	<title>Интерактивная карта</title>
	<meta name="description" content="">
	<meta name="keywords" content=" ">
	<link rel="stylesheet" href="css/main.css">
	<link rel="stylesheet" href="css/media.css">
	<link rel="stylesheet" href="css/fonts.css">
	<link rel = 'stylesheet' href = 'style.css'>
	<link rel="icon" type="image/x-icon" href="/images/favicon.ico">	
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>

<body>
	<div>
		<svg viewBox="0 0 1140 800">
			<a href="#">
				<path d="m 457.22244,98.885648 c 32.52252,66.957192 38.73863,153.400622 28.16442,252.281322 l 137.22665,-5.39319 c 5.33727,-80.01803 6.81847,-159.82184 -44.34398,-236.701 z" fill="#bf2523" description-data="<img src='media/2.jpg'> Реберная часть (толстый край) — первосортное мясо, в цельном виде состоит из 13 ребер">
				</a>

				<a href="#">
				<path d="m 578.26953,109.07278 c 44.33189,69.33986 54.25203,149.81293 44.34398,236.701 l 152.80698,-0.59924 C 772.7733,261.24635 769.87608,177.39629 717.29391,109.07278 Z" fill="#bf2523" description-data="<img src='media/1.jpg'> Филей (поясничная часть, тонкий край). Этот отруб содержит нежное и очень постное мясо.">
				</a>
			</svg>

			<div>
				
			</div>

			<img src="https://s8.hostingkartinok.com/uploads/images/2019/10/667cca51ff79a7a05724107534ff1638.jpg" alt="">
		</div>


	<!--[if lt IE 9]>
	<script src="libs/html5shiv/es5-shim.min.js"></script>
	<script src="libs/html5shiv/html5shiv.min.js"></script>
	<script src="libs/html5shiv/html5shiv-printshiv.min.js"></script>
	<script src="libs/respond/respond.min.js"></script>
<![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="js/main.js"></script>
</body>
</html>
.map {
	position:relative;
	text-align:center;
	top:0;
	left:0;
}
svg {
	position:absolute;
	left:0.3%;
	top:-0.3%;
	height:100%;
	width:100%;
}

(Да,там изначально изображение съехавшее,но это из-за масштабирования со стороны хостинга картинок,на который я залил это,чтобы вы могли посмотреть,в чём может быть причина)

масштабирование — При изменении масштаба страницы смещается содержимое сайта

Stack Overflow на русском

Loading…

  1. 0
  2. +0
    • Тур Начните с этой страницы, чтобы быстро ознакомиться с сайтом
    • Справка Подробные ответы на любые возможные вопросы
    • Мета Обсудить принципы работы и политику сайта
    • О нас Узнать больше о компании Stack Overflow
    • Бизнес Узнать больше о поиске разработчиков или рекламе на сайте
  3. Войти Регистрация
  4. текущее сообщество

    • Stack Overflow на русском справка чат
    • Stack Overflow на русском Meta

Съезжают блоки при уменьшении масштаба

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
(function(window, document, undefined) {
    'use strict';
    function getPosition(parent) {
        var pos = {left:0, top: 0};;
        while (parent) {
            pos.left += parent.offsetLeft;
            pos.top += parent.offsetTop;
            parent = parent.parentElement;
        }
        return pos;
    };
 
    function dataSource (source) {
        var ds = {};
 
        var self = {
            async: false,
            set: function(data, str) {
                str = str || '';
                ds[str] = data;
            },
            get: function(str, callback) {
                var subset = [];
 
                for( var k in ds ) {
                    if (str.indexOf(k) !== -1) {
                        var data = ds[k], subset = [];
                        for (var i=0; i < data.length; i++) {
                            if (data[i].match(new RegExp(str, 'i'))) subset.push(data[i]);
                        }
                        if (self.async && callback !== undefined) callback(subset);
                        return subset;
                    }
                }
                if (self.async) {
                    source(str, function(subset) {
                        ds[str] = subset;
                        callback(subset);
                    });
                }
                return [];
            }
        };
        if (source.constructor == Function) self.async = true; 
        else if (source !== undefined) ds[''] = source;
 
        return self;
    };
 
    function createDropDown (elem, ds) {
        var listElem;
        var current = null;
        var keyTimer = null;
        var mouseTimer = null;
 
        function createList() {
            var listElem = document.createElement('div');
            listElem.className = 'options';
            listElem.style.position = "absolute";
 
            var pos = getPosition(elem);
            listElem.style.left = pos.left + 'px';
            listElem.style.top = (elem.offsetHeight + pos.top) + 'px';
            listElem.style.width = elem.clientWidth + 'px';
            listElem.style.display = 'none';
            document.getElementsByTagName('body')[0].appendChild(listElem);
            listElem.onclick = function(e) {
                if (e.target.tagName === 'A') pick(e.target);
            }
            return listElem;
        }
 
        function pick(me) {
            current = null;
            elem.value = me.innerHTML;
            self.clear();
        }
 
        var self = {
            clear: function () {
                listElem.innerHTML = '';
                listElem.style.display = "none";
                current = null;
                return true;
            },
            render: function(d) {
                listElem.innerHTML = '';
                current = null;
                for ( var i in d ) {
                    var t = document.createElement("a");
                    t.innerHTML = d[i];
                    listElem.appendChild(t);
                    if (i > 10) break;
                }
                listElem.style.display = "block";
            },
            selectNext: function() {
                var temp = current;
                var next = (current) ? current.nextSibling || current : listElem.children[0];
                if (current) current.className = "";
                next.className = "selected";
                current = next;
                return (temp === current);
            },
            selectPrev: function() {
                if (!current) return true;
                var prev = current.previousSibling || current;
                current.className = "";
                prev.className = "selected";
                current = prev;
            },
            useCurrent: function() {
                if (current) {
                    pick(current);
                    return false;
                } else {
                    listElem.style.display = "none";
                    return true;
                }
            },
            update: function() {
                clearTimeout(keyTimer);
                keyTimer = setTimeout(function(){
                    if (elem.value.length === 0) return;
                    if (ds.async) {
                        ds.get(elem.value, (function(str){
                            return function(ds) {
                                if (elem.value === str) self.render(ds);
                                else self.update();
                            }
                        })(elem.value));
                    } else self.render(ds.get(elem.value));
                }, 20);
            }
        };
 
        listElem = createList();
        listElem.onmouseover = function() {
            clearTimeout(mouseTimer);
            if (current) {
                current.className = "";
                current = null;
            }
        }
        listElem.onmouseout = function() {
            mouseTimer = setTimeout(function(){
                self.clear();
            }, 20);
        }
 
        return self;
    }
 
    function keyBind(elem, dropdown) {
        elem.onkeydown = function(e) {
            if (e.which === 9) return dropdown.useCurrent();
        };
 
        elem.onkeyup = function(e) {
            if (elem.value.length === 0) return dropdown.clear();
            switch (e.which) {
                case 40:
                    return dropdown.selectNext();
                    break;
                case 38:
                    return dropdown.selectPrev();
                    break;
                case 13:
                    return dropdown.useCurrent();
                    break;
                case 9:
                    return true;
                    break;
                default:
                    dropdown.update();
                    return true;
                    break;
            }
        };
    }
 
    function completeTags(elem, ds) {
        if (elem.constructor == String) {
            elem = document.querySelectorAll(elem);
        } 
        if (elem.length && elem.length > 0) {
            for (var i in elem) {
                var dd = createDropDown(elem[i], ds);
                keyBind(elem[i], dd);
            }
        } else {
            var dd = createDropDown(elem, ds);
            keyBind(elem, dd);
        }
    }
 
    window.suggestTags = function(source, elem) {
        var x = new XMLHttpRequest();
        x.open('GET', source);
        x.onreadystatechange = function() {
            if (x.readyState == 4 && x.status == 200) {
                var a = x.responseText.split(',').filter(function(item, pos, self) {
                    return item != '' && self.indexOf(item) == pos;
                });
                completeTags(elem, dataSource(a));
            }
        }
        x.send();
        return !1;
    }
 
    window.pickTag = function(src, dst) {
        var srcElem = document.querySelector(src);
        var dstElem = document.querySelector(dst);
        var value = srcElem.value.trim();
        if (!value) return;
        var elem = document.createElement('li');
        elem.innerHTML = '<span>' + value + '</span> <a href="javascript
:;">Г—</a>';         dstElem.appendChild(elem);         srcElem.value = '';     }       window.dropTag = function(tag) {         tag.parentElement.removeChild(tag);         return !1;     }       window.passTags = function(selector) {         var elems = document.querySelectorAll(selector);         var pass = [];         for (var i = 0, j = elems.length; i < j; i++) {             pass.push(elems[i].innerHTML);         }         pass = pass.filter(function(item, pos, self) {             return self.indexOf(item) == pos;         });         alert(pass);     }   })(window, document);

Как сделать чтобы блоки съезжали при уменьшении экрана? — Хабр Q&A

Есть код
<table>
    <tr>
      <td></td>
      <td>
        <table>
          <tr>
            <td>
              <a href="pages/121.html"><img src="i/interlegis/banners/1.png" alt="Подбор юрисдикций" title="Подбор юрисдикций"> <span>Подбор
                  <br>юрисдикций</span> </a>
            </td>
            <td>
              <a href="pages/41.html"><img src="i/interlegis/banners/2.png" alt="Зарубежный кошелек" title="Зарубежный кошелек"> <span>Зарубежный
                  <br> кошелек</span> <span> Оффшор + счет<br> + 200 USD на счете <br> = 1697 USD</span> </a>
            </td>
            <td>
              <a href="pages/43.html"><img src="i/interlegis/banners/3.png" alt="Прием платежей" title="Прием платежей"> <span>Прием <br> платежей </span> <span> Онлайн платежи на <br> оффшорный  счет</span> </a>
            </td>
            <td>
              <a href="pages/42.html"><img src="i/interlegis/banners/4.png" alt="Специальное предложение" title="Специальное предложение"> <span>Специальное
                  <br> предложение!</span> <span> Оффшор в <b>Белизе</b> <br> <b>499</b> $ </span> </a>
            </td>
            <td>
              <a href="pages/81.html"><img src="i/interlegis/banners/gotovyj_offshor.png" alt="Готовые офшоры" title="Готовые офшоры"> <span>Готовые
                  <br>офшоры</span> </a>
            </td>
            <td>
              <a href="pages/5.html"><img src="i/interlegis/banners/otkrytie_offshora.png" alt="Открытие офшора" title="Открытие офшора"> <span>Открытие
                  <br>офшора</span> </a>
            </td>
            
          </tr>
        </table>
      </td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td></td>
      <td></td>
    </tr>
  </table>

Тоесть 6 блоков,как сделать чтобы они съезжали вниз при уменьшении экрана,а не шли в одну линию?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *