如何正确集中按钮内的跨度?

时间:2019-05-14 12:48:12

标签: html css html5 css3

我正在尝试通过在按钮内部创建一个跨度并在它们之间设置一些填充差异来为按钮提供渐变边框的外观。

它在Codepen上工作得很好,但是当我将其传递到我的网站时,发生了一些事情,这些标签突然停止对齐。

但是,这是在按钮内部集中设置跨度以模拟边框的最佳方法吗?

body{
  background:white;
  text-align:center;
  box-sizing:border-box;
  font-family:"Lato",Sans-serif;
  padding-top:5%;
/*   position:relative; */
}

.btn:link,
.btn:visited{
  text-decoration: none;
  text-transform:uppercase;
  position:relative;
  top:0;
  left:0;
  padding:22px 2px;
  border-radius:100px;
  display:inline-block;
  transition: all .5s;
}

.btn-white{
  background-image:linear-gradient(56deg, #08AEEA 0%, #2AF598 100%);
  color:#000;
  font-family: Lato;
  font-size:1.3rem;
}

.btn span {
	align-items: center;
	background-color: #fff;
	border-radius:100px;
	display: absolute;
	justify-content: center;
  padding:20px 40px;
	height: 100%;
	transition: background .5s ease;
	width: 100%;
}

.btn:hover span {
	background: transparent;
}

.btn:hover{
    background-image: linear-gradient(56deg, #08AEEA 0%, #2AF598 100%);
    border: none;
    box-shadow:0px 10px 10px rgba(0,0,0,0.2);
    color: #fff;
    transform : translateY(-3px);
    
}

.btn:active{
  box-shadow:0px 5px 10px rgba(0,0,0,0.2)
  transform:translateY(-1px);
}

.btn-bottom-animation-1{
  animation:comeFromBottom 1s ease-out .8s;
}

.btn::after{
  content:"";
  text-decoration: none;
  text-transform:uppercase;
  position:absolute;
  width:100%;
  height:100%;
  top:0;
  left:0;
  border-radius:100px;
  display:inline-block;
  z-index:-1;
  transition: all .5s;
}

.btn-white::after {
    background-image: linear-gradient(56deg, #08AEEA 0%, #2AF598 100%);
    background-color: #fff;
}

.btn-animation-1:hover::after {
    transform: scaleX(1.4) scaleY(1.6);
    opacity: 0;
}

@keyframes comeFromBottom{
  0%{
    opacity:0;
    transform:translateY(40px);
  } 
  100%{
    opacity:1;
    transform:translateY(0);
  }
}
<a class="btn" href="#">
  <span>A brand new button!</span>
</a>

2 个答案:

答案 0 :(得分:0)

好吧,如果它在Codepen中工作,但现在不行,因为您的网站覆盖了某些内容,或者您​​不包括Codepen默认使用的重置/规范化或供应商前缀。

现在,您无需进行任何“居中”即可实现我认为想要的功能。

只需将span设为块级元素,并为其赋予margin或给按钮padding

button {
  background-color: blue;
  border: 2px solid darkBlue;
  font-size: 14px;
  padding: 4px;
}

button span {
  display:block;
  background: tan;
  border:2px solid aqua;
  padding: 10px 20px;
  color: white;
}
<button>
  <span>Text</span>
</button>

答案 1 :(得分:0)

这可能就是您要实现的解决方案。我必须对您的代码进行大量编辑才能实现。这是Codepen version

body {
  background: white;
  text-align: center;
  box-sizing: border-box;
  font-family: "Lato", Sans-serif;
  padding-top: 5%;
  /*   position:relative; */
}

.btn:link,
.btn:visited {
  text-decoration: none;
  text-transform: uppercase;
  /* position: relative; */
  /* top: 0; */
  /* left: 0; */
  padding: 10px;
  /* this padding will be your gradient border */
  border-radius: 100px;
  display: inline-block;
  transition: all .5s;
  border: none;
}

.btn:hover {
  background-image: linear-gradient(56deg, #08AEEA 0%, #2AF598 100%);
  /* border: none; */
  box-shadow: 0px 10px 10px rgba(0, 0, 0, 0.2);
  /* color: #fff; */
  transform: translateY(-3px);
}

.btn span {
  /* align-items: center; */
  background-color: transparent;
  /* background-color: #fff; */
  border-radius: 100px;
  /* display: absolute; */
  /* justify-content: center; */
  /* padding: 20px 40px; */
  /* padding: 20px; */
  /* height: 100%; */
  /* transition: background .5s ease; */
  transition: all .5s ease;
  /* width: 100%; */
  display: block;
  padding: 20px 40px;
}

.btn:hover span {
  /* background: transparent; */
  background: #fff;
  color: #ccc;
}


/* .btn-white {
    background-image: linear-gradient(56deg, #08AEEA 0%, #2AF598 100%);
    color: #000;
    font-family: Lato;
    font-size: 1.3rem;
} */


/* 
.btn:active {
    box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.2);
    transform: translateY(-1px);
}

.btn-bottom-animation-1 {
    animation: comeFromBottom 1s ease-out .8s;
} */


/* .btn::after {
    content: "";
    text-decoration: none;
    text-transform: uppercase;
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    border-radius: 100px;
    display: inline-block;
    z-index: -1;
    transition: all .5s;
} */


/*
.btn-white::after {
    background-image: linear-gradient(56deg, #08AEEA 0%, #2AF598 100%);
    background-color: #fff;
}

.btn-animation-1:hover::after {
    transform: scaleX(1.4) scaleY(1.6);
    opacity: 0;
}

@keyframes comeFromBottom {
    0% {
        opacity: 0;
        transform: translateY(40px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}
*/
<a class="btn" href="#">
  <span>A brand new button!</span>
</a>