RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 682321
Accepted
word
word
Asked:2020-06-22 15:16:22 +0000 UTC2020-06-22 15:16:22 +0000 UTC 2020-06-22 15:16:22 +0000 UTC

带渐变的圆圈

  • 772

如何创建如图所示的圆圈?
图片中也有背景。你可以画一个带有渐变的圆,然后使用 :before 来关闭周边的内部,但是如何使用 :before 来显示背景呢?
在此处输入图像描述

css
  • 5 5 个回答
  • 10 Views

5 个回答

  • Voted
  1. Best Answer
    Artem Gorlachev
    2020-06-22T15:54:53Z2020-06-22T15:54:53Z

    使用由生成器生成的@Maxim Lensky 的答案示例,可以制作一个可读易懂的版本:

    <svg viewBox="0 0 220 220" width="220" height="220">
        <defs>
            <linearGradient id="gradient">
                <stop offset="0" style="stop-color:#0070d8" />
                <stop offset="0.5" style="stop-color:#2cdbf1" />
                <stop offset="1" style="stop-color:#83eb8a" />
            </linearGradient>
        </defs>
        <ellipse ry="100" rx="100" cy="110" cx="110" style="fill:none;stroke:url(#gradient);stroke-width:6;" />
    </svg>

    • 8
  2. MihailPw
    2020-06-22T16:04:25Z2020-06-22T16:04:25Z

    或者,您可以使用mask-image:

    .box {
      height: 200px;
      width: 200px;
      border-radius: 50%;
      background-image: linear-gradient(to right, #0B73D3, #37DAEF, #86E98E);
      -webkit-mask-image: radial-gradient(circle at center, transparent 67%, white 68%);
      mask-image: radial-gradient(circle at center, transparent 67%, white 68%);
    }
    
    body {
      background-image: url(https://www.w3schools.com/css/img_fjords.jpg);
      background-size: cover;
    }
    <div class="box"></div>

    但是,不幸的是,浏览器支持还有很多不足之处。

    • 6
  3. user33274
    2020-06-22T15:40:02Z2020-06-22T15:40:02Z

    像往常一样,svg 处理这些事情,我建议阅读这个 charm,有一个优秀的网站,其管理员属于 ruSO

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
      id="svg8" version="1.1" viewBox="0 0 297 210">
      <defs
         id="defs2">
        <linearGradient
           id="linearGradient853-5-9-6">
          <stop
             id="stop849"
             offset="0"
             style="stop-color:#489c37;stop-opacity:1" />
          <stop
             id="stop851"
             offset="1"
             style="stop-color:#2a3eff;stop-opacity:0.733" />
        </linearGradient>
        <linearGradient
           gradientUnits="userSpaceOnUse"
           y2="194.94643"
           x2="171.57741"
           y1="193.43452"
           x1="136.8512"
           id="linearGradient885"
           xlink:href="#linearGradient853-5-9-6" />
      </defs>
      <g
         transform="translate(0,-87)"
         id="layer1">
        <ellipse
           ry="78.619049"
           rx="88.824409"
           cy="195.70238"
           cx="151.56847"
           id="path10"
           style="fill:none;fill-opacity:1;stroke:url(#linearGradient885);stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
      </g>
    </svg>

    • 2
  4. Vadim Ovchinnikov
    2020-06-22T16:25:30Z2020-06-22T16:25:30Z

    您可以在没有 SVG 的情况下使用纯 CSS 来完成,但是您必须明确设置图像的背景颜色:

    div {
      width: 100px;
      height: 100px;
      border-radius: 50%;
      position: relative;
      /* Явно задаём белый цвет */
      background-color: white;
    }
    
    div:after {
      content: "";
      background: linear-gradient(#0070d8, #2cdbf1, #83eb8a);
      position: absolute;
      left: -5px;
      right: -5px;
      top: -5px;
      bottom: -5px;
      border-radius: 50%;
      z-index: -1;
    }
    <div></div>

    • 1
  5. Vadim Ovchinnikov
    2020-06-22T16:50:15Z2020-06-22T16:50:15Z

    您可以使用@ArtemGorlachev的答案并稍微修改它以适应任意块:

    <svg viewBox="0 0 220 220"  width="100%" height="100%" preserveAspectRatio="none">
        <defs>
            <linearGradient id="gradient">
                <stop offset="0" style="stop-color:#0070d8" />
                <stop offset="0.5" style="stop-color:#2cdbf1" />
                <stop offset="1" style="stop-color:#83eb8a" />
            </linearGradient>
        </defs>
        <ellipse ry="100" rx="100" cy="110" cx="110" style="fill:none;stroke:url(#gradient);stroke-width:6;" />
    </svg>

    您可以使 SVG 独立(首选)或作为值的一部分background(以下代码仅适用于 webkit 浏览器):

    div {
      width: 250px;
      height: 250px;
      background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 220" width="100%" height="100%" preserveAspectRatio="none"><defs><linearGradient id="gradient"><stop offset="0" style="stop-color:#0070d8" /><stop offset="0.5" style="stop-color:#2cdbf1" /><stop offset="1" style="stop-color:#83eb8a" /></linearGradient></defs><ellipse ry="100" rx="100" cy="110" cx="110" style="fill:none;stroke:url(#gradient);stroke-width:6;" /></svg>');
    }
    <div></div>

    为了使代码在 MS Edge 和 Firefox 中工作,url 中的字符必须在 utf8 编码后转义,对于他们来说,考虑到解决方法(用单引号替换双引号,#with%23和%with %25)的结果看起来像这个:

    div {
      width: 250px;
      height: 250px;
      background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 220' width='100%25' height='100%25' preserveAspectRatio='none'><defs><linearGradient id='gradient'><stop offset='0' style='stop-color:%230070d8' /><stop offset='0.5' style='stop-color:%232cdbf1' /><stop offset='1' style='stop-color:%2383eb8a' /></linearGradient></defs><ellipse ry='100' rx='100' cy='110' cx='110' style='fill:none;stroke:url(%23gradient);stroke-width:6;' /></svg>");
      background-size: 100% 100%; /* Фикс для Firefox, чтобы изображение корректно растягивалось */
    }
    <div></div>

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5