Позиционирование элемента не зависимо от разметки
Нужно для букмарклета.
При клике на букмарклет в body создается элемент в шапке и вся разметка (независимо от указанных стилей) сдвигается вниз на высоту этого элемента.. Сам я пришел к выводу - невозможно. Но может я ошибаюсь? |
<button style="position: absolute; left: 0px; top: 0px">click</button>
<script>
document.body.children[0].onclick = function () {
document.body.style.cssText = 'position: absolute; left: 20px; top: 20px;';
document.body.insertAdjacentHTML('afterBegin', '<button style="position: fixed; left: 0px; top: 0px">button</button>');
}
</script>
|
bes,
да, а если в body есть элемент с position fixed?
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload = function () {
document.getElementById("dg").onclick = function () {
document.body.style.cssText = "position: absolute; top: 20px;";
document.body.insertAdjacentHTML('afterBegin', '<div style="position: fixed; left: 0; right: 0; top: 0; height: 20px; background-color: #000; width: 98%; margin: auto; z-index: 9999999;"></div>');
};
};
</script>
</head>
<body>
<div style="position: fixed; width: 35px; height: 35px; top: 0; right: 0; left: 0; margin: auto; background-color: #f00;"></div>
<a id="dg" href="#">блок для букмарклета</a>
</body>
</html>
|
тут наверное остаётся только делать выборку всех этих элементов и менять их позицию
|
bes,
это может создать слишком большую нагрузку (ведь надо искать по всему DOM), но даже не в этом проблема. Когда мы изменяет стили у body, его дочерние элементы могут тоже откреагировать и вообще поломать всю верстку
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload = function () {
document.getElementById("dg").onclick = function () {
document.body.style.cssText = "position: absolute; top: 20px; width:98%";
document.body.insertAdjacentHTML('afterBegin', '<div style="position: fixed; left: 0; right: 0; top: 0; height: 20px; background-color: #000; width: 98%; margin: auto; z-index: 9999999;"></div>');
};
};
</script>
</head>
<body>
<div style="position: absolute; width: 35px; height: 35px; top: 0; right: 0; left: 0; margin: auto; background-color: #f00;"></div>
<a id="dg" href="#">блок для букмарклета</a>
</body>
</html>
|
body схлопывается на содержимом, надо добавить ему width: 98%
|
bes,
ага, не учел |
| Часовой пояс GMT +3, время: 19:45. |