英文:
How to create semi transparent linear gradient background and border using css?
问题
以下是您要翻译的内容:
"I am looking to achieve design similar to shown below:
It has a rounded border (ie., using border-radius), which is has gradient colour from left to right, which is as well semi transparent.
It also has background, which too has semi transparent background gradient.
I tried below ways:
https://stackoverflow.com/questions/28252119/creating-semi-transparent-borders
https://stackoverflow.com/questions/32511103/css-linear-gradient-with-semi-transparent-borders
https://stackoverflow.com/questions/51868069/button-gradient-borders-with-transparent-background
JS Fiddle with code that I have tried so far:
https://jsfiddle.net/xobcr0h7/4/
body {
background:black;
--border: 5px;
}
div.button {
display: flex;
justify-content: center;
align-items: centers;
width: 120px;
height: 50px;
border-radius: 30px;
/try 1/
/background-color: rgba(255, 255, 255, 0.25);
border: 2px solid transparent;
background-image: linear-gradient(rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0.15));/
/*try 1*/
/*try 2*/
/border: var(--border) solid transparent;
background: linear-gradient(rgb(255, 255, 255, 1), rgb(255, 255, 255, 1)), linear-gradient(to bottom, rgb(255, 255, 255, 0.7), rgb(255, 255, 255, 0.2)) center center /calc(100% + (var(--border) * 2)) calc(100% + (var(--border) * 2));
background-clip: content-box, border-box;
margin: 10px auto;
mix-blend-mode: multiply;/
/*try 2*/
/*try 3*/
 background: linear-gradient(white, white) padding-box,
    linear-gradient(to right, red, blue) border-box;
border: 4px solid transparent;
/*try 3*/
}
But they all have solid colors or without border radius. I am trying to achieve something that has both with semitransparent background and border."
英文:
I am looking to achieve design similar to shown below:
It has a rounded border (ie., using border-radius), which is has gradient colour from left to right, which is as well semi transparent.
It also has background, which too has semi transparent background gradient.
I tried below ways:
https://stackoverflow.com/questions/28252119/creating-semi-transparent-borders
https://stackoverflow.com/questions/32511103/css-linear-gradient-with-semi-transparent-borders
https://stackoverflow.com/questions/51868069/button-gradient-borders-with-transparent-background
JS Fiddle with code that I have tried so far:
https://jsfiddle.net/xobcr0h7/4/
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-css -->
body {
  background:black;
  --border: 5px;
}
div.button {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 120px;
  height: 50px;
  border-radius: 30px;
  
  /*try 1*/
  
  /*background-color: rgba(255, 255, 255, 0.25);
    border: 2px solid transparent;
    background-image: linear-gradient(rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0.15));*/
    
    /*try 1*/
    
    /*try 2*/
   
   /*border: var(--border) solid transparent;
    background: linear-gradient(rgb(255, 255, 255, 1), rgb(255, 255, 255, 1)), linear-gradient(to bottom, rgb(255, 255, 255, 0.7), rgb(255, 255, 255, 0.2)) center center /calc(100% + (var(--border) * 2)) calc(100% + (var(--border) * 2));
    background-clip: content-box, border-box;
    margin: 10px auto;
    mix-blend-mode: multiply;*/
    
    /*try 2*/
    
    /*try 3*/
     background: linear-gradient(white, white) padding-box,
        linear-gradient(to right, red, blue) border-box;
    border: 4px solid transparent;
    /*try 3*/
    
}
<!-- language: lang-html -->
<div class="button">Sign Up</div>
<!-- end snippet -->
But they all have solid colors or without border radius. I am trying to achieve something that has both with semitransparent background and border.
答案1
得分: 2
我将使用我的先前回答来创建渐变边框,其余部分应该很容易。
button {
  --b: 5px;  /* 边框厚度 */
  --r: 20px; /* 半径 */
  font-size: 25px;
  border: none;
  padding: 10px 20px;
  position: relative;
  background: rgb(255 255 255/50%); /* 带透明度的背景颜色 */
  border-radius: var(--r);
}
button::before {
  content: "";
  position: absolute;
  inset: calc(-1*var(--b));
  padding: var(--b);
  border-radius: calc(var(--b) + var(--r));
  background: linear-gradient(90deg,red,green); /* 渐变边框 */
  opacity: .5; /* 边框的透明度 */
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
}
body {
  margin: 0;
  height: 100vh;
  display: grid;
  place-content: center;
  background: linear-gradient(90deg,#000,#ccc);
}
<button>按钮</button>
英文:
I will use my previous answer to create the gradient border and the remaining should be easy
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-css -->
button {
  --b: 5px;  /* border thickness */
  --r: 20px; /* radius */
  font-size: 25px;
  border: none;
  padding: 10px 20px;
  position: relative;
  background: rgb(255 255 255/50%); /* background color with alpha */
  border-radius: var(--r);
}
button::before {
  content:"";
  position: absolute;
  inset: calc(-1*var(--b));
  padding: var(--b);
  border-radius: calc(var(--b) + var(--r));
  background: linear-gradient(90deg,red,green); /* gradient border */
  opacity: .5; /* alpha for border */
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
}
body {
  margin: 0;
  height: 100vh;
  display: grid;
  place-content: center;
  background: linear-gradient(90deg,#000,#ccc);
}
<!-- language: lang-html -->
<button>A button</button>
<!-- end snippet -->
答案2
得分: 0
最简单的方法是使用带有 alpha 值的颜色,例如 rgba、hsla 或带有 4 或 8 个数字的 hex。Alpha 设置颜色的透明度:
div {
  background-color: rgba(255, 255, 255, 0.1);
  border: 5px solid rgba(255, 255, 255, 0.12);
}
<div>SING UP</div>
英文:
The easiest way is to use a color with an alpha value such as rgba, hsla or hex with 4 or 8 digits. The alpha sets a transparency to a color:
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-css -->
div {
  background-color: rgba(255, 255, 255, 0.1);
  border: 5px solid rgba(255, 255, 255, 0.12);
}
/* for demonstration purpose only */
body {
  margin: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background: linear-gradient(315deg, black 40%, pink);
}
div {
  width: 50vw;
  height: 50vh;
  border-radius: 2em;
  display: flex;
  justify-content: center;
  align-items: center;
  color: white;
  font-size: 2em;
  font-weight: 900;
}
<!-- language: lang-html -->
<div>SING UP</div>
<!-- end snippet -->
答案3
得分: -1
HTML:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
  </head>
  <body>
    <button>SIGN UP</button>
  </body>
</html>
CSS:
body {
  background: linear-gradient(to right, purple, darkgrey);
  text-align: center;
}
button {
  font-size: 50px;
  margin-top: 50%;
  padding: 30px 120px;
  border-radius: 30px;
  background-color: rgba(255, 255, 255, 0.3);
  border: none;
  color: white;
  box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px, rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
}
英文:
HTML:
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title></title>
</head>
<body>
  <button>SIGN UP</button>
</body>
</html>
CSS:
body {
  background: linear-gradient(to right, purple, darkgrey);
  text-align: center;
}
button {
  font-size: 50px;
  margin-top: 50%;
  padding: 30px 120px;
  border-radius: 30px;
  background-color: rgba(255, 255, 255, 0.3);
  border: none;
  color: white;
  box-shadow: rgba(14, 30, 37, 0.12) 0px 2px 4px 0px, rgba(14, 30, 37, 0.32) 0px 2px 16px 0px;
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。



评论