将两个元素都居中,例如“display:none;”

时间:2017-03-21 22:13:46

标签: html css

.Button_Image {
            width: 40px;

            -webkit-transition: opacity 0.5s linear;
            -moz-transition: opacity 0.5s linear;
            -ms-transition: opacity 0.5s linear;
            -o-transition: opacity 0.5s linear;
            opacity: 1;
        }

        .Button:hover .Button_Image {
            opacity: 0;
        }

        .Button_Name {
            font-size: 18px; 
            color: black;
            line-height: 40px;

            -webkit-transition: opacity 0.5s linear;
            -moz-transition: opacity 0.5s linear;
            -ms-transition: opacity 0.5s linear;
            -o-transition: opacity 0.5s linear;
            opacity: 0;
        }

        .Button:hover .Button_Name {
            opacity: 1;
        }
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<a href="#" class="Button btn btn-success btn-block">
    <img class="Button_Image" src="https://i.stack.imgur.com/hiAkR.png">
    <span class="Button_Name">Football</span>
</a>

我有一个内部有2个元素的按钮。

  1. 运动形象
  2. 这项运动的名称
  3. 当其中任何一个具有css值display: none;时,可见的一个对齐到完全居中。

    但我需要添加淡入功能,因此我无法使用display关键字。相反,我去了opacity

    这导致这两个元素并排存在,即使隐藏了一个元素。

    当隐藏另一个时,我怎样才能将这些中心化?

    此图像已在传输事件期间捕获:enter image description here

    目前的状态如下:enter image description here

    但我需要这样:enter image description here

1 个答案:

答案 0 :(得分:2)

通过绝对定位图像,您可以实现您想要的效果。这是你想要的东西吗?:

.sportbtn {
  border: green 1px solid;
  width: 150px;
  height: 40px;
  position: relative;
  line-height: 40px;
}

.sportimg {
  /* centered in button */
  width: 30px;
  transition: left 1s, margin-left 1s;
  position: absolute;
  left: 50%;
  margin-left: -15px; /* half the image width */
  margin-top: 5px;
}

.sportname {
  transition: opacity 1s;
  opacity: 0;
  margin-left: 40px;
}

.sportbtn:hover .sportname {
  opacity: 1;
}

.sportbtn:hover .sportimg {
  margin-left: 0px;
  left: 5px;
}
<div class="sportbtn">
<img class="sportimg" src="https://d30y9cdsu7xlg0.cloudfront.net/png/23344-200.png" />
<span class="sportname">Football</span>
</div>