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에서만 작동합니다. VMLSVG 와 다른 명령을 사용합니다 . 예 : 상대 입방 베 지어에 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 버전

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

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

단일 사용 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.