CSS/透過ボタンhoverアクション

sample 1 sample 2 sample 3 sample 4 sample 5 sample 6 sample 7 sample 8 sample 9 sample10
CSS
a.btn{
  display: inline-block;
  width: 120px;
  margin: 20px 40px;
  padding: 15px 10px;
  border: 1px solid #fff;
  background: transparent;
  color: #fff;
  text-align: center;
  text-decoration: none;
  line-height: 1;
  transition: .3s;
}

a.sample1:hover {
  border: 1px solid rgba(0,0,0,.9);
  color: rgba(0,0,0,.9);
}

a.sample2:hover {
  border: 1px solid rgba(0,0,0,.1);
  background: rgba(0,0,0,.2); 
}

a.sample3:hover {
  box-shadow: 0 0 20px 5px rgba(255,255,255,.3) inset;
}

a.sample4:hover {
  background: #fff;
  color: #555;
}

a.sample5 {
  position: relative;
  z-index: 2;
  overflow: hidden;
}
a.sample5::after {
  display: inline-block;
  content: "";
  position: absolute;
  z-index: -1;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  margin: 0;
  border-radius: 50%;
  background: rgba(0,0,0,.2);
  transition: .3s;
}
a.sample5:hover::after {
  width: 180px;
  height: 130px;
  margin: -65px 0px 0 -85px;
}

a.sample6 {
  position: relative;
  z-index: 2;
}
a.sample6::after {
  display: block;
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 0;
  height: 0;
  margin: auto;
  background: rgba(0,0,0,.2);
  transition: .3s;
}
a.sample6:hover::after {
  width: 100%;
  height: 100%;
}

a.sample7 {
  position: relative;
  z-index: 2;
}
a.sample7::after {
  display: block;
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  left: 0;
  width: 0;
  height: 100%;
  margin: 0;
  background: rgba(0,0,0,.2);
  transition: .3s;
}
a.sample7:hover::after {
  width: 100%;
}

a.sample8 {
  position: relative;
  z-index: 2;
}
a.sample8::after {
  display: block;
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  left: 0;
  width: 100%;
  height: 0;
  margin: 0;
  background: rgba(0,0,0,.2);
  transition: .3s;
}
a.sample8:hover::after {
  height: 100%;
}

a.sample9 {
  position:relative;
  z-index:2;
  overflow:hidden
}
a.sample9::after {
  display:block;
  content:"";
  position:absolute;
  z-index:-1;
  top:50%;
  left:50%;
  width:130px;
  height:130px;
  margin:-65px 0 0 -65px;
  border:65px solid rgba(255,255,255,0);
  border-radius:50%;
  transition:.5s
}
a.sample9:hover::after {
  border-width:0;
  border-color:rgba(255,255,255,1)
}

a.sample10 {
  position:relative;
  z-index:2;
  overflow:hidden
}
a.sample10::after {
  display:block;
  content:"";
  position:absolute;
  z-index:-1;
  top:50%;
  left:50%;
  width:130px;
  height:130px;
  margin:-65px 0 0 -65px;
  border:65px dotted rgba(255,255,255,0);
  border-radius:50%;
  transition:.5s
}
a.sample10:hover::after {
  border-width:0;
  border-color: rgba(255,255,255,1)
}

.button {
    padding: 10px 40px;
    position: relative;
}

#sample11, #sample12 {
	margin: 40px;
}

.change-border01__inner,.change-border03__inner {
	color: #fff;
}
.change-border01::after,
.change-border01::before,
.change-border01__inner::after,
.change-border01__inner::before {
    background-color: #fff;
    content: '';
    display: block;
    position: absolute;
    z-index: 10;
    transition: all .3s ease;
    -webkit-transition: all .3s ease;
}
.change-border01::after {
    height: 1px;
    left: -1px;
    top: -1px;
    width: 0px;
}
.change-border01::before {
    bottom: -1px;
    height: 1px;
    right: -1px;
    width: 0px;
}
.change-border01__inner::after {
    bottom: -1px;
    height: 0px;
    left: -1px;
    width: 1px;
}
.change-border01__inner::before {
    height: 0px;
    right: -1px;
    top: -1px;
    width: 1px;
}
.change-border01:hover::after,
.change-border01:hover::before {
    width: 100%;
    width: calc(100% + 1px);
}
.change-border01:hover .change-border01__inner::after,
.change-border01:hover .change-border01__inner::before {
    height: 100%;
    height: calc(100% + 1px);
}

.change-border03::after,
.change-border03::before,
.change-border03__inner::after,
.change-border03__inner::before {
    background-color: #fff;
    content: '';
    display: block;
    position: absolute;
    z-index: 10;
    transition: all .3s ease;
    -webkit-transition: all .3s ease;
}
.change-border03::after {
    height: 1px;
    left: -1px;
    top: -1px;
    width: 0px;
    -webkit-transition-delay: .9s;
}
.change-border03::before {
    bottom: -1px;
    height: 1px;
    right: -1px;
    width: 0px;
    -webkit-transition-delay: .3s;
}
.change-border03__inner::after {
    bottom: -1px;
    height: 0px;
    left: -1px;
    width: 1px;
}
.change-border03__inner::before {
    height: 0px;
    right: -1px;
    top: -1px;
    width: 1px;
    -webkit-transition-delay: .6s;
}
/* hover */
.change-border03:hover::after,
.change-border03:hover::before {
    width: 100%;
    width: calc(100% + 1px);
}
.change-border03:hover .change-border03__inner::after,
.change-border03:hover .change-border03__inner::before {
    height: 100%;
    height: calc(100% + 1px);
}
.change-border03:hover::after,
.change-border03:hover::before,
.change-border03:hover .change-border03__inner::after,
.change-border03:hover .change-border03__inner::before {
    transition: none;
    -webkit-transition: none;
}