这种多重悬停效果只使用CSS实现吗?
Is this multiple hover effect possible using only CSS?
谁能告诉我,如果这里描绘的悬停效果可能与CSS?真的很想用这个为我的网站,如果我能弄清楚(到目前为止没有运气)。
我不是程序员,但在过去使用过简单的技术,如精灵,改变背景颜色和图像交换按钮。不幸的是,我不知道如何将这些更改应用于页面上的多个其他div,同时将鼠标悬停在上述按钮上:(
如示例所示,当用户将鼠标悬停在按钮上时,按钮上方会"出现"/改变一个图像,并且按钮的背景颜色以及按钮下方的div都会改变。
有人告诉我,我可以有类似以下的解决方案,所有3类,然后使用一些内联样式在按钮和图像的背景精灵(以及按钮下面的div的宽度)。也许我没有理解他们,因为当我尝试它时,悬停属性没有传递到子类…
.button, .imageAbove, .divBelow {
background-color: #CCCCCC;
background-position: left top;
background-repeat: no-repeat;
width: 160px;
height: 40px;
}
.button:hover, .button:hover .imageAbove, .button:hover .divBelow {
background-color: #FFFFFF;
background-position: 0 -40px;
}
正如你所看到的,我正在努力解决这个问题,我可能正在尝试做一些没有任何意义的事情。我可以找到很多关于如何将这些东西应用到按钮本身的教程,但令人惊讶的是,我没有找到任何告诉我如何做我想做的事情。
如果有人能纠正我,那将是最感激的!
谢谢
您不需要任何内联样式,也不需要换行div。
使用相邻的兄弟选择器:+
a:hover + .box{}
此外,它在IE 7及以下版本有问题,但你也可以使用一般的兄弟选择器:~
a:hover ~ .image {}
然而,你可以通过更具体地解决IE错误:
a:hover + .box + .image{}
我认为你需要一个外部div容器,这三个元素应该在哪里,你想改变发生,然后你需要css的层次继承当鼠标悬停在这个外部div,像这样(http://jsfiddle.net/HerrSerker/ahJHb/)
<!-- HTML -->
<div class="outer">
<div class="inner1">
</div>
<div class="inner2">
</div>
<div class="inner3">
</div>
</div>
/* CSS */
div.outer {
width: 100px;
}
div.outer div.inner1 {
height: 20px;
width: 50px;
}
div.outer div.inner2 {
height: 20px;
width: 100px;
background: yellow
}
div.outer div.inner3 {
height: 20px;
width: 80px;
}
div.outer:hover div.inner1 {
background: url(http://lorempixel.com/50/20)
}
div.outer:hover div.inner2 {
background: gray;
}
div.outer:hover div.inner3 {
background: gray;
}
虽然这在CSS中是可能的,但我认为这样做是不可取的。
下面是一个使用锚元素的小提琴:http://jsfiddle.net/MS9hV/
从技术角度来看,默认情况下只有链接和表单元素可以被聚焦,所以最好坚持使用这些元素,即使IE7+和其他浏览器可以为任何被悬停的元素设置样式。有些人不会或不会使用鼠标(还有智能手机)。一个简单的CSS规则就是:在使用:hover的地方总是使用:focus(或者在不可能的情况下考虑达到相同效果的最佳方法)
主要问题是:为什么要隐藏内容?它不重要吗?为什么用户必须猜测他必须先点击/悬停屏幕的某个区域?这是有合法用途的(在CSS2.1和3中有很多可以玩的:target和类似的),但你必须小心可用性(然后是可访问性)。在我看来,可用性将受到影响:)
我是这么想的
HTML:<div class="wrap">
<div class="image"></div>
<div class="button"></div>
<div class="caption"></div>
</div>
CSS: .wrap {
height:30px;
width:200px;
margin-top:30px; }
.image {
width:200px;
height:30px;
background-color:red;
display:none;
position:absolute;
margin-top:-30px; }
.button {
width:200px;
height:30px;
background-color:blue; }
.caption {
width:300px;
height:30px;
background-color:green;
display:none; }
.wrap:hover > * { display:block; }
这段代码使得您只需要将鼠标悬停在.button
div上。这是通过在.wrap
div上设置一些简单的margin-top和height来实现的。
不幸的是,这不能仅使用css实现,因为您必须提前查看一个元素是否包含另一个元素(我认为伪选择器:contains-element或:contains曾经工作,但不再是css的一部分)。但是,使用jQuery的'。属性,并为目标添加类。
编辑:@bookcasey已经证明我错了
- 如何's css标记"-webkit最小设备像素比”;在Javascript中实现
- 如何使用css translate实现平移
- CSS区域的实现方法
- 有人能告诉我如何实现这个Javascript吗?HTML CSS
- 我该如何实现CSS/HTML中使用密码字段的非常简单的文本框提示
- React中的内联CSS样式:如何实现媒体查询
- 如何在Javascript或CSS中实现全背景烟雾效果
- 全局CSS-如何实现多个框架
- 最简单的实现方式是网页上的动态更新表(java/css)
- 如何使用这个jQuery来实现css的不透明度
- 尝试使用CSS / Javascript实现文本滑块,遇到一些问题
- 在jQuery中实现CSS
- Mopub移动web/javascript实现调整文本大小/覆盖CSS
- 将多个JS和CSS文件实现到一个HTML文档中
- 如何在javascript或css中实现字符长度的弹性
- Metro UI CSS:如何实现class="活动的”;效应
- 这种多重悬停效果只使用CSS实现吗?
- 高图的CSS实现不工作
- 从单选按钮滑块的纯css实现创建JS事件
- 仅将 css 实现到父元素