【问题标题】:Difficulty changing blue color to transparent难以将蓝色变为透明
【发布时间】:2021-12-26 08:47:45
【问题描述】:

如何将蓝色变为透明? https://jsfiddle.net/o64znkc5/

这就是我想要在代码中做的所有事情。

我怎么能做到这一点?

它要求我提供更多信息,但仅此而已。

我不知道该怎么做。

.exit {
  top: auto;
  bottom: -47.63px;
  margin: auto;
  right: 0;
  left: 0;
  width: 47.63px;
  height: 47.63px;
  cursor: pointer;
  border: none;
  background: none;
  padding: 0;
  border-radius: 50%;
  clip-path: circle(50%);

}

.exit svg {
  fill: red;
}
      <button class="exit" type="button" aria-label="Close">
        <svg width="100%" height="100%" viewBox="-144 -144 288 288">
          <g id="exit">
            <title>exit</title>
            <path fill="red" d="m-101.116-101.116a143 143 0 11202.232 202.232a143 143 0 01-202.232-202.232zzzz" />
            <circle cx="0" cy="0" r="113" />
            <path fill="blue" d="m-101.116-101.116m169.705 11.313a113 113 0 00-137.178 0l68.589 68.59zm-158.392 21.214a113 113 0 000 137.178l68.59-68.589zm21.214 158.392a113 113 0 00137.178 0l-68.589-68.59zm158.392-21.214a113 113 0 000-137.178l-68.59 68.589z" />
          </g>
        </svg>
      </button>

      <button class="exit" type="button" aria-label="Close">
        <svg width="100%" height="100%" viewBox="-144 -144 288 288">
          <use href="#exit" />
        </svg>
      </button>

      <button class="exit" type="button" aria-label="Close">
        <svg width="100%" height="100%" viewBox="-144 -144 288 288">
          <use href="#exit" />
        </svg>
      </button>
      <button class="exit" type="button" aria-label="Close">
        <svg width="100%" height="100%" viewBox="-144 -144 288 288">
          <use href="#exit" />
        </svg>
      </button>

【问题讨论】:

    标签: html css svg transparent


    【解决方案1】:

    &lt;path fill="blue"&gt;&lt;path fill="transparent"&gt; 在第 7 行

    &lt;path fill="transparent" d="m-101.116-101.116m169.705 11.313a113 113 0 00-137.178 0l68.589 68.59zm-158.392 21.214a113 113 0 000 137.178l68.59-68.589zm21.214 158.392a113 113 0 00137.178 0l-68.589-68.59zm158.392-21.214a113 113 0 000-137.178l-68.59 68.589z" /&gt;

    【讨论】:

    • 真的,使用 fill="none" 比使用 fill="transparent" none 更快。
    • 你到底是什么意思? fill="none" 这里将其更改为红色? jsfiddle.net/kc1muta6你能提供进一步的指导吗?
    【解决方案2】:

    您可以在标签中设置不透明度,但正如您将在示例中看到的那样,蓝色形状位于红色圆圈上方,因此我认为调整透明度不会产生您正在寻找的效果。

    &lt;path fill="blue" opacity="50%" d="m-101.116-101.116m169.705 11.313a113 113 0 00-137.178 0l68.589 68.59zm-158.392 21.214a113 113 0 000 137.178l68.59-68.589zm21.214 158.392a113 113 0 00137.178 0l-68.589-68.59zm158.392-21.214a113 113 0 000-137.178l-68.59 68.589z" /&gt;

    我建议您更改创建 svg 的方式,从红色形状中打出蓝色形状,然后导出 svg,这将为您提供您正在寻找的结果,除非您只想显示红色圆圈?

    编辑:您的图形由从左到右相互叠加的以下形状组成。最右边的图像是由其他三个组成的最终图形。所以使蓝色透明会显示一个红色圆圈。

    【讨论】:

    • 我要做的就是将蓝色改为透明。
    • 然后按照我的建议添加 opacity="0" 或按照@Disala 的建议将 fill="blue" 更改为 fill="transparent" 对你有用。
    • 我在我的答案中添加了一个编辑,只是为了说明。
    【解决方案3】:

    您现在拥有它的方式是不可能归档它transparentnone 尽管您可以将其填充为白色作为背景。

    .exit {
      top: auto;
      bottom: -47.63px;
      margin: auto;
      right: 0;
      left: 0;
      width: 47.63px;
      height: 47.63px;
      cursor: pointer;
      border: none;
      background: none;
      padding: 0;
      border-radius: 50%;
      clip-path: circle(50%);
    
    }
    
    svg,use{fill:blue}
    
    
    
    button:hover svg, 
    button:hover use
    {fill:white}
    <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <g id="exit">
                <title>exit</title>
                <path fill="red" d="m-101.116-101.116a143 143 0 11202.232 202.232a143 143 0 01-202.232-202.232zzzz" />
                <circle cx="0" cy="0" r="113" fill="red" />
                <path d="m-101.116-101.116m169.705 11.313a113 113 0 00-137.178 0l68.589 68.59zm-158.392 21.214a113 113 0 000 137.178l68.59-68.589zm21.214 158.392a113 113 0 00137.178 0l-68.589-68.59zm158.392-21.214a113 113 0 000-137.178l-68.59 68.589z" />
              </g>
            </svg>
          </button>
    
          <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
    
          <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
          <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>

    但是,如果您需要它是透明的,我会像这样更改代码:我正在使用由两条路径制成的蒙版来刺穿红色底座。请注意,在面具中,应该是一个洞的地方被填充为白色,而可见部分保持为黑色。

    .exit {
      top: auto;
      bottom: -47.63px;
      margin: auto;
      right: 0;
      left: 0;
      width: 47.63px;
      height: 47.63px;
      cursor: pointer;
      border: none;
      background: none;
      padding: 0;
      border-radius: 50%;
      clip-path: circle(50%);
    
    }
    
    svg,use{fill:blue}
    
    button:hover svg,
    button:hover use
    {fill:none}
      <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <g id="exit">
                <title>exit</title>
                <circle cx="0" cy="0" r="113"  />
                <path fill="red" mask="url(#m)"  d="m-101.116-101.116a143 143 0 11202.232 202.232a143 143 0 01-202.232-202.232zzzz" />
                <mask id="m">
                <path fill="white"  d="m-101.116-101.116a143 143 0 11202.232 202.232a143 143 0 01-202.232-202.232zzzz" />
                <path fill="black" d="m-101.116-101.116m169.705 11.313a113 113 0 00-137.178 0l68.589 68.59zm-158.392 21.214a113 113 0 000 137.178l68.59-68.589zm21.214 158.392a113 113 0 00137.178 0l-68.589-68.59zm158.392-21.214a113 113 0 000-137.178l-68.59 68.589z" />
                  </mask>
              </g>
            </svg>
          </button>
    
          <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
    
          <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
          <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>

    还有一个观察:为了保持一致性,我将只在按钮内使用 &lt;use&gt; 元素,方法是使 svg 元素不可见,宽度 =“0”高度 =“0”和位置:绝对;

    您也不需要按钮内的 svg 元素内的 width="100%" 。默认情况下,它们的宽度为 100%

    .exit {
      top: auto;
      bottom: -47.63px;
      margin: auto;
      right: 0;
      left: 0;
      width: 47.63px;
      height: 47.63px;
      cursor: pointer;
      border: none;
      background: none;
      padding: 0;
      border-radius: 50%;
      clip-path: circle(50%);
    }
    
    svg[width = "0"]{
    position:absolute;
    left:-100em;}
    
    use{fill:blue}
    button:hover use
    {fill:none}
    <svg width="0" height="0">
              <g id="exit">
                <title>exit</title>
                <circle cx="0" cy="0" r="113"  />
                <path fill="red" mask="url(#m)"  d="m-101.116-101.116a143 143 0 11202.232 202.232a143 143 0 01-202.232-202.232zzzz" />
                <mask id="m">
                <path fill="white"  d="m-101.116-101.116a143 143 0 11202.232 202.232a143 143 0 01-202.232-202.232zzzz" />
                <path fill="black" d="m-101.116-101.116m169.705 11.313a113 113 0 00-137.178 0l68.589 68.59zm-158.392 21.214a113 113 0 000 137.178l68.59-68.589zm21.214 158.392a113 113 0 00137.178 0l-68.589-68.59zm158.392-21.214a113 113 0 000-137.178l-68.59 68.589z" />
                  </mask>
              </g>
            </svg>
    
    
    
    <button class="exit" type="button" aria-label="Close">
           <svg viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
    
          <button class="exit" type="button" aria-label="Close">
            <svg viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
    
          <button class="exit" type="button" aria-label="Close">
            <svg  viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
          
          
          <button class="exit" type="button" aria-label="Close">
            <svg viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
          
          <!--You can add as many buttons you want using rhe same structure-->
          
         <button class="exit" type="button" aria-label="Close">
            <svg viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
          
          
         <button class="exit" type="button" aria-label="Close">
            <svg viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>

    【讨论】:

    • 我的代码示例:i.imgur.com/jKn1nAU.png jsfiddle.net/o64znkc5 ////// 您的代码 3 示例:i.imgur.com/aqKUmRX.png jsfiddle.net/2kb3qr0m 在您的代码示例中,svg 被推到右侧,那将如何解决?你能看到我指的是什么吗?
    • 您可以为第一个 svg 添加 position: absolute; 宽度为“0” height="0" 您也可以添加 left: -100em 将其扔出窗口
    • 你为什么从第一个 svg 中删除按钮?
    • 恐怕我听不懂你。任何 svg 中都没有按钮
    【解决方案4】:

    .exit {
      top: auto;
      bottom: -47.63px;
      margin: auto;
      right: 0;
      left: 0;
      width: 47.63px;
      height: 47.63px;
      cursor: pointer;
      border: none;
      background: none;
      padding: 0;
      border-radius: 50%;
      clip-path: circle(50%);
    
    }
    
    .exit svg {
      fill: red;
    }
        <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <g id="exit">
                <title>exit</title>
                <path fill="red" d="m-101.116-101.116a143 143 0 11202.232 202.232a143 143 0 01-202.232-202.232zzzz" />
                <circle cx="0" cy="0" r="113" />
                <path fill="blue" d="m-101.116-101.116m169.705 11.313a113 113 0 00-137.178 0l68.589 68.59zm-158.392 21.214a113 113 0 000 137.178l68.59-68.589zm21.214 158.392a113 113 0 00137.178 0l-68.589-68.59zm158.392-21.214a113 113 0 000-137.178l-68.59 68.589z"  fill-opacity="0.3"/>
              </g>
       <!--You  can use   fill-opacity .This attribute takes a decimal number between 0.0 and 1.0, inclusive; where 0.0 is completely transparent.-->      
            </svg>
          </button>
    
          <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
    
          <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>
          <button class="exit" type="button" aria-label="Close">
            <svg width="100%" height="100%" viewBox="-144 -144 288 288">
              <use href="#exit" />
            </svg>
          </button>

    【讨论】:

    • 那不是透明的,你不能透视到另一边。
    • 你可以设置不透明度的值,尽可能多的透明度。请阅读评论部分,我已经添加在那里。
    • 0.0 使其变为红色。
    • 是的,它会,因为蓝色变得完全透明,红色会出现,因为它在蓝色之下,这就是你得到红色的原因。
    • 我不想要红色。
    猜你喜欢
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 2017-08-04
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多