<div class="gmail_quote">On Wed, Apr 30, 2008 at 10:58 AM, David Bolter <<a href="mailto:david.bolter@utoronto.ca">david.bolter@utoronto.ca</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Specifically I would ask that:<br>
<br>
1. scrollIntoView not do anything in the case that the element is already fully visible (possibly in the middle of the viewport), or<br>
2. ensureElementIsVisible to be added as described by Daniel Glazman (<a href="http://lists.w3.org/Archives/Public/public-html/2007Nov/0188.html" target="_blank">http://lists.w3.org/Archives/Public/public-html/2007Nov/0188.html</a>)</blockquote>
<div><br></div><div>I agree that this is a use case which scrollIntoView does not seem to solve well.  I am not sure Daniel's proposal for ensureElementIsVisible is perfect either, though it is clearly better.</div><div>
<br></div><div>I make no formal proposal, but the behavior I would typically want for some kind of a call (perhaps in addition to those above, I don't know) would be:</div><div><ul><li>If the element in question cannot be scrolled so as to make more of it appear in the viewport, do nothing.  (For when the element is completely visible, or is larger than the viewport and already taking up the whole viewport).<br>
</li><li>Otherwise, if the element is not larger than the viewport, scroll such that the element is centered* in the viewport (within the scrolling limits -- if the element is at the bottom of the page, it clearly can't be scrolled up to the middle of the viewport).<br>
</li><li>Otherwise, scroll the element such that the top of the element is aligned with the top of the viewport.<br></li></ul></div><div>*Perhaps centered is the wrong choice.  Another suggestion would be to scroll to a point 1/3 of the way from the top or bottom of the viewport, nearer to whichever edge the element scrolled in from.  Also, perhaps the UA's behavior should not be specified in this kind of detail?</div>
<div><br></div><div>PK</div><div><br></div></div>