목차
1. 변수 선언
二、var() 函数
三、变量值的类型
四、作用域
五、响应式布局
六、兼容性处理
七、JavaScript 操作
웹 프론트엔드 CSS 튜토리얼 CSS의 변수 사용법 소개(예제 포함)

CSS의 변수 사용법 소개(예제 포함)

Nov 24, 2018 pm 02:52 PM
css

이 글은 CSS의 변수 사용법을 소개합니다(예제 포함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

이틀전에 CSS에서 변수를 사용하는 것에 대한 Ruan Dashen의 글을 보고 정리했습니다.

이 중요한 새 CSS 기능은 이미 모든 주요 브라우저에서 지원됩니다. 이 기사에서는 이를 사용하는 방법에 대한 포괄적인 소개를 제공하며 기본 CSS가 매우 강력하다는 것을 알게 될 것입니다.

1. 변수 선언

변수 선언 시 변수명 앞에 하이픈 2개(--)를 추가해야 합니다. --)。

body {
  --foo: #7F583F;
  --bar: #F7EFD2;
}
로그인 후 복사

上面代码中,body选择器里面声明了两个变量:--foo和--bar。

它们与color、font-size等正式属性没有什么不同,只是没有默认含义。所以 CSS 变量(CSS variable)又叫做"CSS 自定义属性"(CSS custom properties)。因为变量与自定义的 CSS 属性其实是一回事。

你可能会问,为什么选择两根连词线(--)表示变量?因为$foo被 Sass 用掉了,@foo被 Less 用掉了。为了不产生冲突,官方的 CSS 变量就改用两根连词线了。

各种值都可以放入 CSS 变量。

:root{
  --main-color: #4d4e53;
  --main-bg: rgb(255, 255, 255);
  --logo-border-color: rebeccapurple;

  --header-height: 68px;
  --content-padding: 10px 20px;

  --base-line-height: 1.428571429;
  --transition-duration: .35s;
  --external-link: "external link";
  --margin-top: calc(2vh + 20px);
}
로그인 후 복사

变量名大小写敏感,--header-color和--Header-Color是两个不同变量。

二、var() 函数

var()函数用于读取变量。

a {
  color: var(--foo);
  text-decoration-color: var(--bar);
}
로그인 후 복사

var()函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值。

color: var(--foo, #7F583F);
로그인 후 복사

第二个参数不处理内部的逗号或空格,都视作参数的一部分。

var(--font-stack, "Roboto", "Helvetica");
var(--pad, 10px 15px 20px);
로그인 후 복사

var()函数还可以用在变量的声明。

:root {
  --primary-color: red;
  --logo-text: var(--primary-color);
}
로그인 후 복사

注意,变量值只能用作属性值,不能用作属性名。

.foo {
  --side: margin-top;
  /* 无效 */
  var(--side): 20px;
}
로그인 후 복사

上面代码中,变量--side用作属性名,这是无效的。

三、变量值的类型

如果变量值是一个字符串,可以与其他字符串拼接。

--bar: 'hello';
--foo: var(--bar)' world';
로그인 후 복사

利用这一点,可以 debug(例子)。

body:after {
  content: '--screen-category : 'var(--screen-category);
}
로그인 후 복사

如果变量值是数值,不能与数值单位直接连用。

.foo {
  --gap: 20;
  /* 无效 */
  margin-top: var(--gap)px;
}
로그인 후 복사

上面代码中,数值与单位直接写在一起,这是无效的。必须使用calc()函数,将它们连接。

.foo {
  --gap: 20;
  margin-top: calc(var(--gap) * 1px);
}
로그인 후 복사

如果变量值带有单位,就不能写成字符串。

/* 无效 */
.foo {
  --foo: '20px';
  font-size: var(--foo);
}

/* 有效 */
.foo {
  --foo: 20px;
  font-size: var(--foo);
}
로그인 후 복사

四、作用域

同一个 CSS 变量,可以在多个选择器内声明。读取的时候,优先级最高的声明生效。这与 CSS 的"层叠"(cascade)规则是一致的。

下面是一个例子。

<style>
  :root { --color: blue; }
  p { --color: green; }
  #alert { --color: red; }
  * { color: var(--color); }</style><p>蓝色</p><p>绿色</p><p id="alert">红色</p>
로그인 후 복사

上面代码中,三个选择器都声明了--color变量。不同元素读取这个变量的时候,会采用优先级最高的规则,因此三段文字的颜色是不一样的。

这就是说,变量的作用域就是它所在的选择器的有效范围。

body {
  --foo: #7F583F;
}

.content {
  --bar: #F7EFD2;
}
로그인 후 복사

上面代码中,变量--foo的作用域是body选择器的生效范围,--bar的作用域是.content选择器的生效范围。

由于这个原因,全局的变量通常放在根元素:root里面,确保任何选择器都可以读取它们。

:root {
  --main-color: #06c;
}
로그인 후 복사

五、响应式布局

CSS 是动态的,页面的任何变化,都会导致采用的规则变化。

利用这个特点,可以在响应式布局的media命令里面声明变量,使得不同的屏幕宽度有不同的变量值。

body {
  --primary: #7F583F;
  --secondary: #F7EFD2;
}

a {
  color: var(--primary);
  text-decoration-color: var(--secondary);
}

@media screen and (min-width: 768px) {
  body {
    --primary:  #F7EFD2;
    --secondary: #7F583F;
  }
}
로그인 후 복사

六、兼容性处理

对于不支持 CSS 变量的浏览器,可以采用下面的写法。

a {
  color: #7F583F;
  color: var(--primary);
}
로그인 후 복사

也可以使用@support命令进行检测。

@supports ( (--a: 0)) {
  /* supported */
}
@supports ( not (--a: 0)) {
  /* not supported */
}
로그인 후 복사

七、JavaScript 操作

JavaScript 也可以检测浏览器是否支持 CSS 变量。

const isSupported =
  window.CSS &&
  window.CSS.supports &&
  window.CSS.supports(&#39;--a&#39;, 0);

if (isSupported) {
  /* supported */
} else {
  /* not supported */
}
로그인 후 복사

JavaScript 操作 CSS 变量的写法如下。

// 设置变量
document.body.style.setProperty(&#39;--primary&#39;, &#39;#7F583F&#39;);

// 读取变量
document.body.style.getPropertyValue(&#39;--primary&#39;).trim();
// &#39;#7F583F&#39;

// 删除变量
document.body.style.removeProperty(&#39;--primary&#39;);
로그인 후 복사

这意味着,JavaScript 可以将任意值存入样式表。下面是一个监听事件的例子,事件信息被存入 CSS 变量。

const docStyle = document.documentElement.style;

document.addEventListener(&#39;mousemove&#39;, (e) => {
  docStyle.setProperty(&#39;--mouse-x&#39;, e.clientX);
  docStyle.setProperty(&#39;--mouse-y&#39;, e.clientY);
});
로그인 후 복사

那些对 CSS 无用的信息,也可以放入 CSS 变量。

--foo: if(x > 5) this.width = 10;
로그인 후 복사

上面代码中,--foorrreee

위 코드에서는 본문 선택기에 --foo와 --bar라는 두 개의 변수가 선언되어 있습니다.

색상, 글꼴 크기 등 형식적 속성과 다르지 않지만 기본 의미는 없습니다. 따라서 CSS 변수를 "CSS 사용자 정의 속성"이라고도 합니다. 변수와 사용자 정의 CSS 속성은 실제로 동일하기 때문입니다.

변수를 나타내기 위해 두 개의 연결선(--)을 선택하는 이유가 무엇인지 궁금해하실 수도 있습니다. $foo는 Sass에서 사용되고 @foo는 Less에서 사용되기 때문입니다. 충돌을 피하기 위해 공식 CSS 변수는 대신 두 개의 연결선을 사용합니다. 🎜🎜CSS 변수에는 다양한 값을 넣을 수 있습니다. 🎜rrreee🎜변수 이름은 대소문자를 구분하며 --header-color와 --Header-Color는 서로 다른 두 변수입니다. 🎜🎜2. var() 함수 🎜🎜var() 함수는 변수를 읽는 데 사용됩니다. 🎜rrreee🎜 var() 함수는 두 번째 매개변수를 사용하여 변수의 기본값을 나타낼 수도 있습니다. 변수가 존재하지 않으면 이 기본값이 사용됩니다. 🎜rrreee🎜두 번째 매개변수는 내부 쉼표나 공백을 처리하지 않으며 매개변수의 일부로 간주됩니다. 🎜rrreee🎜var() 함수는 변수 선언에도 사용할 수 있습니다. 🎜rrreee🎜변수 값은 속성 이름이 아닌 속성 값으로만 ​​사용할 수 있습니다. 🎜rrreee🎜위 코드에서는 --side 변수가 속성 이름으로 사용되는데 이는 유효하지 않습니다. 🎜🎜3. 변수 값의 유형🎜🎜변수 값이 문자열인 경우 다른 문자열과 연결될 수 있습니다. 🎜rrreee🎜디버깅하는 데 사용하세요(예제). 🎜rrreee🎜변수 값이 숫자 값인 경우 숫자 단위와 함께 직접 사용할 수 없습니다. 🎜rrreee🎜위 코드에서는 값과 단위를 직접 함께 적어서 유효하지 않습니다. calc() 함수를 사용하여 연결해야 합니다. 🎜rrreee🎜변수 값에 단위가 있으면 문자열로 쓸 수 없습니다.
🎜rrreee🎜4.Scope🎜🎜동일한 CSS 변수를 여러 선택자에서 선언할 수 있습니다. 읽을 때 우선순위가 가장 높은 문이 적용됩니다. 이는 CSS "계단식" 규칙과 일치합니다. 🎜🎜다음은 예입니다. 🎜rrreee🎜위 코드에서 세 가지 선택기는 모두 --color 변수를 선언합니다. 서로 다른 요소가 이 변수를 읽을 때 우선 순위가 가장 높은 규칙이 사용되므로 텍스트의 세 단락 색상이 다릅니다. 🎜🎜이는 변수의 범위가 해당 변수가 위치한 선택기의 유효한 범위임을 의미합니다. 🎜rrreee🎜위 코드에서 --foo 변수의 범위는 body 선택자의 유효 범위이고, --bar의 범위는 .content 선택자의 유효 범위입니다. 🎜🎜이러한 이유로 전역 변수는 일반적으로 모든 선택기가 읽을 수 있도록 루트 요소인 root 내에 배치됩니다. 🎜rrreee🎜 5. 반응형 레이아웃 🎜🎜CSS는 동적이므로 페이지를 변경하면 채택된 규칙도 변경됩니다. 🎜🎜이 기능을 사용하면 반응형 레이아웃의 미디어 명령에서 변수를 선언하여 다양한 화면 너비에 따라 다양한 변수 값을 가질 수 있습니다. 🎜rrreee🎜 6. 호환성 처리🎜🎜CSS 변수를 지원하지 않는 브라우저의 경우 다음 작성 방법을 사용할 수 있습니다. 🎜rrreee🎜@support 명령을 사용하여 감지할 수도 있습니다. 🎜rrreee🎜7. JavaScript 작업🎜🎜JavaScript는 브라우저가 CSS 변수를 지원하는지 여부도 감지할 수 있습니다. 🎜rrreee🎜JavaScript는 CSS 변수를 다음과 같이 작동합니다. 🎜rrreee🎜이는 JavaScript가 임의의 값을 스타일시트에 저장할 수 있음을 의미합니다. 다음은 이벤트를 청취하는 예이며, 이벤트 정보는 CSS 변수에 저장됩니다. 🎜rrreee🎜CSS에 쓸모없는 정보는 CSS 변수에 넣을 수도 있습니다. 🎜rrreee🎜위 코드에서 --foo 값은 CSS에서는 잘못된 구문이지만 JavaScript에서는 읽을 수 있습니다. 이는 CSS 변수에 스타일 설정을 작성하고 JavaScript가 이를 읽도록 할 수 있음을 의미합니다. 🎜🎜따라서 CSS 변수는 JavaScript가 CSS와 통신할 수 있는 방법을 제공합니다. 🎜🎜 🎜

위 내용은 CSS의 변수 사용법 소개(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Vue에서 부트 스트랩을 사용하는 방법 Vue에서 부트 스트랩을 사용하는 방법 Apr 07, 2025 pm 11:33 PM

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML, CSS 및 JavaScript의 역할 : 핵심 책임 HTML, CSS 및 JavaScript의 역할 : 핵심 책임 Apr 08, 2025 pm 07:05 PM

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

부트 스트랩에 분할 라인을 작성하는 방법 부트 스트랩에 분할 라인을 작성하는 방법 Apr 07, 2025 pm 03:12 PM

부트 스트랩 분할 라인을 만드는 두 가지 방법이 있습니다 : 태그를 사용하여 수평 분할 라인이 생성됩니다. CSS 테두리 속성을 사용하여 사용자 정의 스타일 분할 라인을 만듭니다.

HTML, CSS 및 JavaScript 이해 : 초보자 안내서 HTML, CSS 및 JavaScript 이해 : 초보자 안내서 Apr 12, 2025 am 12:02 AM

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

부트 스트랩 버튼을 사용하는 방법 부트 스트랩 버튼을 사용하는 방법 Apr 07, 2025 pm 03:09 PM

부트 스트랩 버튼을 사용하는 방법? 부트 스트랩 CSS를 소개하여 버튼 요소를 만들고 부트 스트랩 버튼 클래스를 추가하여 버튼 텍스트를 추가하십시오.

부트 스트랩 크기를 조정하는 방법 부트 스트랩 크기를 조정하는 방법 Apr 07, 2025 pm 03:18 PM

부트 스트랩에서 요소의 크기를 조정하려면 다음을 포함하여 차원 클래스를 사용할 수 있습니다.

부트 스트랩을위한 프레임 워크를 설정하는 방법 부트 스트랩을위한 프레임 워크를 설정하는 방법 Apr 07, 2025 pm 03:27 PM

부트 스트랩 프레임 워크를 설정하려면 다음 단계를 따라야합니다. 1. CDN을 통해 부트 스트랩 파일 참조; 2. 자신의 서버에서 파일을 다운로드하여 호스팅하십시오. 3. HTML에 부트 스트랩 파일을 포함; 4. 필요에 따라 Sass/Less를 컴파일하십시오. 5. 사용자 정의 파일을 가져옵니다 (선택 사항). 설정이 완료되면 Bootstrap의 그리드 시스템, 구성 요소 및 스타일을 사용하여 반응 형 웹 사이트 및 응용 프로그램을 만들 수 있습니다.

부트 스트랩에 사진을 삽입하는 방법 부트 스트랩에 사진을 삽입하는 방법 Apr 07, 2025 pm 03:30 PM

Bootstrap에 이미지를 삽입하는 방법에는 여러 가지가 있습니다. HTML IMG 태그를 사용하여 이미지를 직접 삽입하십시오. 부트 스트랩 이미지 구성 요소를 사용하면 반응 형 이미지와 더 많은 스타일을 제공 할 수 있습니다. 이미지 크기를 설정하고 IMG-Fluid 클래스를 사용하여 이미지를 적응할 수 있도록하십시오. IMG 통과 클래스를 사용하여 테두리를 설정하십시오. 둥근 모서리를 설정하고 IMG 라운드 클래스를 사용하십시오. 그림자를 설정하고 그림자 클래스를 사용하십시오. CSS 스타일을 사용하여 이미지를 조정하고 배치하십시오. 배경 이미지를 사용하여 배경 이미지 CSS 속성을 사용하십시오.

See all articles