【问题标题】:Image hover working properly only on Google Chrome图像悬停仅在 Google Chrome 上正常工作
【发布时间】:2013-02-03 19:03:03
【问题描述】:

我制作了一个垂直图像滑块,每个图像都是一个链接,当图像悬停时,一个不透明度为 0.4 的黑色“玻璃窗格”覆盖图像并显示一些文本。其实背景是一个透明的png

问题是它只能在谷歌浏览器中正确显示。

  • Opera:我只看到玻璃窗格,但看不到上面的文字
  • Firefox:我看不到玻璃窗格,但我只看到前 2 个项目的玻璃窗格上的文本,第三个文本没有显示,并且图像之间的间距与 Google Chrome 和 Opera 不同显示
  • IE:图片间距与 Google Chrome 和 Opera 显示的不同,悬停不执行任何操作,不显示玻璃窗格,甚至不显示文本。

http://alessandroderoma.it/try/slider/

在谷歌浏览器中显示的内容需要在所有其他浏览器中显示。

但是,这是我正在使用的 html 代码:

<div id="vertical_slideshowwrapper">
    <div class="vertical_slideshow" style="visibility: visible; overflow: hidden; position: relative; z-index: 2; left: 0px; height: 489px;">
        <ul style="margin: 0px; padding: 0px; position: relative; list-style-type: none; z-index: 1; height: 4564px; top: -1956px;">
            <li style="overflow: hidden; float: none; width: 165px; height: 489px;">
                <a href="#" target="_self">
                    <img src="images/1.png" border="0">
                    <div class="box"><p>Text 1</p></div>
                </a>
                <a href="#" target="_self">
                    <img src="images/2.png" border="0">
                    <div class="box"><p>Text 2</p></div>
                </a>
                <a href="#" target="_self">
                    <img src="images/3.png" border="0">
                    <div class="box"><p>Text 3</p></div>
                </a>
            </li>
            <li style="overflow: hidden; float: none; width: 165px; height: 489px;">
                <a href="#" target="_self">
                    <img src="images/4.png" border="0">
                    <div class="box"><p>Text 4</p></div>
                </a>
                <a href="#" target="_self">
                    <img src="images/5.png" border="0">
                    <div class="box"><p>Text 5</p></div>
                </a>
                <a href="#" target="_self">
                    <img src="images/6.png" border="0">
                    <div class="box"><p>Text 6</p></div>
                </a>
            </li>
            <li style="overflow: hidden; float: none; width: 165px; height: 489px;">
                <a href="#" target="_self">
                    <img src="images/7.png" border="0">
                    <div class="box"><p>Text 7</p></div>
                </a>
                <a href="#" target="_self">
                    <img src="images/8.png" border="0">
                    <div class="box"><p>Text 8</p></div>
                </a>
                <a href="#" target="_self">
                    <img src="images/9.png" border="0">
                    <div class="box"><p>Text 9</p></div>
                </a>
            </li>
        </ul>
    </div>
</div>

和 CSS:

    body{
        background-color:#000;
    }
    DIV#vertical_slideshowfooter { 
        display:block; 
        padding-top: 10px; 
        font-family: Tahoma,Verdana,sans-serif; 
        font-size: 8px; 
        font-weight: bold; 
    } 
    div#vertical_slideshowwrapper { 
        width: 100%; 
        height: 100%; 
        overflow: hidden; 
        margin: 0px auto;  
    } 
    .vertical_slideshow ul li { 
        list-style:none; 
        margin-bottom:1px; 
        display:block; 
    } 
    .vertical_slideshow li img { 
        margin-right: 5px; 
        margin-top:1px; 
        margin-bottom:1px; 
        width: 160px; 
        height: 162px; 
    } 

    body{
        padding-top:0px;
        padding-left:0px;
        margin-top:0px;
        margin-left:0px;
    }

    .box {
        position: relative;
        left: 0;
        margin-top: -163px;
        width: 160px;
        height: 163px;
        background-image: url(images/bg.png);
        background-position:0 0;
        text-indent:-99999px;
    }

    .box:hover {
        background-position:-160px 0;
        text-indent:0;
    }

    .box p{
        position:absolute;
        font-family: Arial, Helvetica, Sans-Serif;
        bottom: -8px;
        right: 6px;
        font-variant: normal;
        font-weight: bold;
        font-size: 11px;
        text-align: left;
        text-decoration: none;
        text-transform: uppercase;
    }

    .box a, a:visited, a:hover{
        color:white;
        text-decoration:none;
    }

我做错了什么?任何帮助将不胜感激

CSS 验证器结果:

http://jigsaw.w3.org/css-validator/validator?uri=alessandroderoma.it%2Ftry%2Fslider&profile=css3&usermedium=all&warning=1&vextwarning=&lang=it

【问题讨论】:

  • 可以稍微整理一下。您有多个 id="box" 的元素,这是无效的。此外,您在 CSS 中有几个地方 &lt;length&gt; 类型属性没有单位,例如#box { 边距顶部:-163; },这也是不正确的。
  • 从 w3c 验证器检查我的链接,我在每个长度上添加了不同于 0 的度量单位,从 id="box" 更改为 class="box" 也没有效果。

标签: html css hover


【解决方案1】:

放置在您的 html 页面的行首下方。

<!DOCTYPE html>  

类似post

编辑
我认为歌剧中的text-indent 存在问题。
我可以建议你一个答案。
最初将文本颜色设置为 black 并在悬停时将其设置为 white

.box {  
    position: relative;
    left: 0;
    margin-top: -163px;
    width: 160px;
    height: 163px;
    background-image: url(images/bg.png);
    background-position:0 0;
    color:black;        /*added*/
    }   


.box:hover {
    background-position:-160px 0;
    text-indent:0;
    color:white;    /*added*/
}

【讨论】:

  • +1 它使鼠标悬停在 IE 上工作,但我仍然没有看到 Opera 的文本
  • 抱歉,我没有要测试的歌剧。但我认为调整bottom: -8px; 值可能会对您有所帮助。
  • 这里是之前列出的所有浏览器的截图:alessandroderoma.it/try/slider/rect3922.png 这是在添加 doctype 规则之前拍摄的,opera 是唯一一个显示我的文本有问题的浏览器
  • 您是否尝试更改 .box p{ 中的 bottom: -8px; 值。 (使其 +18)
  • 现在只有文字不可见?在没有浏览器的情况下如何为您提供帮助。我认为您的文字在那里(图片下方),并且是下一张图片的封面。只是为了确保将您的 right: 6x; 更改为 -50。所以你可以看到它。
【解决方案2】:

只是一个建议: 其他浏览器不支持某些 css 标签也许你可能想检查一下 对于 IE http://www.quirksmode.org/css/condcom.html 你看这个链接http://www.quirksmode.org/css/contents.html

【讨论】:

  • 我知道,但我认为我使用的是相当常见的 css,IE 是一个特例,但我认为它应该适用于 opera 和 firefox,但实际上它不起作用,我不'不明白为什么
  • alessandroderoma.it/try/slider中没有这样的
【解决方案3】:

正如新开发者所说,我添加了

<!DOCTYPE html>  

在我的 HTML 文档的顶部,它使我的 html 输出在所有浏览器上都非常相似,并且还使鼠标悬停在 css 上以与 IE 一起使用,但没有解决我在 Opera 上的问题,文本结束图像仍未显示。 我搜索了很多,我发现 Opera 仅对 block 元素启用文本缩进,但甚至添加

display: inline-block

到我的.box 元素没有解决问题,所以我必须找到解决方法。

我使用padding 而不是text-indent 解决了这个问题:

.box {
    padding-left: 99999px;
    overflow: hidden;
}

.box:hover {
    padding-left: 0px;
}

它有效,它不是一个解决方案,但对我来说这是一个很好的解决方法。

感谢所有帮助过的人!

【讨论】:

    【解决方案4】:

    您可以使用背景颜色代替图像。因为您可以像图像一样设置背景颜色的透明度。将滑块的标题放入 div 类中,并为所需的输出写下以下代码。

    .your_css_class
    {
    背景:#FDF7A6; /* 设置背景颜色 * /
    opacity: 0.5;/* 设置不透明度 */
    }

    还记得设置 div 类的宽度、高度和位置。希望这对你有用。

    【讨论】:

    • 有了 png 我确定我有我的背景不透明度,而你的代码我没有,某些浏览器可能不支持这个规则。
    猜你喜欢
    • 2013-11-17
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多