Class: Browser::DOM::Element::Offset
- Defined in:
- opal/browser/dom/element/offset.rb
Instance Attribute Summary collapse
-
#element ⇒ Object
readonly
Returns the value of attribute element.
- #x ⇒ Integer
- #y ⇒ Integer
Instance Method Summary collapse
Instance Attribute Details
#element ⇒ Object (readonly)
Returns the value of attribute element.
6 7 8 |
# File 'opal/browser/dom/element/offset.rb', line 6 def element @element end |
#x ⇒ Integer
20 21 22 |
# File 'opal/browser/dom/element/offset.rb', line 20 def x get.x end |
#y ⇒ Integer
30 31 32 |
# File 'opal/browser/dom/element/offset.rb', line 30 def y get.y end |
Instance Method Details
#get ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'opal/browser/dom/element/offset.rb', line 39 def get doc = @element.document root = doc.root.to_n win = doc.window.to_n %x{ var box = #@native.getBoundingClientRect(), y = box.top + (#{win}.pageYOffset || #{root}.scrollTop) - (#{root}.clientTop || 0), x = box.left + (#{win}.pageXOffset || #{root}.scrollLeft) - (#{root}.clientLeft || 0); } Browser::Position.new(`x`, `y`) end |
#parent ⇒ Object
14 15 16 |
# File 'opal/browser/dom/element/offset.rb', line 14 def parent DOM(`#@native.offsetParent || #{@element.document.root.to_n}`) end |
#set(*value) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'opal/browser/dom/element/offset.rb', line 67 def set(*value) position = @element.style![:position] if position == :static @element.style[:position] = :relative end offset = get top = @element.style![:top].to_u left = @element.style![:left].to_u if Browser::Position === value.first x, y = value.first.x, value.first.y elsif Hash === value.first x, y = value.first[:x], value.first[:y] else x, y = value end @element.style[:left] = (x.px - offset.x) + left if x @element.style[:top] = (y.px - offset.y) + top if y end |