11/27 - MDX 문법

2024. 11. 27. 21:24·A/일
728x90
MDX(Markdown + JSX)는 Markdown과 React JSX를 결합하여 문서를 작성할 수 있는 마크업 언어다. 기본적인 Markdown 문법에 JSX 구문을 추가하여 동적인 콘텐츠를 작성할 수 있다.
 

Markdown 문법 (MDX에서 사용 가능)

헤더(Header)

Markdown처럼 #, ##, ###를 사용하여 헤더를 작성한다.

# 헤더 1
## 헤더 2
### 헤더 3

텍스트 스타일링

  • 굵게: **텍스트** 또는 __텍스트__
  • 기울임: *텍스트* 또는 _텍스트_
  • 굵고 기울임: ***텍스트***
  • 취소선: ~~텍스트~~
**굵은 텍스트**
*기울어진 텍스트*
***굵고 기울어진 텍스트***
~~취소선이 있는 텍스트~~

리스트

- 순서 없는 리스트

- 항목 1
- 항목 2
  - 하위 항목 1
  - 하위 항목 2

- 순서 있는 리스트

1. 첫 번째 항목
2. 두 번째 항목
  1. 하위 항목
  2. 하위 항목

코드 블록

- 인라인 코드

`코드`

- 블록 코드

```javascript
console.log("Hello, MDX!");
yaml

---
### e. 링크와 이미지
#### - 링크
```mdx
[tistory](https://arajo.tistory.com)

이미지

![설명 텍스트](이미지_URL)

인용

> 인용 문구입니다.
>> 중첩된 인용입니다.

테이블

| 헤더 1 | 헤더 2 |
|--------|--------|
| 데이터 1 | 데이터 2 |
| 데이터 3 | 데이터 4 |

 

 JSX 문법 (MDX의 고유 기능)

컴포넌트 삽입

MDX는 JSX를 사용할 수 있어 React 컴포넌트를 문서에 삽입할 수 있다.

<MyComponent title="MDX 사용법">
  여기에 MDX를 사용한 문서 작성법을 설명합니다.
</MyComponent>

동적인 변수 사용

export const name = "MDX 유저";
<p>안녕하세요, {name}님!</p>

Props 전달

<MyButton color="blue" onClick={() => alert('클릭!')}>
  버튼 텍스트
</MyButton>

 

Markdown과 JSX 혼합

MDX 문서에서는 Markdown과 JSX를 함께 사용할 수 있다.

# Markdown 헤더

<MyComponent>
  <p>이곳은 JSX로 작성된 문단입니다.</p>
</MyComponent>

## Markdown과 JSX를 혼합할 수 있습니다!
# 제목
여기는 **굵은 텍스트**입니다.
<span style={{ color: 'red' }}>이 텍스트는 빨간색입니다.</span>
또한, 아래는 JSX로 작성된 문장입니다.

<MyComponent>
  <p style={{ fontStyle: 'italic', color: '#2ecc71' }}>React 컴포넌트를 활용한 기울임 텍스트</p>
</MyComponent>

레이아웃 설정

MDX 파일에서 페이지의 레이아웃을 설정할 수 있다.

export const layout = ({ children }) => <div className="layout">{children}</div>;

# 레이아웃 테스트
이 문서는 "layout"이 적용된 상태입니다.

하이라이트

Markdown 기본 문법으로는 하이라이트를 지원하지 않지만, JSX를 사용하면 가능하다.

<span style={{ backgroundColor: 'yellow' }}>하이라이트 텍스트</span>

텍스트 크기 변경

<span style={{ fontSize: '20px' }}>큰 텍스트</span>

텍스트 색상 변경

<span style={{ color: 'red' }}>빨간색 텍스트</span>
<span style={{ color: '#3498db' }}>파란색 텍스트 (HEX 코드)</span>

CSS 클래스 사용

CSS 클래스를 정의한 후 MDX에서 className을 통해 사용할 수 있다.

<style jsx>
{`
  .text-blue {
    color: blue;
  }
  .text-green {
    color: green;
  }
`}
</style>

<p className="text-blue">파란색 텍스트</p>
<p className="text-green">초록색 텍스트</p>

커스텀 텍스트 스타일링 (JSX 활용)

MDX에서는 JSX를 통해 다양한 텍스트 스타일링을 할 수 있다.

→ 굵기, 크기, 색상 조합
<span style={{ fontWeight: 'bold', fontSize: '24px', color: 'purple' }}>
  굵고, 큰, 보라색 텍스트
</span>
→ 글꼴 변경
<span style={{ fontFamily: 'Courier New, monospace' }}>특정 글꼴 텍스트</span>
→ 텍스트 정렬
<p style={{ textAlign: 'center' }}>가운데 정렬된 텍스트</p>
<p style={{ textAlign: 'right' }}>오른쪽 정렬된 텍스트</p>

텍스트 강조 효과 확장 (CSS 애니메이션)

MDX는 CSS를 직접 작성할 수 있어 애니메이션 효과를 추가할 수 있다.

<style jsx>
{`
  .highlight {
    background: linear-gradient(90deg, yellow, red);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: gradient 2s infinite;
  }

  @keyframes gradient {
    0% { background-position: 0%; }
    100% { background-position: 100%; }
  }
`}
</style>

<p className="highlight">그라데이션 강조 텍스트</p>

커스텀 컴포넌트 활용

React 컴포넌트를 MDX에서 정의하면 복잡한 스타일링을 재사용할 수 있다.

export const Highlight = ({ children }) => (
  <span style={{ color: 'orange', fontWeight: 'bold' }}>{children}</span>
);

# 사용 예시
<Highlight>강조된 텍스트</Highlight>

 

MDX 문법과 Markdown 차이

Markdown 기능 MDX 확장 기능
정적인 문서 작성 동적인 React 컴포넌트 사용 가능
HTML 태그 제한적 사용 JSX로 모든 React 태그 및 스타일링 가능
링크, 이미지 등 단순 props와 상호작용을 통해 사용자 지정 가능

 

MDX 텍스트 스타일링 문법

기능 문법 예시 설명
굵게 **텍스트** 텍스트를 굵게 표시
기울임 *텍스트* 텍스트를 기울임
취소선 ~~텍스트~~ 텍스트에 취소선 추가
텍스트 색상 변경 <span style={{ color: 'red' }}>텍스트</span> JSX로 색상 변경
텍스트 크기 조정 <span style={{ fontSize: '24px' }}>큰 텍스트</span> JSX로 크기 조정
하이라이트 <span style={{ backgroundColor: 'yellow' }}>텍스트</span> 배경색을 통해 강조
정 <p style={{ textAlign: 'center' }}>가운데 정렬</p> 텍스트 정렬 설정

 

color

black olive beige cornflowerblue darkmagenta darkviolet gold lavenderblush lightsalmon mediumblue
white yellow bisque cornsilk darkolivegreen deeppink goldenrod lawngreen lightseagreen mediumorchid
gray navy blanchedalmond crimson darkorange deepskyblue greenyellow lemonchiffon lightskyblue mediumpurple
silver blue blueviolet cyan darkorchid dimgray honeydew lightblue lightslategray mediumseagreen
maroon teal brown darkblue darkred dodgerblue hotpink lightcoral lightsteelblue mediumslateblue
red aqua burlywood darkcyan darksalmon firebrick indianred lightcyan lightyellow mediumspringgreen
purple aliceblue cadetblue darkgoldenrod darkseagreen floralwhite indigo lightgoldenrodyellow limegreen mediumturquoise
fuchsia antiquewhite chartreuse darkgray darkslateblue forestgreen ivory lightgray linen mediumvioletred
green aquamarine chocolate darkgreen darkslategray gainsboro khaki lightgreen magenta midnightblue
lime azure coral darkkhaki darkturquoise ghostwhite lavender lightpink mediumaquamarine mintcream

 

 

저작자표시 비영리 변경금지 (새창열림)

'A > 일' 카테고리의 다른 글

12/04 - React | Next.js | TypeScript - 채널톡  (0) 2024.12.04
12/01 - React | Next.js | TypeScript - 기본 hero  (0) 2024.12.01
11/27 - React | Next.js | TypeScript - 눈 내리는 애니메이션  (0) 2024.11.27
11/26 - React | Next.js | TypeScript - 방문자 수  (0) 2024.11.26
[모바일 기기에서 localhost 프리뷰 화면 보는 방법] 핸드폰으로 로컬 개발 서버 테스트하는 방법  (2) 2024.11.14
'A/일' 카테고리의 다른 글
  • 12/04 - React | Next.js | TypeScript - 채널톡
  • 12/01 - React | Next.js | TypeScript - 기본 hero
  • 11/27 - React | Next.js | TypeScript - 눈 내리는 애니메이션
  • 11/26 - React | Next.js | TypeScript - 방문자 수
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    next.js
    react
    객체
    리액트
    변수
    자바스크립트
    파이썬
    TypeScript
    Java
    web
    HTML
    Python
    CSS
    MySQL
    JavaScript
    object
    array
    타입스크립트
    제어문
    event
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
11/27 - MDX 문법
상단으로

티스토리툴바