悬停时CSS过渡类的宽度

时间:2019-09-12 07:04:14

标签: html css css-transitions

我正在尝试使用纯CSS来更改悬停时类的宽度。

到目前为止,过渡工作是在更改类方面进行的,但是类.b和.c不会影响到它们之前的类的宽度。将鼠标悬停在.b

上时,我需要上一个类(即.a类)进行收缩

我在下面发布了代码,希望有人提供理想情况下仅包含CSS的解决方案。

/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
  display: block;
}
body {
  line-height: 1;
}
ol, ul {
  list-style: none;
}
blockquote, q {
  quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
  content: '';
  content: none;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}




.column {
  float: left;
  width: 33.33%;
  height:100%;
}

.a{
    background-color: #ff0000;
    transition: 0.3s;
}
.a:hover{
    background-color: #c41333;
    width:40%;
}

.a:hover ~ .b, .c{
    width:30%;
}

.b{
    background-color: #eeeeee;
    transition: 0.3s;
}

.b:hover{
    background-color: #c41333;
    width:40%;
}

.b:hover ~ .a, .c{
    width:30%;
}

.c{
    background-color: #cccccc;
    transition: 0.3s;
}

.c:hover{
    background-color: #c41333;
    width:40%;
}

.c:hover ~ .a, .b{
    width:30%;
}

/* Clear floats after the columns */
.row:after {
  content: "";
  display: table;
  clear: both;
}
<!--<head>
    <link rel="stylesheet" href="style.css" />
</head>-->

<div class="row">
    <div class="column a">
        <p>tester</p>
    </div>
    <div class="column b">
        <p>tester</p>
    </div>
    <div class="column c">
        <p>tester</p>
    </div>
</div>

    

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

提琴:https://jsfiddle.net/kawal/ygn8fk17/7/

.box {
  width: 100px;
  height: 100px;
  border: 1px solid red;
  transition: width 0.2s ease-out;

}

.box:hover {
  width: 200px
}

答案 1 :(得分:0)

您可以使用flexbox来执行此操作。您只需更改当前悬停的元素的宽度,它的兄弟姐妹就会适应它。

VCS
commit...

答案 2 :(得分:0)

相反呢? https://jsfiddle.net/jtnxL7cz/

.column {
  float: left;
  width: 33.33%;
  height:100%;
  transition: 0.3s;
}

.row:hover .column {
  width: 30%;
}

.row:hover .column:hover {
  width: 40%;
}

.a{
  background-color: #ff0000;
}

.b{
  background-color: #eeeeee;
}

.b:hover{
  background-color: #c41333;
}

.c{
  background-color: #cccccc;
}

.c:hover{
  background-color: #c41333;
}