有没有办法创建一个带有渐变和圆角边框的按钮(或div)? [复制]

2023-11-24

它应该是这样的:

enter image description here

迄今为止的尝试:

  1. 使用渐变背景加上内部元素来覆盖它并仅留下外部“边框”。这背景明显不透明.

body {
  background: #242424;
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: sans-serif;
  color: #FFFFFF;
}

div {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-content: center;
  align-items: center;
  width: 100%;
  height: 100vh;
}

h1 {
  margin: 2em;
  text-align: center;
}

a {
  cursor: pointer;
  transition: ease-in-out,.2s,color;
}
a:hover {
  color: #DDD;
}

.nested {
  display: block;
  max-width: 20em;
  padding: 2px;
  overflow: hidden;
  border-radius: 2em;
  background: linear-gradient(to right, #00ff00 0%, #00e5ff 100%);
}
.nested span {
  display: inline-block;
  padding: 1em;
  text-align: center;
  background: #242424;
  border-radius: 2rem;
}
.nested span p {
  padding: 0 2em;
  margin: 0;
}

.pseudo {
  display: block;
  margin-top: 20px;
  position: relative;
  border-radius: 2em;
  padding: 1em 2em;
  background: #242424;
}
.pseudo:after {
  position: absolute;
  z-index: -1;
  top: -2px;
  bottom: -2px;
  right: -2px;
  left: -2px;
  background: linear-gradient(to right, #00ff00 0%, #00e5ff 100%);
  border-radius: 2em;
  content: '';
}
<div>
    <h1>Gradient + Border Radius</h1>
    <a class="nested"><span><p>ANOTHER ONE</p></span></a>
    <a class="pseudo">AND ANOTHER ONE</a>
</div>
  1. Using border-image. The 角不是圆角的.

body {
  background: url(http://subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/ignasi_pattern_s.png);
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: sans-serif;
}

a {
  padding: 20px 40px;
  border-image: linear-gradient(to bottom right, #00aeef 0%, #7cc578 100%);
  border-image-slice: 1;
  border-radius: 10px;
}

div {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-content: center;
  align-items: center;
  width: 100%;
  height: 100vh;
}

h1 {
  margin: 2em;
  text-align: center;
}

a {
  text-decoration: none;
  font-weight: bold;
  color: black;
  cursor: pointer;
  transition: ease-in-out,.2s,color;
}
a:hover {
  color: #DDD;
}
<div>
    <h1>Gradient + [non working] Border Radius</h1>
    <a href="#">CLICK ME	</a>
</div>

不,你不能使用border-image在一个元素上border-radius因为根据规格,仅根据边框半径剪裁元素的背景,而不是元素的背景border-image。因此图像始终是矩形(或正方形)。

如果需要透明的中心部分(或透明的内容区域),那么最好的选择是使用 SVG。 SVG的笔触甚至可以将渐变作为值,因此它可以产生边框是渐变且中心部分是透明的圆形形状。

The path用于创建形状很简单,您可以阅读有关路径命令的更多信息here.

.border-with-grad {
  position: relative;
  height: 100px;
  width: 250px;
  color: white;
  line-height: 100px;
  text-align: center;
  letter-spacing: 1.5px;
}
.border-with-grad svg {
  position: absolute;
  top: 0px;
  left: 0px;
  height: 100%;
  width: 100%;
}
.border-with-grad path {
  fill: transparent;
  stroke: url(#border-gradient);
  stroke-width: 4;
}

/* Just for demo */

body {
  background-image: radial-gradient(circle, #3F9CBA 0%, #153346 100%);
  min-height: 100vh;
  font-family: sans-serif;  
}
<div class='border-with-grad'>
  <svg viewBox='0 0 250 100'>
    <defs>
      <linearGradient id='border-gradient' gradientUnits='objectBoundingBox' gradientTransform='rotate(5 0.5 0.5)'>
        <stop offset='0%' stop-color='rgb(248,244,135)' />
        <stop offset='25%' stop-color='rgb(248,244,135)' />
        <stop offset='75%' stop-color='rgb(53,176,182)' />
        <stop offset='100%' stop-color='rgb(53,176,182)' />
      </linearGradient>
    </defs>
    <path d='M50,95 a45,45 0 0,1 0,-90 h150 a45,45 0 1,1 0,90 h-150' />
  </svg>
  CLICK HERE
</div>

通过CSS,我们可以使用mask-image使中心部分透明,但其浏览器支持很差。目前只有支持 webkit 的浏览器支持此属性。另一种方法是利用clip-path但如果您需要支持 IE 和 Firefox(Firefox 仅支持 SVG 剪辑路径),则这是不行的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法创建一个带有渐变和圆角边框的按钮(或div)? [复制] 的相关文章

  • 为什么 CSS 重置不使用“*”来覆盖所有元素?

    For example the Meyer reset http meyerweb com eric tools css reset has a long list of elements1 which I believe can be r
  • 如何使用 Twitter Bootstrap 创建类似 Gmail 的布局

    是否可以使用 Twitter Bootstrap 创建类似 GMail GoogleGroups 的布局 以便布局始终适合视口 窗口高度 并且侧边栏和内容区域适合 单独滚动 Fixed top navbar
  • CSS 主体宽度未填充 100%

    我正在开发一个网页 我注意到这个问题 Please post anything you get in mind it will be very helpful 检查网站here http dev mariachi com br europe
  • CSS 字体显示功能是什么?

    对于我的网站 我从 Google 的 PageSpeed Insights 获得以下反馈 利用字体显示 CSS 功能确保加载 Web 字体时文本对用户可见 这意味着什么 CSS font display允许您控制网络字体在加载时 加载后如何
  • JavaScript 和 jQuery 以及句点的使用

    我很困惑在引用类名时何时使用类名之前的句点 在此示例中 为什么 active slide 类的第一次使用事先使用了句点 而其他两个则没有 var main function dropdown toggle click function dr
  • 当内容悬停时变为粗体时防止表格扩展

    我正在处理一张表格 其中一个要求是每一行在悬停时变为粗体 我可以正常工作 但是当发生这种情况时 列的宽度会发生变化 有什么办法可以防止这种情况发生吗 table width 100 border 1px solid ccc margin t
  • 如何制作可扩展的文本框?

    我想制作一本以给定宽度 高度开始的教科书 然后 如果用户输入的内容超过给定的空间量 文本框就会向下扩展 我该怎么做呢 我使用 CSS 吗 当用户超过允许的行数时 基本文本框仅显示滚动条 如何使文本框将行数再扩展 5 行
  • Chrome扩展程序自定义光标

    我构建了一个 Google Chrome 扩展程序 在网站中放置一些 IMG 标签 hover 上的此 img 标记必须显示自定义光标 该扩展使用 jQuery 作为其注入的核心脚本 我尝试了以下方法 1 var cursor url ch
  • 在 jQuery Mobile 中设置 Listview
  • 高度
  • 我正在尝试调整大小 li 在我的 jQuery 移动网站 listview 中 似乎无法在 CSS 中找到合适的类来执行此操作 我基本上调整了一些元素的大小 页眉和页脚等 我有五个 li li 按钮垂直堆叠 按钮和页脚下方有间隙 我只想设置
  • 带有边框半径的CSS中的完美圆不起作用

    圆往往是椭圆形的 我想要的是完美的圆 border radius 100 不起作用我想知道为什么 http jsfiddle net 8gD2m 1 http jsfiddle net 8gD2m 1 badge display inlin
  • Javascript显示/隐藏div onclick

    我有一个页面 其中包含三个 div 每个 div 是一个段落 我想使用 javascript 在用户从导航栏中按下每个 div 时仅在页面中显示这是导航栏 https i stack imgur com 1LnsS png WebDev 只
  • Bootstrap 4 行布局没有响应

    我正在使用 Bootstrap 4 在 MEAN 堆栈上为新闻文章布局创建一个 html 模板 但这应该不重要 对于这种总体布局的要求是 一篇 特色 文章位于其自己的列中 而其他 8 篇文章位于另一列中的两行中 当在较小的屏幕或移动设备上查
  • 文本区域下的额外填充

    我的文本区域下面有额外的填充 但我似乎找不到它的来源 我已将单独的代码放在此页面上 http jsfiddle net wfuks http jsfiddle net wfuks 我似乎找不到它的来源 它有类 field field bac
  • CSS:仅背景不透明度,而不是内部文本[重复]

    这个问题在这里已经有答案了 我有这个注册表框 我真的很喜欢背景如何变得不透明 透明为 25 85 但后来我注意到文本和表单元素也变暗了一点 所以我想知道如何做到这一点只有边框和背景而不是盒子里面的东西 regForm z index 11
  • 未使用 Font Family Open Sans

    我在用谷歌的 Open Sans 字体 http www google com fonts UsePlace use Collection Open Sans在我的应用程序中 我已经按照指示定义了样式表 然后我在主体选择器上使用它 body
  • 使用过渡添加子项时 div 的平滑增长

    尽管使用了以下代码 但其行为并不符合我的预期transition所以可能有些事情我不明白 理想情况下 单击该按钮会将一个子项添加到id2div 并制作id1分区增长smoothly因此 function id1 button click g
  • 下拉菜单导致滚动条

    我用过这个W3C 的示例 http www w3schools com bootstrap bootstrap dropdowns asp div class dropdown div
  • 输入元素可滚动并启用文本溢出省略号

    当我添加text overflow ellipsis对于输入元素 该元素是可滚动的 当我将光标放在元素上时 我可以左右滚动 就好像文本是全宽并且没有被截断一样 尽管后面没有文本 我该如何阻止这种行为 input width 180px te
  • 创建响应式眼睛焦点图标

    我一直在尝试制作响应式彩色眼睛焦点图标 但到目前为止我所尝试的一切均不成功 我试图在某种程度上复制真眼的颜色 我使用边框 框阴影来获取颜色 但该部分没有缩放 也尝试过轮廓 但也失败了 那个甚至不是圆的 div 的高度当前是静态的 但我希望它
  • 如何显示不同页眉的页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在为我的学校项目开发网站 但我遇到了一个问题 我在每个页面上显示一个标题 我的标题之一包含登录表单 另一标题包含用户名 搜索栏等 问题是

随机推荐

  • 如何使用 Selenium(任何版本)下载图像?

    我想知道如何使用 selenium webdriver 下载页面的图像 假设需要用户会话来下载图像 因此纯 URL 没有帮助 任何示例代码都受到高度赞赏 我更喜欢做这样的事情 1 Get the SRC attribute of the i
  • FocusedElement 未得到尊重

    我使用 Prism 和 MVVM 创建了一个基本应用程序 到目前为止 它仅由 Shell 和一个 View ViewModel 组成 在应用程序加载期间 我将视图加载到我的主区域中 并将其显示在屏幕上 这可行 但我无法使视图上的文本框聚焦
  • 截取包含 iframe 的页面的屏幕截图

    我们有一个 NodeJS Angular 4 网站 它显示来自第三方 powerBI Emebdded 的 iframe 我们正在尝试开发一项功能 允许最终用户截取页面的屏幕截图 包括 iframe 的内容 我们尝试了 iframe2ima
  • 使用javascript无限定时器循环(没有setInterval)?

    我被 朋友 要求建立一个计时器 无限的 每秒写一行 但没有setInterval I solved它与 var i 0 function k myId cb setTimeout function console log myId cb 1
  • 有没有办法结合多个特征来定义一个新特征? [复制]

    这个问题在这里已经有答案了 有没有办法组合多个特征 通过继承 来定义一个新特征 我正在寻找类似 C 中的概念的东西 auto concept newConcept
  • 如何 SendMessage() 到另一个线程上创建的窗口?

    我有一个我想要的情况SendMessage到创建的窗口另一个线程比打电话的人SendMessage 默认行为似乎是永远阻塞并且不工作 所以我将呼叫更改为PostMessage 这不会阻塞发送线程 但消息似乎永远不会到达预期的窗口 那我该怎么
  • 如何向使用 autobuild 制作的 docker 镜像添加标签

    我四处搜寻 找不到真正的答案 如果我创建一个 docker git repo 并为我的 dockerhub 帐户设置自动构建 它将使用单个标签 即最新 或 1 0 或 foo 进行构建 但我找不到任何方法可以像通过命令那样添加标签与本地构建
  • IIS 应用程序在响应标头中缺少内容编码 - gzip

    在 Firebug 中 请求标头具有以下条目 接受编码 gzip deflate 但没有 内容编码 gzip在响应标头中 无论我尝试过什么 根据SO和其他网站上的许多答案 似乎没有任何效果 静态文件和动态文件都没有被压缩 或者至少如果它们被
  • 在 Boto3 中,如何使用附加关键字参数为 list_objects 创建分页器?

    我正在使用一个Paginator迭代 S3 存储桶的内容 以下http boto3 readthedocs io en latest guide paginators html creating paginators client boto
  • 如何从 Perl 调用 PHP 脚本?

    如何从 Perl 脚本调用 PHP 脚本并以变量形式获取其输出 使用反引号运算符 my phpOutput usr bin php cli your script php 请注意 您可能需要编辑路径以指向您的php可执行的 如果您想将输出作
  • jQuery跨域请求响应头

    我正在使用 html 数据类型发出跨域 ajax 请求 正如我所包括的那样 它们工作正常 Access Control Allow Origin 在服务器的响应中 问题是我需要从服务器的响应中获取某些标头 无论我做什么 除了 内容类型 之外
  • OpenCL 用户定义的内联函数

    是否可以在 OpenCL 代码中定义我自己的函数 以便内核可以调用它们 是的 我在哪里可以看到一些简单的例子 用于创建程序的函数是 cl program clCreateProgramWithSource cl context contex
  • GitLab CI 由于 maven-surefire-plugin 和虚拟机崩溃而失败

    我们有大约 10 个不同的应用程序 它们是使用 Groovy 的 Spring Boot 项目 我们所有的项目都在所有开发人员工作站中正确构建 并且直到昨天它们都正常运行 但是今天突然所有项目仅在我们的 GitLab CI 管道中停止工作
  • 如何从抓取的链接下载 PDF [Python]?

    我正在用 Python 制作 PDF Web Scraper 本质上 我试图从我的一门课程中抓取所有 PDF 形式的讲义 我想输入一个网址 然后获取 PDF 并将它们保存在我的笔记本电脑的目录中 我已经看过几个教程 但我不完全确定如何去做
  • 重新安装 python 2.7.12 和 python 3.5.2

    晚上好 今天我在尝试安装 python 3 5 2 的一些软件包时弄乱了我的笔记本电脑 我尝试安装正确的 pip 版本 但我错过了一些东西 现在我无法在两个版本中安装任何软件包 并且无法解决问题 是否可以卸载 2 个版本 包括所有软件包 并
  • 如何隐藏 html 源并禁用右键单击和文本复制?

    以下网站已禁用右键单击和查看源代码 http www immihelp com visitor visa sponsor documents html 任何人都可以阐明这是如何可能的吗 以下网站已禁用右键单击和查看源代码 他们愚弄了你 只需
  • dispatch_async 是否复制内部块

    鉴于以下情况 手动引用计数 void block void NSLog wuttup void async block void block dispatch async dispatch get main queue async bloc
  • C# 添加两个泛型值

    有人可以解释为什么这不起作用吗 我试图将两个值相加 而不管数字类型如何 public static T Add
  • Doctrine 2(和 Symfony)中 $unitOfWork->getScheduledCollectionDeletions() 的正确用法是什么?

    我正在尝试检测多对多关系中的变化onFlush event 如果将新实体添加到关系中或更新关系 始终保留元素 我可以使用以下命令检测更改 unitOfWork gt getScheduledCollectionUpdates 然后检查get
  • 有没有办法创建一个带有渐变和圆角边框的按钮(或div)? [复制]

    这个问题在这里已经有答案了 它应该是这样的 迄今为止的尝试 使用渐变背景加上内部元素来覆盖它并仅留下外部 边框 这背景明显不透明 body background 242424 height 100 width 100 margin 0 pa