【问题标题】:Strange inline styles coming from where?奇怪的内联样式来自哪里?
【发布时间】:2010-10-30 23:05:39
【问题描述】:

我有一个script,这导致我今天遇到quite some 问题。 :-) 该脚本显然是在目标元素上放置内联样式,但我找不到它们的定义位置。

所以脚本是一个名为 EasySlider 的滑块。它可以很好地以幻灯片方式显示特色内容。但是,该脚本在目标元素上放置了一个内联高度,这在 Chrome 中的行为很奇怪。但老实说,我不确定为什么或从哪里定义内联高度。

所以#slider 的高度在我的样式表中定义为 265px。但在 Chrome 中,该脚本将内联高度设置为 21 像素,而在 Firefox 中,它以 271 像素的内联高度呈现(比我定义的高度正好多 21 像素)。

关于这个有什么建议吗?这是有问题的页面,元素是每个 Rod 发布的滑块:http://tuscaroratackle.com/rods/

标记一般是这样的,脚本把它变成一个动画滑块并生成导航按钮:

<div id="slider-1">
    <ul>
        <li><img src="/img/rod.jpg" /></li>
        <li><img src="/img/rod.jpg" /></li>
        <li><img src="/img/rod.jpg" /></li>
    <ul>
</div>

【问题讨论】:

  • 几乎所有 jQuery 和朋友为动画和更改 HTML 以实现效果和小部件等所做的一切都将涉及在页面元素上粘贴新的“样式”属性。
  • @Pointy...对。是的,我的问题听起来确实有点愚蠢。 ;-)(已编辑)
  • 每当您在运行时通过 jquery 调整高度或宽度时,它都会将这些属性添加为内联 css 样式

标签: jquery css firefox google-chrome slider


【解决方案1】:

查看easySlider.js,大约第65行。

var h = $("li", obj).height();

几行之后:

obj.height(h); 

看起来easySlider 在初始化时检查li 元素的高度,然后设置自身的高度(包装器div)以匹配。问题是您的 LI 元素包含在 easySlider 初始化时尚未加载的图像。因此,lis 仅 一行(文本)高(在本例中为 21 像素)。

简单的解决方法是为您的图像(或这些图像所在的 li 元素)添加高度。如果为 li 元素添加高度,则必须确保它们是 position:block,以便高度生效。 -- 在这里为img 元素添加高度会容易得多。

更复杂(但更通用)的解决方案是让 jquery 监控图像的加载,并且在图像加载完成之前不要初始化 easySlider。

另一种方法是删除 easySlider 设置自身高度的行。这可能会解决您的问题,因为无论如何您总是将 easySlider 应用于块级元素,它可能不需要固定高度。

祝你好运。 [再次 ;-) ]

【讨论】:

  • 非常有意义。我将添加高度属性...事实上我会添加,但还没有完成所有图像的制作。感谢您的简单解释。
  • 我很高兴它有帮助。一旦你实施它,回来告诉我们它是否有效。 (其他人可能会发现肯定知道它很有用)。
  • K,把宽和高放进去,就OK了。
  • 关于这个杯子的另一个问题 - 如果你不介意我在这里的 cmets 中提问 - 为什么滑块不尊重我的 auto: false; 参数?任何想法? .js 文件设置为auto: true,用于主页上的滑块,我在此页面底部的函数上传递了相反的参数,因此它们不会在页面加载时开始播放。但似乎忽略了该参数。
  • 您将值作为 字符串 传递:auto: 'false'。您应该将其作为 boolean 传递:auto: false。 (看到区别?字符串有引号。不带引号的值truefalse 是布尔类型的特殊非字符串值)。干杯!
猜你喜欢
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多