HTML에서 눈물을 어떻게 만듭니 까?


222

웹 페이지에 표시 할 모양을 만들려면 어떻게합니까?

이미지 크기 조절시 흐릿 해지기 때문에 이미지 를 사용하고 싶지 않습니다.

HTML, CSS 또는 SVG로 만들어야하는 눈물 방울 모양

나는 CSS로 시도했다 :

.tear {
  display: inline-block;
  transform: rotate(-30deg);
  border: 5px solid green;
  width: 50px;
  height: 100px;
  border-top-left-radius: 50%;
  border-bottom-left-radius: 50%;
  border-bottom-right-radius: 50%;
}
<div class="tear">
</div>

그것은 정말로 망했다.

그런 다음 SVG로 시도했습니다.

<svg viewBox="0 100 100">
  <polygon points="50,0 100,70 50,100 0,70"/>
</svg>

모양은 얻었지만 바닥 부분은 구부러지지 않았습니다.

HTML 페이지에서 사용할 수 있도록이 셰이프를 만드는 방법이 있습니까?


12
"확대 할 때 이미지가 흐려지기 때문에 이미지를 사용하고 싶지 않습니다."왜 이미지의 크기를 조정합니까? [srcset]또는 <picture>요소 를 사용하면 흐릿 해지지 않습니다 . 더 나은 아직, 그냥 svg 이미지에 링크 :<img src="tear.svg" alt="Teardrop"/>
— zzzzBov

32
@ zzzzBov : 당신은 정말로 picture요소를 추천하고 있습니까? 지원하지 않습니다 IE를위한 지원하지 않습니다 크롬의 초기 버전에 대한 지원하지 않습니다 사파리합니다. 계속해야합니까?
— jbutler483

9
@zzzzBov. why are you scaling the image?글쎄, 개발자가 이미지를 스케일링하지 않고 이미지가 흐리게 보일 수 있습니다. 필요한 것은 브라우저 확대입니다. 제 경우에는 HighDPI 화면과 많은 흐린 이미지가 있습니다. 예, SVG를 사용하여 이미지를 피할 수 있다면 가십시오.
— Nolonar

63
유니 코드가 모든 것을 해결 ... U + 1F4A7 💧
— Thomas Weller

21
@Thomas 나는 사각형을 본다 : / i.stack.imgur.com/8fXMf.png
— user000001

답변:


327

SVG 접근 방식 :

인라인 SVG 와 곡선 모양을 허용하지 않는 <path/>요소 대신 요소를 사용 하여 이중 곡선을 쉽게 얻을 수 있습니다 <polygon/>.

다음 예제는 <path/>요소를 다음과 같이 사용합니다 .

<svg width="30%" viewbox="0 0 30 42">
  <path fill="transparent" stroke="#000" stroke-width="1.5"
        d="M15 3
           Q16.5 6.8 25 18
           A12.8 12.8 0 1 1 5 18
           Q13.5 6.8 15 3z" />
</svg>

SVG는 이중 곡선으로 이러한 종류의 모양을 만드는 데 유용한 도구입니다. SVG / CSS 비교로 이중 곡선에 대한 이 게시물을 확인할 수 있습니다 . 이 경우 SVG를 사용하면 다음과 같은 장점이 있습니다.

  • 커브 컨트롤
  • 칠 컨트롤 (불투명도, 색상)
  • 스트로크 제어 (폭, 불투명도, 색상)
  • 코드 금액
  • 모양을 만들고 유지하는 시간
  • 확장 가능
  • HTTP 요청이 없습니다 (예와 같이 인라인으로 사용 된 경우)

인라인 SVG에 대한 브라우저 지원 은 Internet Explorer 9로 돌아갑니다 . 자세한 내용 은 canIuse 를 참조하십시오.


그것은 줄어든다 : <svg width="100%" height="100%" viewBox="0 0 8 8" /> <path d="M4 1L3 4A1.2 2 0 1 0 5 4"/> </svg> ... 이것은 당신이주는 지역을 채울 것이다. 그래서 그것은 "뚱뚱한"또는 "
— 건조한

1
@technosaurus d="..."속성 의 명령 수를 줄이는 문제 는 더 이상 드롭 상단에 이중 곡선이 없다는 것입니다.
— 웹 티키

10
CSS가 아닌 SVG를 사용해야하기 때문에 +1입니다. 이를 달성하기 위해 필요한 CSS 기능은 SVG와 동일한 브라우저를 지원하므로 해당 점수에서 CSS에 대한 이점이 없습니다. CSS는 도형을 만들 수 있지만 그것이 설계된 것은 아닙니다. 작업을 위해 설계된 도구로 할 수있을 때 영리하게하기 위해 드라이버로 손톱을 망치려고하지 마십시오.
— Simba

6
더 나은 방법 : SVG 파일을 만들고 <img />하이퍼 텍스트 문서에서 사용 하십시오.
— Andreas Rejbrand 12

@AndreasRejbrand는 프로젝트에 따라 좋은 아이디어 일 수 있지만 OP가 피하고 싶은 HTTP 요청을 추가합니다.
— 웹 티키

135

기본 테두리 반경

border-radius '및 변환을 사용하여 CSS 내에서 비교적 쉽게 수행 할 수 있습니다. CSS가 약간 부족했습니다.

.tear {
  width: 50px;
  height: 50px;
  border-radius: 0 50% 50% 50%;
  border: 3px solid black;
  transform: rotate(45deg);
  margin-top: 20px;
}
<div class="tear"></div>

고급 국경 반경

이것은 위와 매우 유사하지만 조금 더 모양이 좋습니다.

.tear {
  width: 50px;
  height: 50px;
  border-radius: 80% 0 55% 50% / 55% 0 80% 50%;
  border: 3px solid black;
  transform: rotate(-45deg);
  margin-top: 20px;
}
<div class="tear"></div>


4
@zzzzBov 나는 그것이 어떻게 잘못된 도구인지 완전히 이해하지 못하고 OP는 CSS 또는 SVG 솔루션을 요구했으며 가능한 한 설명에 맞는 CSS 솔루션을 생각해 냈습니다. 가볍고 수정하기 쉽습니다.
— Stewartside 2016 년

12
@zzzzBov 이미지와 스프라이트에 CSS를 사용하는 것이 일반적입니다. 일반적인 "이미지"를 생성하는 것은 최소한의 코드입니다. 웹 페이지에서 사용할 수있는 질문 사양 내에서 사용할 수 있기 때문에 적절하다고 생각합니다.
— Stewartside 2016 년

13
@zzzzBov : CSS는 도형에 완벽합니다. 그러한 모양이 무엇에 사용되는지 누가 말합니까? 의미 적으로 이미지-OP는 이미지 를 사용하고 싶지 않다고 분명히 밝혔습니다. 그렇지 않으면 왜 그런 질문이 있습니까?
— jbutler483

46
@ jbutler483, "CSS는 도형에 완벽하게 적합합니다"아니오, 끔찍합니다. 그냥 당신이 있기 때문에 할 수 있습니다 당신은 의미하지 않는다 해야한다 . 그것은 모든 종류의 쓰레기를 마크 업으로 소개하며, 지루한 엉망입니다. 이미지는 자체 포함 된 개별 파일로 쉽게 분리되므로 유지 관리가 훨씬 간단합니다.
— zzzzBov 2016 년

19
부트 스트랩 또는 글꼴 멋진 아이콘을 사용할 때 '마크 업 쓰레기'가 발생합니다. 진심으로, 나는 당신이 경계 반경 선언을 사용하여 이것을 달성 할 수있을 때 이것을 좋아하기 위해 약간 넘어 가고 있다고 생각합니다. 그러나 건초, 누가 이미지를 사용하지 말라고 말해야합니까?
— jbutler483

88

CSS 코드의 주요 문제는 다음과 같습니다.

  1. 너비와 다른 높이를 사용했습니다
  2. 올바른 각도 크기를 회전하지 않았습니다

따라서 이러한 문제를 '수정'하면 다음과 같은 결과가 발생합니다.

.tear {
  display: inline-block;
  transform: rotate(-45deg);
  border: 5px solid green;
  width: 100px;
  height: 100px;
  border-top-left-radius: 50%;
  border-bottom-left-radius: 50%;
  border-bottom-right-radius: 50%;
}
/***for demo only***/

.tear {
  margin: 50px;
}
<div class="tear">
</div>

CSS 길이를 절약하기 위해 border-radius 속성을 다음과 같이 다시 작성할 수 있습니다.

border-radius: 50% 0 50% 50%;

이 바이올린에 표시된 의사 요소 로 향상 될 수 있습니다

대안

내가 발견 이 로 인 Vinay Challuru codepen에.

여기의 논리를 사용하면 거의 모든 가능한 빌드 모양 등으로 SVG 를 만들 수 있습니다 . 예를 들어, 빠른 출력은 다음과 같습니다.

SVG를 사용하고 있으며 모양을 원하는 결과로 변경할 수있는 여러 가지 방법으로 모양을 변경할 수 있습니다.

면책 조항 필자는 위의 펜을 쓰지 않고 소스 만 제공했습니다.


CSS 버전

이것은 완전하지는 않지만 CSS를 사용하여이 모양을 생성 할 수도 있습니다.

SVG 버전

SVG 가이 답변의 최상위에 있어야한다는 것을 알아야하지만 도전을 좋아하므로 SVG를 사용해보십시오.

svg {
  height: 300px;
}
svg path {
  fill: tomato;
}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 100 100">

  <path d="M49.015,0.803
    c-0.133-1.071-1.896-1.071-2.029,0
    C42.57,36.344,20,43.666,20,68.367   
    C20,83.627,32.816,96,48,96
    s28-12.373,28-27.633
    C76,43.666,53.43,36.344,49.015,0.803z 
    M44.751,40.09   
    c-0.297,1.095-0.615,2.223-0.942,3.386
    c-2.007,7.123-4.281,15.195-4.281,24.537
    c0,5.055-2.988,6.854-5.784,6.854   
    c-3.189,0-5.782-2.616-5.782-5.831
    c0-11.034,5.315-18.243,10.005-24.604
    c1.469-1.991,2.855-3.873,3.983-5.749   
    c0.516-0.856,1.903-0.82,2.533,0.029
    C44.781,39.116,44.879,39.619,44.751,40.09z"/>


</svg>

변경하면 path값을, 당신은 당신의 눈물 디자인의 모양을 변경할 수있을 것입니다.


10
이것들은 모두 매우 장황하게 보입니다. js 솔루션은 특히 터무니 없습니다.
— egid

4
@egid : js 버전을 만들지 않았다고 대답했습니다. 또한 사용자가 런타임에 모양 변경 할 수있는 JS 버전을주의
— jbutler483

55

이 모양의 IMO 는 곡선의 연속성을 보장하기 위해 부드러운 곡선 대 베 지어가 필요합니다 .

문제의 하락 :

문제가 발생하면

  • 제어점의 길이가 같지 않으므로 부드러운 곡선을 사용할 수 없습니다. 그러나 곡선 의 완전한 연속성을 보장하기 위해 제어점을 이전 제어점과 정확히 반대 (180도)로 만들어야합니다. 아래 그림은이 점을 보여줍니다.

여기에 이미지 설명을 입력하십시오
참고 : 빨간색과 파란색 곡선은 서로 다른 2 차 곡선입니다.

  • stroke-linejoin="miter"뾰족한 상단 부분.

  • 이 형태는 연속적인 c명령 만 사용하므로 생략 할 수 있습니다.

마지막 스 니펫은 다음과 같습니다.

<svg height="300px" width="300px" viewBox="0 0 12 16">
  <path fill="#FFF" stroke="black" stroke-width="0.5" stroke-linejoin="miter" 
        d="M 6 1 c -2 3 -5 5 -5 9
           0 7 10 7 10 0 
           0 -4 -3 -6 -5 -9z" />
</svg>

TBH , 허용되는 답변의 곡선은 상당히 연속적이지 않습니다.


IE 5-8 (VML)의 경우

IE 5-8에서만 작동합니다. VML 은 SVG 와 다른 명령을 사용합니다 . 예 : 상대 입방 베 지어에 v를 사용합니다 .

참고 : 이 스 니펫은 IE 5-8에서도 실행되지 않습니다. html 파일을 작성하여 브라우저에서 직접 실행해야합니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
    <style> v\:* { behavior: url(#default#VML); }

    </style >
</head>
<body>
    <div style="width:240; height:320;">
        <v:shape coordorigin="0 0" coordsize="12 16" fillcolor="white" strokecolor="black" strokewidth="1"
            strokeweight="5" style="width:240; height:320" 
            path="M 6 1 v -2 3 -5 5 -5 9
           0 7 10 7 10 0 
           0 -4 -3 -6 -5 -9 x e">
        </v:shape>
    </div>
</body>
</html>

"제어점의 길이가 같지 않으므로 부드러운 곡선을 사용할 수 없습니다." "부드럽게"는 탄젠트 핸들 (제어점)이 직선에 있다는 것을 의미하지 않습니까? 왜 같은 길이 여야합니까?
— Niccolo M.

2
@NiccoloM. svg에서 부드러운 곡선 (T 및 S 명령)은 핸들이 대칭 적으로 반대이며 이전 핸들의 길이 와 동일 함을 의미합니다 . 일반 언어에서 부드러운 곡선은 다른 핸들 길이를 의미 할 수 있지만 svg에서는 길이가 이전 곡선 핸들과 동일합니다.)
— Max Payne

42

또는 뷰어의 글꼴에서 지원하는 경우 유니 코드 문자를 사용하십시오.

삭제 : 💧 (&#128167; )

또는

검은 색 물방울 : 🌢 (&#127778; )

그에 따라 확장하십시오!


@ font-face와 함께 사용할 수 있지만 올바른 위치에 보관할 글꼴 파일이 있습니다.
— 1934286

3
SVG와 이와 같은 전용 유니 코드 기호가 좋습니다. 이것에 대한 CSS는 나쁘다. PNG는 괜찮지 만 래스터 그래픽이므로 완벽하지는 않습니다. JPG는 매우 나쁘기 때문에 그것을 보면 악몽을 겪을 수 있습니다.
— Andreas Rejbrand

@AndreasRejbrand 20x20 PNG는 200x200 JPG보다 최악으로 확장됩니다. 그리고 같은 크기의 비 압축 JPG는 PNG와 같습니다. 그들은 둘 다 래스터이며 같은 문제로 고통받습니다.
— 니코

@nico : 이론적으로, 압축없이 JPG를 사용할 수 있습니다. 그러나 인터넷은 다음과 같은 재난으로 가득 차 있습니다. en.wikipedia.org/wiki/Atomic_number#/media/…
— Andreas Rejbrand

28

개인적으로 SVG를 사용하고 싶습니다. 대부분의 벡터 그래픽 소프트웨어에서 SVG를 만들 수 있습니다. 나는 추천한다 :

아래에서 일러스트 레이터에서 모양을 추적했습니다.

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="223.14px" height="319.008px" viewBox="0 0 223.14 319.008" enable-background="new 0 0 223.14 319.008" xml:space="preserve">
  <path fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" d="M111.57,13.291c0,0,57.179,86.984,72.719,108.819
    	c30.359,42.66,41.005,114.694,1.626,154.074c-20.464,20.463-47.533,30.293-74.344,29.488h-0.002
    	c-26.811,0.805-53.88-9.025-74.344-29.488C-2.154,236.804,8.492,164.77,38.851,122.11C54.391,100.275,111.57,13.291,111.57,13.291z" />
</svg>


27

HTML 캔버스

이것은 지금까지이 스레드에서 발견되지 않은 옵션입니다. 캔버스 드로잉에 사용되는 명령은 SVG와 매우 유사합니다 (웹 티키는이 답변에 사용 된 기본 아이디어에 대한 크레딧을받을 가치가 있습니다).

해당 셰이프는 캔버스 자체 커브 명령 (Quadratic 또는 Bezier) 또는 Path API를 사용하여 만들 수 있습니다. 답은 세 가지 방법 모두에 대한 예를 포함합니다.

Canvas에 대한 브라우저 지원은 상당히 좋습니다 .


이차 곡선 사용

window.onload = function() {
  var canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    var ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.lineJoin = 'miter';
    ctx.moveTo(120, 20);
    ctx.quadraticCurveTo(117.5, 30, 148, 68);
    ctx.arc(120, 88, 34.5, 5.75, 3.66, false);
    ctx.quadraticCurveTo(117.5, 35, 120, 20);
    ctx.closePath();
    ctx.strokeStyle = '#000';
    ctx.lineWidth = 2;
    ctx.fillStyle = '#77CCEE'
    ctx.stroke();
    ctx.fill();
  }
}
canvas {
  margin: 50px;
  height: 100px;
  width: 200px;
  transform: scale(1.5);
}

body{
  background-image: radial-gradient(circle, #3F9CBA 0%, #153346 100%);
}
<canvas id='canvas'></canvas>

아래는 그라디언트 채우기 및 그림자 가있는 고급 버전 입니다. hoverSVG와 비교할 때 Canvas의 한 가지 단점을 설명하기 위해 모양에 효과를 포함했습니다 . 캔버스는 래스터 (픽셀)를 기반으로하므로 특정 지점을 넘어 확장하면 흐릿하게 표시됩니다. 그에 대한 유일한 해결책은 모든 브라우저 크기 조정에서 모양을 다시 칠하는 것입니다.


베 지어 곡선 사용

Path API 사용

참고 : 내 answere에서 언급 한 바와 같이 여기 , 경로 API는 아직 IE와 사파리에서 지원되지 않습니다.


더 읽을 거리 :


나는 svg가 어떻게 더 나은 옵션인지 항상 알지 못한다. 이 같은 많은 경우에 확실히 더 나은 옵션입니다. 그러나 캔버스에는 자체 장점이 있습니다. 좋은 대답입니다. 당신의 대답에서 나는 그것을 알아낼 수 있습니다, 확실히 SVG를 사용하는 것이 훨씬 쉽습니다!
— Max Payne

예, @TimKrul, SVG 작성 / 사용이 더 쉽습니다. Canvas에는 자체 장점이 있지만 SVG와 달리 래스터 기반이기 때문에 모양과 같은 간단한 로고에 주로 사용할 때 유리하지 않습니다.
— Harry

25

나는 또한 발견 이 에 Codepen는 사용자가 만든 아나 튜더 CSS 및 사용하여 box-shadow스타일과 파라 메트릭 방정식을. 아주 간단하고 아주 작은 코드입니다. 그리고 많은 브라우저 가 CSS3 Box-shadow 스타일을 지원합니다 :

body {
  background-color: black;
}
.tear {
  position: absolute;
  top: 50%;
  left: 50%;
  margin: -0.125em;
  width: 0.25em;
  height: 0.25em;
  border-radius: 50%;
  box-shadow: 0em -5em red, 0.00118em -4.97592em #ff1800, 0.00937em -4.90393em #ff3000, 0.03125em -4.7847em #ff4800, 0.07283em -4.6194em #ff6000, 0.13915em -4.40961em #ff7800, 0.23408em -4.15735em #ff8f00, 0.36em -3.86505em #ffa700, 0.51777em -3.53553em #ffbf00, 0.70654em -3.17197em gold, 0.92382em -2.77785em #ffef00, 1.16547em -2.35698em #f7ff00, 1.42582em -1.91342em #dfff00, 1.69789em -1.45142em #c7ff00, 1.97361em -0.97545em #afff00, 2.2441em -0.49009em #97ff00, 2.5em 0.0em #80ff00, 2.73182em 0.49009em #68ff00, 2.93032em 0.97545em #50ff00, 3.08681em 1.45142em #38ff00, 3.19358em 1.91342em #20ff00, 3.24414em 2.35698em #08ff00, 3.23352em 2.77785em #00ff10, 3.15851em 3.17197em #00ff28, 3.01777em 3.53553em #00ff40, 2.81196em 3.86505em #00ff58, 2.54377em 4.15735em #00ff70, 2.21783em 4.40961em #00ff87, 1.84059em 4.6194em #00ff9f, 1.42017em 4.7847em #00ffb7, 0.96608em 4.90393em #00ffcf, 0.48891em 4.97592em #00ffe7, 0.0em 5em cyan, -0.48891em 4.97592em #00e7ff, -0.96608em 4.90393em #00cfff, -1.42017em 4.7847em #00b7ff, -1.84059em 4.6194em #009fff, -2.21783em 4.40961em #0087ff, -2.54377em 4.15735em #0070ff, -2.81196em 3.86505em #0058ff, -3.01777em 3.53553em #0040ff, -3.15851em 3.17197em #0028ff, -3.23352em 2.77785em #0010ff, -3.24414em 2.35698em #0800ff, -3.19358em 1.91342em #2000ff, -3.08681em 1.45142em #3800ff, -2.93032em 0.97545em #5000ff, -2.73182em 0.49009em #6800ff, -2.5em 0.0em #7f00ff, -2.2441em -0.49009em #9700ff, -1.97361em -0.97545em #af00ff, -1.69789em -1.45142em #c700ff, -1.42582em -1.91342em #df00ff, -1.16547em -2.35698em #f700ff, -0.92382em -2.77785em #ff00ef, -0.70654em -3.17197em #ff00d7, -0.51777em -3.53553em #ff00bf, -0.36em -3.86505em #ff00a7, -0.23408em -4.15735em #ff008f, -0.13915em -4.40961em #ff0078, -0.07283em -4.6194em #ff0060, -0.03125em -4.7847em #ff0048, -0.00937em -4.90393em #ff0030, -0.00118em -4.97592em #ff0018;
}
<div class="tear"></div>


7
그러나 이것은 요구되는 종류의 눈물 방울과 유사하지 않습니다.
— doppelgreener 2016 년

20

CSS 버전

여기에 공정한 몇 가지 답변이 있으므로 다른 방법으로 추가하지 않는 이유를 생각했습니다. 이것은 HTML 과 CSS 를 모두 사용 하고 있습니다. 를 사용하여 눈물 방울을 만듭니다.

그러면 테두리 색상과 눈물의 배경색을 변경하고 상단 부분의 크기를 조정할 수 있습니다.

단일 사용 div으로 원을 만들 수 있습니다 우리를 border하고 border-radius. 그런 다음 의사 요소 ( :before& :after)를 사용하여 여기에 CSS 삼각형을 더 만들면 눈물 방울의 끝으로 작용합니다. 를 :before테두리로 사용하여 :after더 작은 크기와 원하는 배경색으로 위에 놓습니다.

div {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  border: 4px solid;
  margin: 80px auto;
  position: relative;
}
div:before,
div:after {
  content: "";
  display: block;
  position: absolute;
  width: 0;
  height: 0;
}
div:before {
  border-left: 50px solid transparent;
  border-right: 50px solid transparent;
  border-bottom: 104px solid black;
  top: -75px;
}
div:after {
  border-left: 46px solid transparent;
  border-right: 46px solid transparent;
  border-bottom: 96px solid #fff;
  top: -66px;
  left: 0;
  right: 0;
  margin: auto;
  z-index: 1;
}
<div></div>


다음은 배경색이있는 눈물 데모입니다.

배경색을 div입히고 :after bottom-border색을 바꾸는 것만 큼 ​​간단 합니다. 테두리를 변경하려면 div테두리 색과 :before배경색도 변경해야합니다 .


붉게 펜에 배경색 값이 없습니다.
— Persijn

2
@Persijn Harry는 채팅에서 무언가를 말했고 펜을 보면서 자동 저장을 잊어 버렸습니다. 하하, 나는 그것을 원래대로 되돌릴 것이다. 끝난.
— Ruddy

17

http://image.online-convert.com/convert-to-svg 와 같은 이미지 변환 리소스를 사용하여 SVG로이 작업을 수행하는 것은 매우 쉽습니다 .

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
 "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
 width="213.000000pt" height="300.000000pt" viewBox="0 0 213.000000 300.000000"
 preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.12, written by Peter Selinger 2001-2015
</metadata>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M1035 2944 c-143 -250 -231 -380 -508 -752 -347 -465 -432 -616 -493
-882 -91 -394 10 -753 285 -1013 508 -479 1334 -361 1677 240 126 221 165 494
105 726 -66 254 -178 452 -609 1076 -96 140 -226 335 -288 435 -155 249 -135
229 -169 170z m85 -212 c40 -69 192 -298 543 -818 268 -396 354 -593 364 -835
12 -281 -82 -509 -296 -714 -103 -99 -236 -173 -396 -221 -82 -25 -105 -27
-260 -28 -148 -1 -181 2 -255 22 -348 96 -611 357 -691 689 -41 167 -25 392
41 587 62 185 154 334 444 716 177 235 320 444 402 592 27 49 51 88 54 88 3 0
25 -35 50 -78z"/>
</g>
</svg>


9
@ Persijn 왜 일부 편집기에서 복사를 요청합니까? Svg는 svg이므로 만들려는 도구를 사용할 수 있습니다.
— Abhinav Gauniyal 2016 년

2
@AbhinavGauniyal : '편집자'라고 부르면 선언에 'fluff'를 추가하십시오. 예를 들어, 실제로 필요 300.000000pt하지 않은 메타 데이터
— jbutler483

12
@Persijn 손 / 코드로 무엇을 의미합니까? 누군가 코딩 작업을 쉽게하기 위해 일러스트 레이터를 제작 / 수동 / 코딩 했으므로 여전히 동일한 작업을 수행합니다. 그런 다음 브라우저에서 svg를 사용할 때 어셈블리 언어를 사용하여 직접 직접 코딩하거나 코딩하지 않습니까? 왜 조립을 멈추고 전선을 사용하여 수동으로 코딩하거나 직접 그리십시오. 이것은 내가 기대했던 이유가 아닙니다.
— Abhinav Gauniyal

2
@ jbutler483 예 그리고 손질 할 수 있습니다. 당신이 당신을 위해 그렇게 많은 도구가 있습니다, 여기에 하나 github.com/svg/svgo
— Abhinav Gauniyal

6
@persijn이 답변은 필요한 svg 경로를 제공합니다. 난 당신의 이의가 무엇인지 전혀 모른다.
— user428517 2016 년

14

SVG를 사용하기로 선택한 경우 경로를 읽어야합니다. SVG 편집기도 제안합니다.

<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="-0.05 0 1195.1 703" preserveAspectRatio="xMidYMid meet" zoomAndPan="disable" transform="">
    <defs id="svgEditorDefs">
        <line id="svgEditorLineDefs" stroke="black" style="fill: none; vector-effect: non-scaling-stroke; stroke-width: 1px;"/>
    </defs>
    <rect id="svgEditorBackground" x="0" y="0" width="1195" height="703" style="fill: none; stroke: none;"/>
    <path stroke="black" id="e1_circleArc" style="fill: none; stroke-width: 1px; vector-effect: non-scaling-stroke;" d="M 198 207 a 117.969 117.969 0 1 0 213 8" transform=""/>
    <path stroke="black" id="e4_circleArc" style="fill: none; stroke-width: 1px; vector-effect: non-scaling-stroke;" transform="" d="M 411.348 215.696 a 349.677 349.677 0 0 0 -110.37 -131.718"/>
    <path stroke="black" style="fill: none; stroke-width: 1px; vector-effect: non-scaling-stroke;" transform="matrix(-0.182706 -0.983168 0.983168 -0.182706 157.664 417.408)" id="e6_circleArc" d="M 301.799 202.299 a 329.763 329.763 0 0 0 -102.951 -124.781"/>
</svg>


1
왜 defs 태그 안에 줄을 사용 하시겠습니까? 그리고 3 + rect가 아닌 한 경로 에서이 모양을 할 수 없습니까?
— Persijn

6

다음은 점진적으로 간단한 SVG 눈물 모양 모양입니다.

여기에 이미지 설명을 입력하십시오

<svg viewbox="-20 -20 180 180">
  <g stroke="black" fill="none">
    
    <path transform="translate(0)"
     d="M   0  0
        C   0 10  10 17  10 27
        C  10 40 -10 40 -10 27
        C -10 17   0 10   0  0
        Z"/>

    <path transform="translate(40)"
     d="M   0  0
        C   0 16  15 25   5 34
        Q   0 38         -5 34
        C -15 25   0 16   0  0
        Z"/>
    
    <path transform="translate(80)"
     d="M   0  0
        C   0 10  18 36   0 36
        S          0 10   0  0
        Z"/>

    <path transform="translate(120)"
     d="M   0  0
        Q  18 36   0 36
        T          0  0
        Z"/>
    
    
    
    
    <g stroke-width="0.25" stroke="red">
      <g transform="translate(0)">
        <ellipse rx="1" ry="1" cx="0"   cy="0" />
        <ellipse rx="1" ry="1" cx="0"   cy="10"/>
        <ellipse rx="1" ry="1" cx="10"  cy="17"/>
        <ellipse rx="1" ry="1" cx="10"  cy="27"/>
        <ellipse rx="1" ry="1" cx="10"  cy="40"/>
        <ellipse rx="1" ry="1" cx="-10" cy="40"/>
        <ellipse rx="1" ry="1" cx="-10" cy="27"/>
        <ellipse rx="1" ry="1" cx="-10" cy="17"/>
        <line x1="0"   y1="0"  x2="0"   y2="10"/>
        <line x1="10"  y1="17" x2="10"  y2="40"/>
        <line x1="-10" y1="40" x2="-10" y2="17"/>
      </g>
      <g transform="translate(40)">
        <ellipse rx="1" ry="1" cx="0"   cy="0" />
        <ellipse rx="1" ry="1" cx="0"   cy="16"/>
        <ellipse rx="1" ry="1" cx="15"  cy="25"/>
        <ellipse rx="1" ry="1" cx="5"   cy="34"/>
        <ellipse rx="1" ry="1" cx="0"   cy="38"/>
        <ellipse rx="1" ry="1" cx="-5"  cy="34"/>
        <ellipse rx="1" ry="1" cx="-15" cy="25"/>
        <line x1="0"  y1="0"  x2="0"   y2="16"/>
        <line x1="15" y1="25" x2="0"   y2="38"/>
        <line x1="0"  y1="38" x2="-15" y2="25"/>
      </g>
      <g transform="translate(80)">
        <ellipse rx="1" ry="1" cx="0"   cy="0" />
        <ellipse rx="1" ry="1" cx="0"   cy="10"/>
        <ellipse rx="1" ry="1" cx="18"  cy="36"/>
        <ellipse rx="1" ry="1" cx="0"   cy="36"/>
        <ellipse rx="1" ry="1" cx="-18" cy="36" stroke="gray"/>
        <line x1="0"  y1="0"  x2="0"   y2="10"/>
        <line x1="18" y1="36" x2="0"   y2="36"/>
        <line x1="0"  y1="36" x2="-18" y2="36" stroke="gray" stroke-dasharray="0.5"/>
      </g>
      <g transform="translate(120)">
        <ellipse rx="1" ry="1" cx="0"   cy="0" />
        <ellipse rx="1" ry="1" cx="18"  cy="36"/>
        <ellipse rx="1" ry="1" cx="0"   cy="36"/>
        <ellipse rx="1" ry="1" cx="-18" cy="36" stroke="gray"/>
        <line x1="18" y1="36" x2="0"   y2="36"/>
        <line x1="0"  y1="36" x2="-18" y2="36" stroke="gray" stroke-dasharray="0.5"/>
      </g>
    </g>    
  </g>
  <g font-size="6" transform="translate(-1.5,-4)">
    <text x="-10" y="-8"># of unique points:</text>
    <text transform="translate(  0)">8</text>
    <text transform="translate( 40)">7</text>
    <text transform="translate( 80)">4</text>
    <text transform="translate(120)">3</text>
  </g>
</svg>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.