使用图片和文字时奇怪的定位行为

问题描述:

jsFiddle使用图片和文字时奇怪的定位行为

我试图水平输出图像和文字。文本元素使用jQuery Cycle Lite Plugin在单词列表上循环。正如你可以在上面的jsFiddle中看到的那样,循环文本元素在页面上,但由于某些原因,元素的位置被搞乱了。一些文本元素出现在图像上,然后在最后有一堆堆叠在一起。这是什么造成的?

我知道有一些插件,如jQuery Masonry,可能能够自动定位元素,但我需要维护HTML输出它们的顺序。我真正需要的是让文字元素与图片交织在一起,以便它们全部可见,而不会混杂在一起并出现在彼此之上。

感谢您的阅读。

编辑:

HTML

<script src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.lite.1.0.min.js" type="text/javascript"></script> 

      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <span id="a"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span></span> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <span id="b"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span></span> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <span id="c"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span></span> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <a href="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" rel="temp1"><img src="http://www.andynortnik.com/gif/st-patricks-day-clipart.gif" /></a> 
      <span id="d"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span></span> 
      <span id="e"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span></span> 
      <span id="f"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span></span> 
      <span id="g"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span></span> 
      <span id="h"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span></span> 
      <span id="i"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span></span> 
      <span id="j"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span></span> 

的Javascript:

$(document).ready(function() { 
    $('#a').cycle(); 
    $('#b').cycle(); 
    $('#c').cycle(); 
    $('#d').cycle(); 
    $('#e').cycle(); 
    $('#f').cycle(); 
    $('#g').cycle(); 
    $('#h').cycle(); 
    $('#i').cycle(); 
    $('#j').cycle(); 
}); 

编辑2:

这里是代表什么,我试图做一个形象。蓝色方块是图像,红色方块代表我想让单车文字出现的区域。

alt text

+0

等等,所以你希望文本在红框之间循环,或者你想让每个框循环它自己的一组文本? – Eric 2010-11-29 08:14:07

+0

请把你的代码放在这里。很难说出什么时候你的描述有问题。 – codezgeek 2010-11-21 03:46:41

好吧,你的编辑之后,下面是不准确的版本LY你想要什么:jsfiddle.net/PcD8njsfiddle.net/AcPxx

我把TinyURL的-ifying您的图像的*,因为它们使代码笨重。另外,为了简洁,我删除了包装<a>标签。如果你喜欢,你可以添加它们。

最后,我从循环器中删除了id,因为它们在您给我们的代码的上下文中不是必需的。

+0

非常感谢,这是非常接近完美的工作!唯一的问题是(不能相信我没有把它放在编辑中)图像大小有些不同。我编辑了你的CSS,以便宽度和高度尺寸仅适用于文本元素 - http://jsfiddle.net/HSjGa/ - 但现在元素不会水平流动? – ben 2010-11-29 08:56:34

+0

@ben:图像的最大尺寸是多少? – Eric 2010-11-29 10:03:02

+0

150 * 150将是最大的。感谢您的全力帮助,我会在奖励我时奖励赏金。 – ben 2010-11-29 14:03:05

我怀疑<span>的使用,内联元件,是布局问题的一部分,因为演示使用<div>,这是一个块级元素。

进一步的调查显示,您的span[id]元素没有指定高度(因为它们是内联的),所以得到的隐含高度为0px。因此,奇怪的堆叠。

+0

感谢您的帮助。我试图给跨度添加高度 - http://jsfiddle.net/Yu2sj/ - 但它不起作用。 – ben 2010-11-29 02:51:13

+0

@ben:不,你没有!该jsfiddle没有指定跨度上的任何高度。尝试[这一个](http://jsfiddle.net/Yu2sj/1/) – Eric 2010-11-29 08:12:10

+0

哎呀抱歉,错误的链接。似乎你已经解决了上述答案:) – ben 2010-11-29 13:59:54

不太明白你试图做
+上的jsfiddle你的例子是有点这里被打破 是http://jsfiddle.net/avipinto/F95x3/2/
我把图像之间的跨度您的标记更简单(我希望)版本显示图像之间的过渡,因为您将相同的图像全部提供给它们。

如果您的所有问题都是将文本放置在幻灯片下方,然后给容器的图像高度。
如果你想不同的标题,以每个图像 - 看看插件的页面的源代码 - 他用下面的代码:

$('#slideshow3').cycle({ 
     delay: 2000, 
     speed: 500, 
     before: onBefore 
    }); 

    function onBefore() { 
     $('#title').html(this.alt); 
    } 

和HTML:

<div id="slideshow3" class="pics"> 
    <img src="http://cloud.github.com/downloads/malsup/cycle/beach1.jpg" width="200" height="200" alt="Panama City" /> 
    <img src="http://cloud.github.com/downloads/malsup/cycle/beach2.jpg" width="200" height="200" alt="Heading to the water" /> 
    <img src="http://cloud.github.com/downloads/malsup/cycle/beach3.jpg" width="200" height="200" alt="Danny" /> 
</div> 

更优雅和方便比随地吐痰跨越所有的地方

希望这有助于

+0

感谢您的回答,抱歉,如果问题很混乱。我的示例中的所有图像在实际页面上都会有所不同,我只是使用了虚拟数据作为示例。应该循环的唯一的东西是文本。我试图解决的问题是,我希望单词在图像中正确显示。我已将图像添加到原始问题中进行说明。我试图给图像添加高度,但它没有改变任何东西? – ben 2010-11-29 03:26:56