본문으로 건너뛰기

사용자 정의 가지 스타일

설정에 generateMainBranch와 generateSubBranch 설정을 전달하면 주 가지(루트 노드와 주요 노드를 잇는 선)와 하위 가지(주요 노드와 그 자손을 잇는 선)의 스타일을 바꿀 수 있습니다.

아래는 generateMainBranch와 generateSubBranch 예제입니다.

generateMainBranch​

function generateMainBranch({
pT,
pL,
pW,
pH,
cT,
cL,
cW,
cH,
direction,
containerHeight,
}) {
let x1 = pL + pW / 2
const y1 = pT + pH / 2
let x2
if (direction === 'lhs') {
x2 = cL + cW
} else {
x2 = cL
}
const y2 = cT + cH / 2
const root = this.map.querySelector('.me-root')
if (this.direction === MindElixir.SIDE) {
if (direction === 'lhs') {
x1 = x1 - root.offsetWidth / 8
} else {
x1 = x1 + root.offsetWidth / 8
}
}
return `M ${x1} ${y1} V ${
y2 > y1 ? y2 - 20 : y2 + 20
} C ${x1} ${y2} ${x1} ${y2} ${x2 > x1 ? x1 + 20 : x1 - 20} ${y2} H ${x2}`
}

입력 매개변수 direction은 노드가 왼쪽('lhs')인지 오른쪽('rhs')인지를 나타냅니다. containerHeight는 마인드맵의 높이입니다.

pT, pL, pH, pW는 각각 부모 노드의 위쪽, 왼쪽, 높이, 너비 값이며 cT, cL, cW, cH는 자식 노드의 대응 값입니다.

generateSubBranch​

function generateSubBranch({
pT,
pL,
pW,
pH,
cT,
cL,
cW,
cH,
direction,
isFirst,
}) {
const GAP = 30
const TURNPOINT_R = 8
let y1
if (isFirst) {
y1 = pT + pH / 2
} else {
y1 = pT + pH
}
const y2 = cT + cH
let x1 = 0
let x2 = 0
let xMiddle = 0
if (direction === 'lhs') {
x1 = pL + GAP
x2 = cL
xMiddle = cL + cW
} else if (direction === 'rhs') {
x1 = pL + pW - GAP
x2 = cL + cW
xMiddle = cL
}

if (y2 < y1 + 50 && y2 > y1 - 50) {
// draw a straight line if the distance is between +-50
return `M ${x1} ${y1} H ${xMiddle} V ${y2} H ${x2}`
} else if (y2 >= y1) {
// child bottom lower than parent
return `M ${x1} ${y1} H ${xMiddle} V ${
y2 - TURNPOINT_R
} A ${TURNPOINT_R} ${TURNPOINT_R} 0 0 ${x1 > x2 ? 1 : 0} ${
x1 > x2 ? xMiddle - TURNPOINT_R : xMiddle + TURNPOINT_R
} ${y2} H ${x2}`
} else {
// child bottom higher than parent
return `M ${x1} ${y1} H ${xMiddle} V ${
y2 + TURNPOINT_R
} A ${TURNPOINT_R} ${TURNPOINT_R} 0 0 ${x1 > x2 ? 0 : 1} ${
x1 > x2 ? xMiddle - TURNPOINT_R : xMiddle + TURNPOINT_R
} ${y2} H ${x2}`
}
}

isFirst 매개변수는 주 가지 바깥의 첫 번째 가지 층인지를 나타냅니다. 첫 층의 일부 스타일은 별도 처리가 필요할 수 있어 이 매개변수가 있습니다. 나머지 매개변수는 generateMainBranch의 대응 매개변수와 뜻이 같으므로 다시 설명하지 않습니다.

자유롭게 실험하기​

아래 예제에서는 가지 모서리를 둥글게 처리했습니다. 원하는 곡선이 나올 때까지 generateMainBranch와 generateSubBranch를 계속 조정해 보세요.