CSS 悬停时的过渡 class 宽度

CSS transition class width on hover

我正在尝试使用纯 css 来改变悬停时 classes 的宽度。

到目前为止,过渡正在改变 classes,但是 class.b 和 .c 不影响之前的 classes 的宽度他们。当悬停在 class.b

上时,我需要之前的 class(即 class.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>

    

感谢您的帮助。

Fiddle: 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
}

您可以使用 flexbox 来做到这一点。您只需更改当前悬停的元素的宽度,它的兄弟姐妹就会适应它。

.row {
  display: flex;
}

.col {
  background: red;
  width: 33.33%;
  height: 50px;
  transition: width 0.3s ease-in-out;
}
.col:nth-child(even) {
  background: green;
}

.col:hover {
  width: 50%;
}
<div class="row">
  <div class="col"></div>
  <div class="col"></div>
  <div class="col"></div>
</div>

换成这个怎么样? 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;
}