HTML,CSS 悬停在图像上

Posted

技术标签:

【中文标题】HTML,CSS 悬停在图像上【英文标题】:HTML, CSS hover on image 【发布时间】:2014-09-09 20:58:31 【问题描述】:

我正在学习html和css,但我遇到了一些麻烦。 现在,我正在制作一个包含不同 w 大小的小图像的网站。 关键是,当您将鼠标悬停在它们上时,它们会显示可点击的元素,而我无法在它们上找到正确的位置。

我有什么:

我想要什么:

部分代码:

            <div class="photo">
                <img src="http://placekitten.com/400/300" />
                <div class="zoom">
                </div>
                <div class="all">
                </div>
                <div class="link">
                </div>
                <div class="info">
                </div>
                <div class="like">
                </div>
            </div>

CSS:

.photo img 
    float:left;
    width:auto;
    height:auto;


.photo:hover 
    display: block;
    opacity:0.6;

.photo:hover .zoom 
    position: absolute;
    background-image:url(http://www.kolazhgostar.com/images/small-img05.png);
    background-repeat:no-repeat;
    width:46px;
    height:50px;
    background-position:center;

http://jsfiddle.net/zzu87/

【问题讨论】:

【参考方案1】:

如果使用position: absolute,则需要为每张图片添加一些定位。试试这样的:

.photo:hover .zoom 
  position: absolute;
  top: 50%;
  left: 200px;
  background-image: url(http://www.kolazhgostar.com/images/small-img05.png);
  background-repeat: no-repeat;
  width: 46px;
  height: 50px;
  background-position: center;

【讨论】:

好的,但是如果我想在它旁边放另一张图片并用相同的鼠标悬停怎么办? jsfiddle.net/eW7Lc我必须为每张图片创建自己的类吗? 是的,您必须单独定位每个位置。【参考方案2】:

This should get you where you want to go. (JS fiddle)

css

.photo 
    display:block;
    position:absolute;
    background-image: url('//placekitten.com/400/300');
    background-repeat: no-repeat;
    width:400px;
    height:300px;


.photo>.container 
    display:none;

.photo>.container>div 
    display:inline;


.photo:hover>.container 
    display:block;
    margin-left: 85px;
    margin-top: 200px;

html

<div class="photo">
    <div class="container">
        <div class="zoom">
            <img src="//www.kolazhgostar.com/images/small-img05.png"/>
        </div>
        <div class="all">
            <img src="//www.kolazhgostar.com/images/small-img05.png"/>
        </div>
        <div class="link">
            <img src="//www.kolazhgostar.com/images/small-img05.png"/>
        </div>
        <div class="info">
                        <img src="//www.kolazhgostar.com/images/small-img05.png"/>
        </div>
        <div class="like">
            <img src="//www.kolazhgostar.com/images/small-img05.png"/>
        </div>
    </div>
</div>

【讨论】:

【参考方案3】:

首先将父 div 向左浮动并将位置设置为相对。这样您就可以更好地控制任何子元素的定位。

.photo 
   float:left;
   position:relative;

之后,padding、margin、bottom、left、right 和 top 可用于实现父 div 内所需的特定位置。这里我使用了left和top...

.photo:hover .zoom 
   position: absolute;
   background-image:url(http://www.kolazhgostar.com/images/small-img05.png);
   background-repeat:no-repeat;
   width:46px;
   height:50px;
   background-position:center;

   left:50%;
   top:50%;

这里是FIDDLE。

【讨论】:

【参考方案4】:

有趣的问题。我通过为照片及其内容制作更多 div 容器解决了这个问题。此外,我假设您的照片图像是 400x300。随意修改代码! :)

我认为我的解决方案的有趣之处在于我只使用了position: relative;,它会提升图像上方的悬停菜单,因此它可以很好地协同工作:

.photo-menu 
    position: relative;
    left: 0px;
    top: -300px;

因此,大部分水平位置是使用margin: 0 auto; 完成的,而不是使用绝对或相对位置进行过多播放。一般来说,这些都是可以避免的。视情况而定。

还可以从以下位置查看结果:js fiddle example 或从 this jsfiddle example(如果稍后删除猫图像)。

下面还链接相关代码:

HTML:

<div class="photo-container">

    <div class="photo">
        <img src="http://placekitten.com/400/300" />
        <div class="photo-menu">
              <div class="upper-menu"></div>
              <div class="lower-menu">
                   <div class="all"></div>
                   <div class="link"></div>
                   <div class="info"></div>
                   <div class="like"></div>
              </div>
        </div>
    </div>

    <div class="photo">
        <img src="http://placekitten.com/400/300" />
        <div class="photo-menu">
              <div class="upper-menu"></div>
              <div class="lower-menu">
                   <div class="all"></div>
                   <div class="link"></div>
                   <div class="info"></div>
                   <div class="like"></div>
              </div>
        </div>
    </div>

</div>

CSS:

body 
    margin: 0px;
    padding: 0px;


.photo-container 
    width: 800px;


.photo 
    float: left;
    width: 400px;


.photo, .photo-menu 
    width: 400px;
    height: 300px;


.photo:hover 
    display: block;
    opacity: 0.6;


.photo-menu 
    position: relative;
    left: 0px;
    top: -300px;


.photo .photo-menu 
    display: none;


.photo:hover .photo-menu 
    display: block;


.photo-menu .upper-menu    
    background-image: url("http://www.kolazhgostar.com/images/small-img05.png");
    background-repeat: no-repeat;
    background-position: center;
    width: inherit;
    height: 200px;
    margin: 0 auto;


.photo-menu .lower-menu    
    width: 280px;
    margin: 0 auto;
    height: 100px;


.photo-menu .lower-menu div 
    min-width: 40px;
    width: 24.9999%;
    height: 40px;
    background-repeat: no-repeat;
    background-position: center;
    float: left;


.photo-menu .lower-menu .all   
    background-image: url("http://placehold.it/40/ff0000");


.photo-menu .lower-menu .link  
    background-image: url("http://placehold.it/40/00ff00");


.photo-menu .lower-menu .info  
    background-image: url("http://placehold.it/40/0000ff");


.photo-menu .lower-menu .like  
    background-image: url("http://placehold.it/40/c0ff33");

注意:我使用 placehold.it 为图标放置虚拟图像。

干杯。

【讨论】:

以上是关于HTML,CSS 悬停在图像上的主要内容,如果未能解决你的问题,请参考以下文章

使图像出现在链接悬停css上

如何使图像在悬停css上旋转

使用 CSS 在悬停图像上创建缩放效果?

如何使用css在悬停时在图像上显示图像

HTML:删除图像的:悬停?

仅在文本链接悬停 CSS 上显示图像