参见英文答案 >
How to affect other elements when a div is hovered5个答案我想要这样简单,但我知道它不是:
- img {
- opacity: 0.4;
- filter: alpha(opacity=40);
- }
- img:hover {
- #thisElement {
- opacity: 0.3;
- filter: alpha(opacity=30);
- }
- opacity:1;
- filter:alpha(opacity=100);
- }
因此,当您将鼠标悬停在img上时,它会将#thisElement的不透明度更改为30%,并将图像的不透明度更改为100%。有没有办法实际这样做只使用css?
因此这是HTML
- <!DOCTYPE html>
- <html>
- <head>
- <script type="text/javascript" src="C:\Users\Shikamaru\Documents\Contwined Coding\LearningToCode\Learning jQuery\js\jquery-1.6.2.min.js"></script>
- <script type="text/javascript" src="briefcase.js"></script>
- <link rel="stylesheet" type="text/css" href="taskbar.css"/>
- <link rel="stylesheet" type="text/css" href="briefcase.css" />
- <title>Briefcase</title>
- <Meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- </head>
- <body>
- <div class="mask"></div>
- <div class="float">
- <div id="album1">Album Title</div>
- <img class="left" src="bradBeachHeart.JPG" alt="Brad at the Lake" />
- <img class="left" src="mariaNavi.jpg" alt="Making Maria Na'vi" />
- <img class="left" src="mattWaterRun.jpg" alt="Photoshopped Matt" />
- </div>
- <div class="gradientTop"></div>
- <div class="gradientBottom"></div>
- </body>
- </html>
这是CSS:
- body {
- font: normal small/3em helvetica,sans-serif;
- text-align: left;
- letter-spacing: 2px;
- font-size: 16px;
- margin: 0;
- padding: 0;
- }
- div.gradientTop {
- position: absolute;
- margin-top: 5px;
- z-index: 2;
- width: 206px;
- height: 30px;
- float: left;
- background: -webkit-linear-gradient(rgba(255,255,2),rgba(255,0))
- }
- div.gradientBottom {
- position: absolute;
- margin-bottom: 5px;
- z-index: 2;
- width: 206px;
- height: 120px;
- float: left;
- bottom: -210px;
- background: -webkit-linear-gradient(rgba(255,0),1))
- }
- div.float {
- border-right: 1px solid orange;
- position: absolute;
- z-index: 2;
- margin-left: 5px;
- margin-top: 5px;
- float: left;
- width: 200px;
- }
- div.mask {
- position: relative;
- z-index: 1;
- margin-top: 5px;
- float: left;
- width: 206px;
- height: 805px;
- background-color: white;
- }
- img.left {
- z-index: inherit;
- margin-bottom: 3px;
- float: left;
- width: 200px;
- min-height: 200px;
- /* for modern browsers */
- height: auto !important;
- /* for modern browsers */
- height: 200px;
- /* for IE5.x and IE6 */
- opacity: 0.4;
- filter: alpha(opacity=40)
- }
- img.left:hover + #album1 {
- opacity: .4;
- }
- img.left:hover {
- opacity: 1.0;
- }
- #album1 {
- z-index: 2;
- width: 200px;
- color: white;
- text-align: center;
- position: absolute;
- background: orange;
- top: 70px;
- }
解决方法
使用CSS的唯一方法是如果要影响的元素是后代或相邻的兄弟。
在后代的情况下:
- #parent_element:hover #child_element,/* or */
- #parent_element:hover > #child_element {
- opacity: 0.3;
- }
这将适用于以下元素:
- <div id="parent_element">
- <div id="child_element">Content</div>
- </div>
对于相邻兄弟姐妹:
- #first_sibling:hover + #second_sibling {
- opacity: 0.3;
- }
它适用于标记,如:
- <div id="first_sibling">Some content in the first sibling</div> <div id="second_sibling">and now in the second</div>
在这两种情况下,选择器中的后一个元素是所选择的元素。
给定你的伪代码示例,你可能想要像:
- img:hover + img {
- opacity: 0.3;
- color: red;
- }