наследный display
свойство display, как известно, наследуется от родительского элемента. Но если display у элемента не указан, то style.display вернёт значение по умолчанию, хотя у родительского элемента display может отличатся.
Как узнать реальный display Например <div style="display:none"> <span id="spanid">блабла<span> </div> <script> alert(document.getElementById('spanid').style.display); </script> В результате получим не none, что было бы логично, а ''. |
Как раз таки логично именно ''.
Тут: document.getElementById('spanid').style только то, что указанно <span id="spanid" style="тут"><span>.(ну и то, что указанно собсно через style) |
и? Ты просто скопировал мой пример. Результат-то от этого не поменялся.
|
вопрос как раз в том, чтоб определить результирующий display, тот который браузер отобразит.
|
Если не ошибаюсь то свойство display не наследует значение у родителя.
Можно узнать вот так: <html> <head> </head> <body> <div style="display:none"> <span id="spanid">блабла<span> </div> <script> function GetCssStyle(e){ if (e.currentStyle) return e.currentStyle; else if (window.getComputedStyle) return window.getComputedStyle(e,null); } alert(GetCssStyle(document.getElementById('spanid') ).display); </script> </body> </html> Но так вернет default значение - "inline", так как я уже говорил, что если я не ошибаюсь, то display не наследует значение у родителя. |
в том-то и дело что наследует
если открыть пример в браузере, то "блабла" не видно. Аналайзер хрома и фф показывают, что display наследуется от родителя. |
а вам не подойдет свойство visibility ?
<html> <head> </head> <body> <div style="visibility: hidden"> <span id="spanid">блабла<span> </div> <script> function GetCssStyle(e){ if (e.currentStyle) return e.currentStyle; else if (window.getComputedStyle) return window.getComputedStyle(e,null); } alert(GetCssStyle(document.getElementById('spanid') ).visibility); </script> </body> </html> Только нужно учесть что visibility будет занимать место на страничке, поэтому и спрашиваю что если не подойдет :) |
Цитата:
display: block; А он таки у всех свой... |
Цитата:
Цитата:
http://www.tigir.com/javascript.htm |
он наследуется, если не указан явно. в данном случае у span он явно не указан.
visibility не подойдёт, т.к. пишу скрипт для GM. Приходится работать с уже свёрстанной страничкой. |
Цитата:
спан как был строчным тат и останется. <div style='display: block;'> <span>one<span> <span>two<span> </div> Спаны не стали блочными... ;) Т.ч. всё это "наследование" в твоих мечтах... :) |
ок, но как тогда определить виден ли элемент на странице или нет?
идти вверх по родителям и проверять у всех display? |
Цитата:
|
думал есть способ проще
|
Вот чего еще нашел :)
Цитата:
|
Цитата:
if (el.offsetWidth) { alert('Элемент виден.'); } |
ну у всех элементов у которых display=none clientHeight=0
просто проверяй если clientHeight==0 то соответственно у элемента display=none поправьте меня если я не прав или если у элемента может быть по какой то другой причине clientHeight равен 0 хотя наверное если задать через стиль высота равную 0 ))) но думаю не везде это сработает |
Может и используется. Например чтоб делать такие чтуки:
<div style="border-top:25px solid white; border-bottom:15px solid white; border-right:15px solid black; width:0; height:0; font-size:0; float:left"></div> <div style="border-top:15px solid white; border-bottom:25px solid white; border-left:15px solid black; width:0; height:0; font-size:0; float:left"></div> |
Часовой пояс GMT +3, время: 06:24. |