我创建了需要渐变边框的按钮,为了做到这一点,我使用了“ before”和“ after”伪元素(渐变之前和白色背景颜色之前和之后重叠,按z-指数)。问题是,当包装div具有背景颜色时,按钮伪元素在活动状态上会重叠!可以通过将z-index添加到0或1到包装div中来解决此问题……但是,我仍然不喜欢这种解决方法!谢谢!
https://jsfiddle.net/x0uw5et3/1/ enter code here
答案 0 :(得分:0)
将wrapper-of-wrapper
类编辑为关注
.wrapper-of-wrapper {
background-color: purple;
position:relative;
z-index:-2;
}
答案 1 :(得分:0)
嘿,我有您的解决方法your fiddle here
.wrapper-of-wrapper {
background-color: purple;
position: relative;
z-index: 1;
}
body {
background: orange;
}
.wrapper {
/* background-color: orange; */
}
.wrapper-of-wrapper {
background-color: purple;
position: relative;
z-index: 1;
}
.sf-btn {
font-family: Poppins, Helvetica Neue, Helvetica, Arial, sans-serif;
display: inline-block;
margin-bottom: 0;
font-size: 14px;
font-weight: 400;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-image: none;
border-radius: 4px;
line-height: 24px;
border: 0;
padding: 8px 16px;
width: 100%;
-webkit-transition: all .4s cubic-bezier(.25, .8, .25, 1);
transition: all .4s cubic-bezier(.25, .8, .25, 1);
-webkit-transition: none;
transition: none;
}
.sf-btn:focus, .sf-btn:hover {
color: #fff;
}
.sf-btn:active, .sf-btn:focus, .sf-btn:hover {
color: #fff;
}
@media (min-width: 640px) {
.sf-btn {
width: auto;
}
}
.sf-btn svg {
fill: inherit;
}
.sf-btn--secondary {
z-index: 3;
color: #262a33;
position: relative;
background-color: #fff;
font-weight: 600;
outline: none;
}
.sf-btn--secondary::before {
background: -webkit-gradient(linear, left top, right top, from(red), color-stop(50%, red), to(#ff7000));
background: linear-gradient(90deg, red, red 50%, #ff7000);
content: "";
position: absolute;
z-index: -2;
top: 0;
left: 0;
right: 0;
bottom: 0;
border-radius: 4px;
}
.sf-btn--secondary::after {
content: "";
position: absolute;
background-color: #fff;
border-radius: 4px;
z-index: -1;
top: 2px;
left: 2px;
right: 2px;
bottom: 2px;
}
.sf-btn--secondary:hover {
color: #262a33;
}
.sf-btn--secondary:hover::before {
top: -2px;
left: -2px;
right: -2px;
bottom: -2px;
}
.sf-btn--secondary:focus {
color: #262a33;
}
.sf-btn--secondary:focus::before {
z-index: -2;
-webkit-box-shadow: 0 0 6px 2px #ff7000;
box-shadow: 0 0 6px 2px #ff7000;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.sf-btn--secondary:active {
z-index: inherit;
background: linear-gradient(34deg, #eb2506, #eb2506 37%, #ef6f08);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.sf-btn--secondary:active::after {
z-index: -2;
}
.sf-btn--secondary:active::before {
-webkit-box-shadow: none;
box-shadow: none;
}
.sf-btn--lg {
padding: 8px 64px;
font-size: 16px;
line-height: 48px;
font-weight: 700;
}
.sf-btn--full-width {
width: 100%;
margin-right: -4px!important;
}
.sf-btn--full-width::after {
transform: translateX(4px);
}
.wrapper--red {
background-color: red;
z-index: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper-of-wrapper">
<div class="wrapper">
<button class="sf-btn sf-btn--lg sf-btn--secondary">Hello</button>
</div>
</div>