Перейти к содержимому


И снова простейший вопрос. Похоже, у меня других не бывает :)


  • Вы не можете ответить в тему
Сообщений в теме: 7

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 October 2013 - 09:07 PM

Бздынькнуло тут мне написать очередное дополнение не используя JQuery. Ну вот просто из принципа. ява-функции там без изысков, примитивные, почему бы нет. И при на удивление вполне реализуемой задаче я уперся в то, что не могу определить ширину/высоту HTML-элемента. На JQ без проблем - width() и height(), а на чистом JS что-то не могу найти. Функция document.getElementById('id').Width/width/offsetWidth дают либо ноль, либо вообще не пойми что, но все без ошибок :).

Чую, легко оно должно делаться. Но как? Копание в "океане информации глубиной в палец" результа на удивление не дало. Что уверило в том, что проблема яйца выеденного не стоит и всем известна, но только я не могу найти решение :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 qwerty6

    Пользователь

  • Download User
  • PipPip
  • 15 сообщений
Репутация: 4
Начинающий

Отправлено 25 October 2013 - 10:06 AM

когда получаете Width/width/offsetWidth элемента - не стоит ли в это время у элемента display:none? попробуйте при получении предварительно выставить display:block
  • 2
буду рад вашему нажатию на зеленую кнопочку справа ;)

#3 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 25 October 2013 - 10:17 AM

document.getElementById('id').offsetWidth;
Должно работать нормально, только что специально проверил на всякий случай.

либо вообще не пойми что,

А что именно "не пойми что" можешь продемонстрировать?
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 October 2013 - 11:38 AM

когда получаете Width/width/offsetWidth элемента - не стоит ли в это время у элемента display:none

Да, стоит. Были у меня подозрения, что невидимый блок не имеет ширины, но внятно в описаниях этого не попадалось.

А что именно "не пойми что" можешь продемонстрировать?

Сейчас уже нет, т.к. те варианты проб и ошибок остались в прошлом, но примерно так:
document.getElementById("regwin").style.left = parseInt((document.documentElement.clientWidth-document.getElementById("regwin").width)/2)+'px';
Вот когда width было ноль (правильно, как выяснилось), то style.left получался равен половине экрана.
Но в каких-то вариантах style.left получался вобще где-то за пределами экрана, т.к. файрбуг ошибок не выдавал, а элемент на экране не появлялся.

А как-то можно сделать так, чтобы элемент был невидим, но при этом имел не нулевые свойства ширины и высоты? Кроме как убрать его за пределы экрана? Задача расположить элемент ровно по центру, но сначала пересчитать, где этот центр находится в зависимости от ширины элемента и ширины экрана.

В сообщении "Идет добавление товара в корзину" сделано банально - ширина и высота ДВАЖДЫ задается. Один раз в свойствах элемента, второй раз в формуле вычисления середины. Это не красиво :). Хочу задавать только один раз - в свойствах элемента.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 25 October 2013 - 12:15 PM

А как-то можно сделать так, чтобы элемент был невидим, но при этом имел не нулевые свойства ширины и высоты? Кроме как убрать его за пределы экрана? Задача расположить элемент ровно по центру, но сначала пересчитать, где этот центр находится в зависимости от ширины элемента и ширины экрана.

height:0px;width:0px;overflow:hidden;

  • 0
Изображение Изображение Изображение

#6 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 25 October 2013 - 12:18 PM

эммм но так если
height:0px;width:0px;
то это уже нулевые

свойства ширины и высоты


  • 0

#7 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 25 October 2013 - 12:36 PM

то это уже нулевые

но все равно это уже значение (цифра) от которого можно отталкиваться, так же никто не мешает поставить 1px
  • 0
Изображение Изображение Изображение

#8 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 October 2013 - 02:58 PM

то это уже нулевые

Ну, тоже вариант. Только применить к ВНЕШНЕМУ элементу. А внутренний уже делать видимым с нормальной шириной-высотой, т.к. все равно у внешнего overflow:hidden. Но как-то это, на мой вгляд, избыточно. Не верится мне, что нельзя никак сделать элемент невидимым (и не занимающим места!), но с сохранением всех параметров типа высоты и ширины. Т.е. в DOM он хранится нормально построенным, но не показывается на экране.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)