当前位置:嗨网首页>书籍在线阅读

30-解决方案

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

6.8.2 解决方案

获取现有元素的宽度、高度和偏移量,用这些值相应地定位新元素。

假定有如下HTML:

<style>
#foo {
   width: 300px;
   height: 100px;
   border: 1px solid red;
   padding: 5px;
}
#tooltip {
   border: 1px solid black;
   padding: 5px;
   background-color: #fff;
</style>
<div id="foo">An existing element</div>

下面的代码将为现有的元素添加一个兄弟元素,但是定位在元素“内部”,顶部距离现有元素顶部10像素,左侧距离现有元素左侧10像素,宽度比现有元素短20像素:

jQuery(document).ready(function() {
   var $foo = jQuery('#foo'),
     fooPosition = $foo.position(),
     $tooltip = $('<div id="tooltip">A new element</div>').insertAfter($foo);
   $tooltip.css({
     position : 'absolute',
     top : fooPosition.top + 10,
     left : fooPosition.left + 10,
     width : $foo.width() - 20
   });
});

如果你希望在页面的其他地方添加一个新元素——也就是说,如果你不希望它是现有元素的兄弟元素——可以调整代码查看原始元素的偏移量而非位置:

jQuery(document).ready(function() {
   var $foo = jQuery('#foo'),
     fooOffset = $foo.offset(),
     $tooltip = $('<div id="tooltip">A new element</div>').appendTo('body');
   $tooltip.css({
     position : 'absolute',
     top : fooOffset.top + 10,
     left : fooOffset.left + ($foo.width() / 2),
     width : $foo.width() - 20
   });
});