javascript - CSS选择 previous sibling

标签 javascript jquery html css

<分区>

我有一个进度条,它有两个子项(部分)。每当这些 child 中的每一个被悬停时,进度的总高度及其 child 都会改变。我已经设法使用 next sibling selector 解决了第一个 child 的问题,但我找不到第二个 child (黄色部分)的解决方案。到目前为止,我已经使用 jQuery 解决了这个问题,但我想用纯 CSS 来解决这个问题。

fiddle :https://jsfiddle.net/zfh263r6/5/

$('#start').on({
  mouseenter: function () {
	  //$(this).css('height', '4px');
      //$( 'progress' ).css('height', '4px');
  },
  mouseleave: function () {
	  //$(this).css('height', '');
     // $( 'progress' ).css('height', '');
  }
});
#progress_wrap {
    position: relative;
    height: 4px; /*max height of progress*/
    background: #f3f3f3;
}

progress {
    appearance: none;
    -moz-appearance: none;
    -webkit-appearance: none;
    width: 100%;
    border:none;
    height: 2px;
    transition:all .25s ease-in;
    cursor: pointer;
    background-color: #fff;
    position: absolute;
    top: 0;
    left: 0;
    display: block;
}

progress:hover, progress:hover + #start {height: 4px}

progress[value]  {
    /* Reset the default appearance */
    -webkit-appearance: none;
     -moz-appearance: none;
    	  appearance: none;

    /* Get rid of default border in Firefox. */
    border: none;

    /* For IE10 */
    color: #f8008c;
}

progress[value]::-webkit-progress-bar {
    background-color: #fff;
    border:none;
}

progress[value]::-webkit-progress-value {background:#f8008c}

progress::-ms-progress-value {background:#f8008c}

progress::-moz-progress-bar {background:#f8008c}

progress::-ms-fill {border: none}

#start {
    height: 2px;
    transition: all .25s ease-in;
    cursor: pointer;
    background-color: #ffe232;
    position: absolute;
    top: 0;
    left: 0px;
    width: 30px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="progress_wrap">
  <progress min="0" max="1" value="0.66" id="progress"></progress> 
  <div id="start" style="display: inline-block; left: 50px;"></div>
</div>

最佳答案

没有 CSS 没有 previous sibling 选择器,但你可以使用 ~ 选择器 -

假设您有一个链接列表,将鼠标悬停在一个链接上时,之前的所有链接都应变为红色。你可以这样做:

/* default link color is blue */
.parent a {
  color: blue;
}

/* prev siblings should be red */
.parent:hover a {
  color: red;
}
.parent a:hover,
.parent a:hover ~ a {
  color: blue;
}
<div class="parent">
  <a href="#">link</a>
  <a href="#">link</a>
  <a href="#">link</a>
  <a href="#">link</a>
  <a href="#">link</a>
</div>

关于javascript - CSS选择 previous sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34500790/

相关文章:

css - HTML 布局 : adding sidebar column to existing site

javascript - 如何通过javascript设置盒子阴影?

javascript - 为什么跟踪脚本在加载外部 JavaScript 时会检查协议(protocol)?

javascript - 每 N 个项目分解一个 {{# each}} block

jquery - 删除第一列后保留表格高度 'tr'

jquery - Internet Explorer 8 HTML5 元素的样式不正确

jquery - 在循环中绑定(bind)单击事件处理程序会导致 jQuery 出现问题

jQueryUI 单选/复选按钮未以编程方式更改

javascript - 替换文本字符串javascript

javascript - 使用 jQuery 选择中的 setCustomValidity 和 reportValidity 不起作用